Browse Source

Ensure Call is not hang up when user is asked to grant system permissions.

pull/3419/head
Benoit Marty 2 weeks ago
parent
commit
467c63fd15
  1. 13
      features/call/impl/src/main/kotlin/io/element/android/features/call/impl/ui/ElementCallActivity.kt

13
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.content.IntentCompat
import androidx.core.util.Consumer import androidx.core.util.Consumer
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import io.element.android.features.call.api.CallType import io.element.android.features.call.api.CallType
import io.element.android.features.call.impl.DefaultElementCallEntryPoint import io.element.android.features.call.impl.DefaultElementCallEntryPoint
import io.element.android.features.call.impl.di.CallBindings 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.architecture.bindings
import io.element.android.libraries.designsystem.theme.ElementThemeApp import io.element.android.libraries.designsystem.theme.ElementThemeApp
import io.element.android.libraries.preferences.api.store.AppPreferencesStore import io.element.android.libraries.preferences.api.store.AppPreferencesStore
import kotlinx.coroutines.launch
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@ -131,11 +129,13 @@ class ElementCallActivity :
val pipEventSink by rememberUpdatedState(pipState.eventSink) val pipEventSink by rememberUpdatedState(pipState.eventSink)
DisposableEffect(Unit) { DisposableEffect(Unit) {
val listener = Runnable { val listener = Runnable {
pipEventSink(PictureInPictureEvents.EnterPictureInPicture) if (requestPermissionCallback != null) {
} Timber.w("Ignoring onUserLeaveHint event because user is asked to grant permissions")
lifecycleScope.launch { } else {
addOnUserLeaveHintListener(listener) pipEventSink(PictureInPictureEvents.EnterPictureInPicture)
}
} }
addOnUserLeaveHintListener(listener)
onDispose { onDispose {
removeOnUserLeaveHintListener(listener) removeOnUserLeaveHintListener(listener)
} }
@ -234,6 +234,7 @@ class ElementCallActivity :
} }
} }
callback(permissionsToGrant.toTypedArray()) callback(permissionsToGrant.toTypedArray())
requestPermissionCallback = null
} }
} }

Loading…
Cancel
Save