LoggedInEvents -> LoggedInEvent

This commit is contained in:
Benoit Marty
2026-08-25 09:50:04 +02:00
parent 6ab3d7393b
commit 64f1f299e6
5 changed files with 23 additions and 23 deletions
@@ -8,11 +8,11 @@
package io.element.android.appnav.loggedin package io.element.android.appnav.loggedin
sealed interface LoggedInEvents { sealed interface LoggedInEvent {
data class CloseErrorDialog(val doNotShowAgain: Boolean) : LoggedInEvents data class CloseErrorDialog(val doNotShowAgain: Boolean) : LoggedInEvent
data object CheckSlidingSyncProxyAvailability : LoggedInEvents data object CheckSlidingSyncProxyAvailability : LoggedInEvent
data object LogoutAndMigrateToNativeSlidingSync : LoggedInEvents data object LogoutAndMigrateToNativeSlidingSync : LoggedInEvent
data object DismissLocalNetworkPermissionPrompt : LoggedInEvents data object DismissLocalNetworkPermissionPrompt : LoggedInEvent
data object RequestLocationNetworkPermission : LoggedInEvents data object RequestLocationNetworkPermission : LoggedInEvent
} }
@@ -149,9 +149,9 @@ class LoggedInPresenter(
else -> LocalNetworkPermissionDialog.Settings else -> LocalNetworkPermissionDialog.Settings
} }
fun handleEvent(event: LoggedInEvents) { fun handleEvent(event: LoggedInEvent) {
when (event) { when (event) {
is LoggedInEvents.CloseErrorDialog -> { is LoggedInEvent.CloseErrorDialog -> {
pusherRegistrationState.value = AsyncData.Uninitialized pusherRegistrationState.value = AsyncData.Uninitialized
if (event.doNotShowAgain) { if (event.doNotShowAgain) {
coroutineScope.launch { coroutineScope.launch {
@@ -159,17 +159,17 @@ class LoggedInPresenter(
} }
} }
} }
LoggedInEvents.CheckSlidingSyncProxyAvailability -> coroutineScope.launch { LoggedInEvent.CheckSlidingSyncProxyAvailability -> coroutineScope.launch {
forceNativeSlidingSyncMigration = matrixClient.needsForcedNativeSlidingSyncMigration().getOrDefault(false) forceNativeSlidingSyncMigration = matrixClient.needsForcedNativeSlidingSyncMigration().getOrDefault(false)
} }
LoggedInEvents.LogoutAndMigrateToNativeSlidingSync -> coroutineScope.launch { LoggedInEvent.LogoutAndMigrateToNativeSlidingSync -> coroutineScope.launch {
// Force the logout since Native Sliding Sync is already enforced by the SDK // Force the logout since Native Sliding Sync is already enforced by the SDK
matrixClient.logout(userInitiated = true, ignoreSdkError = true) matrixClient.logout(userInitiated = true, ignoreSdkError = true)
} }
LoggedInEvents.DismissLocalNetworkPermissionPrompt -> { LoggedInEvent.DismissLocalNetworkPermissionPrompt -> {
localNetworkPromptDismissedThisSession = true localNetworkPromptDismissedThisSession = true
} }
LoggedInEvents.RequestLocationNetworkPermission -> { LoggedInEvent.RequestLocationNetworkPermission -> {
if (localNetworkPermissionDialog == LocalNetworkPermissionDialog.Settings) { if (localNetworkPermissionDialog == LocalNetworkPermissionDialog.Settings) {
localNetworkPermissionState.eventSink(PermissionsEvent.OpenSystemSettingAndCloseDialog) localNetworkPermissionState.eventSink(PermissionsEvent.OpenSystemSettingAndCloseDialog)
} else { } else {
@@ -18,5 +18,5 @@ data class LoggedInState(
val forceNativeSlidingSyncMigration: Boolean, val forceNativeSlidingSyncMigration: Boolean,
val appName: String, val appName: String,
val localNetworkPermissionDialog: LocalNetworkPermissionDialog, val localNetworkPermissionDialog: LocalNetworkPermissionDialog,
val eventSink: (LoggedInEvents) -> Unit, val eventSink: (LoggedInEvent) -> Unit,
) )
@@ -37,7 +37,7 @@ fun LoggedInView(
) { ) {
OnLifecycleEvent { _, event -> OnLifecycleEvent { _, event ->
if (event == Lifecycle.Event.ON_RESUME) { if (event == Lifecycle.Event.ON_RESUME) {
state.eventSink(LoggedInEvents.CheckSlidingSyncProxyAvailability) state.eventSink(LoggedInEvent.CheckSlidingSyncProxyAvailability)
} }
} }
Box( Box(
@@ -63,10 +63,10 @@ fun LoggedInView(
content = stringResource(id = CommonStrings.common_error_registering_pusher_android, reason), content = stringResource(id = CommonStrings.common_error_registering_pusher_android, reason),
cancelText = stringResource(id = CommonStrings.common_settings), cancelText = stringResource(id = CommonStrings.common_settings),
onDismiss = { onDismiss = {
state.eventSink(LoggedInEvents.CloseErrorDialog(it)) state.eventSink(LoggedInEvent.CloseErrorDialog(it))
}, },
onCancel = { onCancel = {
state.eventSink(LoggedInEvents.CloseErrorDialog(false)) state.eventSink(LoggedInEvent.CloseErrorDialog(false))
navigateToNotificationTroubleshoot() navigateToNotificationTroubleshoot()
} }
) )
@@ -79,15 +79,15 @@ fun LoggedInView(
ForceNativeSlidingSyncMigrationDialog( ForceNativeSlidingSyncMigrationDialog(
appName = state.appName, appName = state.appName,
onSubmit = { onSubmit = {
state.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) state.eventSink(LoggedInEvent.LogoutAndMigrateToNativeSlidingSync)
} }
) )
} }
LocalNetworkPermissionDialogView( LocalNetworkPermissionDialogView(
dialog = state.localNetworkPermissionDialog, dialog = state.localNetworkPermissionDialog,
onSubmit = { state.eventSink(LoggedInEvents.RequestLocationNetworkPermission) }, onSubmit = { state.eventSink(LoggedInEvent.RequestLocationNetworkPermission) },
onDismiss = { state.eventSink(LoggedInEvents.DismissLocalNetworkPermissionPrompt) }, onDismiss = { state.eventSink(LoggedInEvent.DismissLocalNetworkPermissionPrompt) },
) )
} }
@@ -210,7 +210,7 @@ class LoggedInPresenterTest {
lambda.assertions() lambda.assertions()
.isCalledOnce() .isCalledOnce()
// Reset the error and do not show again // Reset the error and do not show again
finalState.eventSink(LoggedInEvents.CloseErrorDialog(doNotShowAgain = false)) finalState.eventSink(LoggedInEvent.CloseErrorDialog(doNotShowAgain = false))
val lastState = awaitItem() val lastState = awaitItem()
assertThat(lastState.pusherRegistrationState.isUninitialized()).isTrue() assertThat(lastState.pusherRegistrationState.isUninitialized()).isTrue()
assertThat(lastState.ignoreRegistrationError).isFalse() assertThat(lastState.ignoreRegistrationError).isFalse()
@@ -240,7 +240,7 @@ class LoggedInPresenterTest {
lambda.assertions() lambda.assertions()
.isCalledOnce() .isCalledOnce()
// Reset the error and do not show again // Reset the error and do not show again
finalState.eventSink(LoggedInEvents.CloseErrorDialog(doNotShowAgain = true)) finalState.eventSink(LoggedInEvent.CloseErrorDialog(doNotShowAgain = true))
skipItems(1) skipItems(1)
setIgnoreRegistrationErrorLambda.assertions() setIgnoreRegistrationErrorLambda.assertions()
.isCalledOnce() .isCalledOnce()
@@ -296,7 +296,7 @@ class LoggedInPresenterTest {
).test { ).test {
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.forceNativeSlidingSyncMigration).isFalse() assertThat(initialState.forceNativeSlidingSyncMigration).isFalse()
initialState.eventSink(LoggedInEvents.CheckSlidingSyncProxyAvailability) initialState.eventSink(LoggedInEvent.CheckSlidingSyncProxyAvailability)
assertThat(awaitItem().forceNativeSlidingSyncMigration).isTrue() assertThat(awaitItem().forceNativeSlidingSyncMigration).isTrue()
} }
} }
@@ -318,7 +318,7 @@ class LoggedInPresenterTest {
).test { ).test {
val initialState = awaitItem() val initialState = awaitItem()
initialState.eventSink(LoggedInEvents.LogoutAndMigrateToNativeSlidingSync) initialState.eventSink(LoggedInEvent.LogoutAndMigrateToNativeSlidingSync)
advanceUntilIdle() advanceUntilIdle()