Make sure notification permission screen is dismissed (#1263)

* Make sure notification permission screen is dismissed
This commit is contained in:
Jorge Martin Espinosa
2023-09-11 07:54:44 +02:00
committed by GitHub
parent 41c8038357
commit f03cbc1c2e
2 changed files with 12 additions and 11 deletions

View File

@@ -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
)
}

View File

@@ -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()