From 97aa82e5fbfd448de8d4fe511eabb2cdc6773eb9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 6 Sep 2024 16:17:21 +0200 Subject: [PATCH] Ensure Call is not hang up when user is asked to grant system permissions. --- .../features/call/impl/ui/ElementCallActivity.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt index 5bfa6a9ada..f72630277a 100644 --- a/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt +++ b/features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt @@ -42,7 +42,6 @@ import androidx.core.app.PictureInPictureModeChangedInfo import androidx.core.content.IntentCompat import androidx.core.util.Consumer import androidx.lifecycle.Lifecycle -import androidx.lifecycle.lifecycleScope import io.element.android.features.call.api.CallType import io.element.android.features.call.impl.DefaultElementCallEntryPoint import io.element.android.features.call.impl.di.CallBindings @@ -55,7 +54,6 @@ import io.element.android.features.call.impl.utils.CallIntentDataParser import io.element.android.libraries.architecture.bindings import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.preferences.api.store.AppPreferencesStore -import kotlinx.coroutines.launch import timber.log.Timber import javax.inject.Inject @@ -131,11 +129,13 @@ class ElementCallActivity : val pipEventSink by rememberUpdatedState(pipState.eventSink) DisposableEffect(Unit) { val listener = Runnable { - pipEventSink(PictureInPictureEvents.EnterPictureInPicture) - } - lifecycleScope.launch { - addOnUserLeaveHintListener(listener) + if (requestPermissionCallback != null) { + Timber.w("Ignoring onUserLeaveHint event because user is asked to grant permissions") + } else { + pipEventSink(PictureInPictureEvents.EnterPictureInPicture) + } } + addOnUserLeaveHintListener(listener) onDispose { removeOnUserLeaveHintListener(listener) } @@ -234,6 +234,7 @@ class ElementCallActivity : } } callback(permissionsToGrant.toTypedArray()) + requestPermissionCallback = null } }