Skip to content

Commit f4510e2

Browse files
committed
fix(core): register app with Telecom once
1 parent 083e929 commit f4510e2

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/service/JetpackTelecomRepositoryProvider.kt

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,31 @@ import io.getstream.video.android.core.notifications.internal.telecom.IncomingCa
2525
import io.getstream.video.android.core.notifications.internal.telecom.jetpack.JetpackTelecomRepository
2626
import io.getstream.video.android.model.StreamCallId
2727

28-
internal class JetpackTelecomRepositoryProvider(private val context: Context) {
28+
internal class JetpackTelecomRepositoryProvider(context: Context) {
29+
30+
private val context = context.applicationContext ?: context
31+
private val registrationLock = Any()
32+
private lateinit var callsManager: CallsManager
2933

3034
@RequiresApi(Build.VERSION_CODES.O)
3135
fun get(callId: StreamCallId): JetpackTelecomRepository {
32-
val callsManager = CallsManager(context).apply {
33-
registerAppWithTelecom(
34-
capabilities = CallsManager.CAPABILITY_SUPPORTS_CALL_STREAMING and
35-
CallsManager.CAPABILITY_SUPPORTS_VIDEO_CALLING,
36-
)
37-
}
38-
36+
val callsManager = getOrRegisterCallsManager()
3937
val streamVideo = StreamVideo.instance()
4038
val incomingCallTelecomAction =
4139
IncomingCallTelecomAction(streamVideo)
4240
return JetpackTelecomRepository(callsManager, callId, incomingCallTelecomAction)
4341
}
42+
43+
@RequiresApi(Build.VERSION_CODES.O)
44+
private fun getOrRegisterCallsManager(): CallsManager = synchronized(registrationLock) {
45+
if (!::callsManager.isInitialized) {
46+
callsManager = CallsManager(context).also { manager ->
47+
manager.registerAppWithTelecom(
48+
capabilities = CallsManager.CAPABILITY_SUPPORTS_CALL_STREAMING or
49+
CallsManager.CAPABILITY_SUPPORTS_VIDEO_CALLING,
50+
)
51+
}
52+
}
53+
callsManager
54+
}
4455
}

0 commit comments

Comments
 (0)