From f03cbc1c2e7639d65160a59a3458b5ac0f8de8b0 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Mon, 11 Sep 2023 07:54:44 +0200 Subject: [PATCH] Make sure notification permission screen is dismissed (#1263) * Make sure notification permission screen is dismissed --- .../notifications/NotificationsOptInPresenter.kt | 16 ++++++++++++---- .../impl/notifications/NotificationsOptInView.kt | 7 ------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt index f7e4b6b26d..f3bffca590 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInPresenter.kt @@ -20,6 +20,7 @@ import android.Manifest import android.os.Build import androidx.annotation.RequiresApi import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject @@ -56,15 +57,15 @@ class NotificationsOptInPresenter @AssistedInject constructor( @Composable override fun present(): NotificationsOptInState { - val notificationPremissionsState = postNotificationPermissionsPresenter.present() + val notificationsPermissionsState = postNotificationPermissionsPresenter.present() fun handleEvents(event: NotificationsOptInEvents) { when (event) { NotificationsOptInEvents.ContinueClicked -> { - if (notificationPremissionsState.permissionGranted) { + if (notificationsPermissionsState.permissionGranted) { callback.onNotificationsOptInFinished() } else { - notificationPremissionsState.eventSink(PermissionsEvents.OpenSystemDialog) + notificationsPermissionsState.eventSink(PermissionsEvents.OpenSystemDialog) } } NotificationsOptInEvents.NotNowClicked -> { @@ -76,8 +77,15 @@ class NotificationsOptInPresenter @AssistedInject constructor( } } + LaunchedEffect(notificationsPermissionsState) { + if (notificationsPermissionsState.permissionGranted + || notificationsPermissionsState.permissionAlreadyDenied) { + callback.onNotificationsOptInFinished() + } + } + return NotificationsOptInState( - notificationsPermissionState = notificationPremissionsState, + notificationsPermissionState = notificationsPermissionsState, eventSink = ::handleEvents ) } diff --git a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt index 73135cafdc..0b0676074b 100644 --- a/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt +++ b/features/ftue/impl/src/main/kotlin/io/element/android/features/ftue/impl/notifications/NotificationsOptInView.kt @@ -32,7 +32,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Notifications import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -64,12 +63,6 @@ fun NotificationsOptInView( ) { BackHandler(onBack = onBack) - if (state.notificationsPermissionState.permissionAlreadyDenied) { - LaunchedEffect(Unit) { - state.eventSink(NotificationsOptInEvents.NotNowClicked) - } - } - HeaderFooterPage( modifier = modifier .systemBarsPadding()