Skip to content

Commit 8b2950e

Browse files
Forward push payload for custom notification handling (#1481)
* feat: Forward push payload to our notification sdk * feat: Fix compile time * feat: replace DeprecationLevel.ERROR with DeprecationLevel.WARNING, * feat: remove unnecessary apis, * feat: update deprecation message * feat: remove unnecessary code * feat: refactor code * feat: Allow customization of Pending intent * fix: Fix UTs --------- Co-authored-by: Aleksandar Apostolov <apostolov.alexandar@gmail.com>
1 parent 5ab436b commit 8b2950e

19 files changed

Lines changed: 1562 additions & 218 deletions

File tree

demo-app/src/main/kotlin/io/getstream/video/android/CallActivity.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ import io.getstream.video.android.compose.ui.StreamCallActivityComposeDelegate
3333
import io.getstream.video.android.compose.ui.components.call.activecall.AudioOnlyCallContent
3434
import io.getstream.video.android.core.Call
3535
import io.getstream.video.android.core.StreamVideo
36-
import io.getstream.video.android.core.notifications.NotificationHandler
3736
import io.getstream.video.android.datastore.delegate.StreamUserDataStore
3837
import io.getstream.video.android.ui.call.CallScreen
3938
import io.getstream.video.android.ui.common.StreamActivityUiDelegate
@@ -54,19 +53,6 @@ class CallActivity : ComposeStreamCallActivity() {
5453
.copy(closeScreenOnCallEnded = false, canSkipPermissionRationale = false)
5554
}
5655

57-
override fun onNewIntent(intent: Intent) {
58-
super.onNewIntent(intent)
59-
60-
if (intent.action == NotificationHandler.ACTION_ACCEPT_CALL) {
61-
val activeCall = StreamVideo.instance().state.activeCall.value
62-
if (activeCall != null) {
63-
leave(activeCall)
64-
finish()
65-
startActivity(intent)
66-
}
67-
}
68-
}
69-
7056
@StreamCallActivityDelicateApi
7157
override fun onPreCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
7258
runBlocking {

demo-app/src/main/kotlin/io/getstream/video/android/util/StreamVideoInitHelper.kt

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package io.getstream.video.android.util
1818

1919
import android.annotation.SuppressLint
2020
import android.content.Context
21+
import android.os.Bundle
2122
import android.util.Log
2223
import io.getstream.android.push.firebase.FirebasePushDeviceGenerator
2324
import io.getstream.chat.android.client.ChatClient
@@ -32,6 +33,8 @@ import io.getstream.video.android.core.StreamVideo
3233
import io.getstream.video.android.core.StreamVideoBuilder
3334
import io.getstream.video.android.core.internal.ExperimentalStreamVideoApi
3435
import io.getstream.video.android.core.logging.LoggingLevel
36+
import io.getstream.video.android.core.notifications.DefaultNotificationIntentBundleResolver
37+
import io.getstream.video.android.core.notifications.DefaultStreamIntentResolver
3538
import io.getstream.video.android.core.notifications.NotificationConfig
3639
import io.getstream.video.android.core.notifications.handlers.CompatibilityStreamNotificationHandler
3740
import io.getstream.video.android.core.notifications.internal.service.CallServiceConfigRegistry
@@ -41,10 +44,13 @@ import io.getstream.video.android.data.services.stream.GetAuthDataResponse
4144
import io.getstream.video.android.data.services.stream.StreamService
4245
import io.getstream.video.android.datastore.delegate.StreamUserDataStore
4346
import io.getstream.video.android.model.ApiKey
47+
import io.getstream.video.android.model.StreamCallId
4448
import io.getstream.video.android.model.User
4549
import io.getstream.video.android.noise.cancellation.NoiseCancellation
4650
import io.getstream.video.android.notification.LiveStreamMediaNotificationInterceptor
4751
import io.getstream.video.android.notification.PausePlayMediaSessionCallback
52+
import io.getstream.video.android.ui.common.StreamCallActivity
53+
import io.getstream.video.android.ui.common.StreamCallActivityConfiguration
4854
import io.getstream.video.android.util.config.AppConfig
4955
import kotlinx.coroutines.flow.MutableStateFlow
5056
import kotlinx.coroutines.flow.StateFlow
@@ -223,6 +229,38 @@ object StreamVideoInitHelper {
223229
mediaSessionCallback = PausePlayMediaSessionCallback(),
224230
updateNotificationBuilderInterceptor = LiveStreamMediaNotificationInterceptor(context),
225231
hideRingingNotificationInForeground = true,
232+
intentResolver = DefaultStreamIntentResolver(
233+
context,
234+
object : DefaultNotificationIntentBundleResolver() {
235+
236+
override fun getAcceptCallBundle(
237+
callId: StreamCallId,
238+
notificationId: Int,
239+
payload: Map<String, Any?>,
240+
): Bundle {
241+
return StreamCallActivity.callIntentBundle(
242+
callId,
243+
configuration = StreamCallActivityConfiguration(
244+
closeScreenOnCallEnded = true,
245+
),
246+
leaveWhenLastInCall = true,
247+
)
248+
}
249+
250+
override fun getRejectCallBundle(
251+
callId: StreamCallId,
252+
payload: Map<String, Any?>,
253+
): Bundle {
254+
return StreamCallActivity.callIntentBundle(
255+
callId,
256+
configuration = StreamCallActivityConfiguration(
257+
closeScreenOnCallEnded = true,
258+
),
259+
leaveWhenLastInCall = true,
260+
)
261+
}
262+
},
263+
),
226264
),
227265
),
228266
tokenProvider = object : TokenProvider {

0 commit comments

Comments
 (0)