Browse Source

Rename `isLastSession` to `isLastDevice`, to match SDK naming.

pull/2421/head
Benoit Marty 7 months ago committed by Benoit Marty
parent
commit
7ec876bc8a
  1. 6
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt
  2. 2
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt
  3. 14
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt
  4. 6
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt
  5. 6
      features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenter.kt
  6. 6
      features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt
  7. 2
      features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt

6
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutPresenter.kt

@ -66,9 +66,9 @@ class LogoutPresenter @Inject constructor(
} }
.collectAsState(initial = BackupUploadState.Unknown) .collectAsState(initial = BackupUploadState.Unknown)
var isLastSession by remember { mutableStateOf(false) } var isLastDevice by remember { mutableStateOf(false) }
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
isLastSession = encryptionService.isLastDevice().getOrNull() ?: false isLastDevice = encryptionService.isLastDevice().getOrNull() ?: false
} }
val backupState by encryptionService.backupStateStateFlow.collectAsState() val backupState by encryptionService.backupStateStateFlow.collectAsState()
@ -100,7 +100,7 @@ class LogoutPresenter @Inject constructor(
} }
return LogoutState( return LogoutState(
isLastSession = isLastSession, isLastDevice = isLastDevice,
backupState = backupState, backupState = backupState,
doesBackupExistOnServer = doesBackupExistOnServerAction.value.dataOrNull().orTrue(), doesBackupExistOnServer = doesBackupExistOnServerAction.value.dataOrNull().orTrue(),
recoveryState = recoveryState, recoveryState = recoveryState,

2
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutState.kt

@ -22,7 +22,7 @@ import io.element.android.libraries.matrix.api.encryption.BackupUploadState
import io.element.android.libraries.matrix.api.encryption.RecoveryState import io.element.android.libraries.matrix.api.encryption.RecoveryState
data class LogoutState( data class LogoutState(
val isLastSession: Boolean, val isLastDevice: Boolean,
val backupState: BackupState, val backupState: BackupState,
val doesBackupExistOnServer: Boolean, val doesBackupExistOnServer: Boolean,
val recoveryState: RecoveryState, val recoveryState: RecoveryState,

14
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutStateProvider.kt

@ -27,22 +27,22 @@ open class LogoutStateProvider : PreviewParameterProvider<LogoutState> {
override val values: Sequence<LogoutState> override val values: Sequence<LogoutState>
get() = sequenceOf( get() = sequenceOf(
aLogoutState(), aLogoutState(),
aLogoutState(isLastSession = true), aLogoutState(isLastDevice = true),
aLogoutState(isLastSession = false, backupUploadState = BackupUploadState.Uploading(66, 200)), aLogoutState(isLastDevice = false, backupUploadState = BackupUploadState.Uploading(66, 200)),
aLogoutState(isLastSession = true, backupUploadState = BackupUploadState.Done), aLogoutState(isLastDevice = true, backupUploadState = BackupUploadState.Done),
aLogoutState(logoutAction = AsyncAction.Confirming), aLogoutState(logoutAction = AsyncAction.Confirming),
aLogoutState(logoutAction = AsyncAction.Loading), aLogoutState(logoutAction = AsyncAction.Loading),
aLogoutState(logoutAction = AsyncAction.Failure(Exception("Failed to logout"))), aLogoutState(logoutAction = AsyncAction.Failure(Exception("Failed to logout"))),
aLogoutState(backupUploadState = BackupUploadState.SteadyException(SteadyStateException.Connection("No network"))), aLogoutState(backupUploadState = BackupUploadState.SteadyException(SteadyStateException.Connection("No network"))),
// Last session no recovery // Last session no recovery
aLogoutState(isLastSession = true, recoveryState = RecoveryState.DISABLED), aLogoutState(isLastDevice = true, recoveryState = RecoveryState.DISABLED),
// Last session no backup // Last session no backup
aLogoutState(isLastSession = true, backupState = BackupState.UNKNOWN, doesBackupExistOnServer = false), aLogoutState(isLastDevice = true, backupState = BackupState.UNKNOWN, doesBackupExistOnServer = false),
) )
} }
fun aLogoutState( fun aLogoutState(
isLastSession: Boolean = false, isLastDevice: Boolean = false,
backupState: BackupState = BackupState.ENABLED, backupState: BackupState = BackupState.ENABLED,
doesBackupExistOnServer: Boolean = true, doesBackupExistOnServer: Boolean = true,
recoveryState: RecoveryState = RecoveryState.ENABLED, recoveryState: RecoveryState = RecoveryState.ENABLED,
@ -50,7 +50,7 @@ fun aLogoutState(
logoutAction: AsyncAction<String?> = AsyncAction.Uninitialized, logoutAction: AsyncAction<String?> = AsyncAction.Uninitialized,
eventSink: (LogoutEvents) -> Unit = {}, eventSink: (LogoutEvents) -> Unit = {},
) = LogoutState( ) = LogoutState(
isLastSession = isLastSession, isLastDevice = isLastDevice,
backupState = backupState, backupState = backupState,
doesBackupExistOnServer = doesBackupExistOnServer, doesBackupExistOnServer = doesBackupExistOnServer,
recoveryState = recoveryState, recoveryState = recoveryState,

6
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/LogoutView.kt

@ -97,7 +97,7 @@ fun LogoutView(
private fun title(state: LogoutState): String { private fun title(state: LogoutState): String {
return when { return when {
state.backupUploadState.isBackingUp() -> stringResource(id = R.string.screen_signout_key_backup_ongoing_title) state.backupUploadState.isBackingUp() -> stringResource(id = R.string.screen_signout_key_backup_ongoing_title)
state.isLastSession -> { state.isLastDevice -> {
if (state.recoveryState != RecoveryState.ENABLED) { if (state.recoveryState != RecoveryState.ENABLED) {
stringResource(id = R.string.screen_signout_recovery_disabled_title) stringResource(id = R.string.screen_signout_recovery_disabled_title)
} else if (state.backupState == BackupState.UNKNOWN && state.doesBackupExistOnServer.not()) { } else if (state.backupState == BackupState.UNKNOWN && state.doesBackupExistOnServer.not()) {
@ -116,7 +116,7 @@ private fun subtitle(state: LogoutState): String? {
(state.backupUploadState as? BackupUploadState.SteadyException)?.exception is SteadyStateException.Connection -> (state.backupUploadState as? BackupUploadState.SteadyException)?.exception is SteadyStateException.Connection ->
stringResource(id = R.string.screen_signout_key_backup_offline_subtitle) stringResource(id = R.string.screen_signout_key_backup_offline_subtitle)
state.backupUploadState.isBackingUp() -> stringResource(id = R.string.screen_signout_key_backup_ongoing_subtitle) state.backupUploadState.isBackingUp() -> stringResource(id = R.string.screen_signout_key_backup_ongoing_subtitle)
state.isLastSession -> stringResource(id = R.string.screen_signout_key_backup_disabled_subtitle) state.isLastDevice -> stringResource(id = R.string.screen_signout_key_backup_disabled_subtitle)
else -> null else -> null
} }
} }
@ -128,7 +128,7 @@ private fun ColumnScope.Buttons(
onChangeRecoveryKeyClicked: () -> Unit, onChangeRecoveryKeyClicked: () -> Unit,
) { ) {
val logoutAction = state.logoutAction val logoutAction = state.logoutAction
if (state.isLastSession) { if (state.isLastDevice) {
OutlinedButton( OutlinedButton(
text = stringResource(id = CommonStrings.common_settings), text = stringResource(id = CommonStrings.common_settings),
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),

6
features/logout/impl/src/main/kotlin/io/element/android/features/logout/impl/direct/DefaultDirectLogoutPresenter.kt

@ -70,9 +70,9 @@ class DefaultDirectLogoutPresenter @Inject constructor(
} }
.collectAsState(initial = BackupUploadState.Unknown) .collectAsState(initial = BackupUploadState.Unknown)
var isLastSession by remember { mutableStateOf(false) } var isLastDevice by remember { mutableStateOf(false) }
LaunchedEffect(Unit) { LaunchedEffect(Unit) {
isLastSession = encryptionService.isLastDevice().getOrNull() ?: false isLastDevice = encryptionService.isLastDevice().getOrNull() ?: false
} }
fun handleEvents(event: DirectLogoutEvents) { fun handleEvents(event: DirectLogoutEvents) {
@ -91,7 +91,7 @@ class DefaultDirectLogoutPresenter @Inject constructor(
} }
return DirectLogoutState( return DirectLogoutState(
canDoDirectSignOut = !isLastSession && canDoDirectSignOut = !isLastDevice &&
!backupUploadState.isBackingUp(), !backupUploadState.isBackingUp(),
logoutAction = logoutAction.value, logoutAction = logoutAction.value,
eventSink = ::handleEvents eventSink = ::handleEvents

6
features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutPresenterTest.kt

@ -50,7 +50,7 @@ class LogoutPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitFirstItem() val initialState = awaitFirstItem()
assertThat(initialState.isLastSession).isFalse() assertThat(initialState.isLastDevice).isFalse()
assertThat(initialState.backupState).isEqualTo(BackupState.UNKNOWN) assertThat(initialState.backupState).isEqualTo(BackupState.UNKNOWN)
assertThat(initialState.doesBackupExistOnServer).isTrue() assertThat(initialState.doesBackupExistOnServer).isTrue()
assertThat(initialState.recoveryState).isEqualTo(RecoveryState.UNKNOWN) assertThat(initialState.recoveryState).isEqualTo(RecoveryState.UNKNOWN)
@ -71,7 +71,7 @@ class LogoutPresenterTest {
}.test { }.test {
skipItems(3) skipItems(3)
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.isLastSession).isTrue() assertThat(initialState.isLastDevice).isTrue()
assertThat(initialState.backupUploadState).isEqualTo(BackupUploadState.Unknown) assertThat(initialState.backupUploadState).isEqualTo(BackupUploadState.Unknown)
assertThat(initialState.logoutAction).isEqualTo(AsyncAction.Uninitialized) assertThat(initialState.logoutAction).isEqualTo(AsyncAction.Uninitialized)
} }
@ -96,7 +96,7 @@ class LogoutPresenterTest {
presenter.present() presenter.present()
}.test { }.test {
val initialState = awaitItem() val initialState = awaitItem()
assertThat(initialState.isLastSession).isFalse() assertThat(initialState.isLastDevice).isFalse()
assertThat(initialState.backupUploadState).isEqualTo(BackupUploadState.Unknown) assertThat(initialState.backupUploadState).isEqualTo(BackupUploadState.Unknown)
assertThat(initialState.logoutAction).isEqualTo(AsyncAction.Uninitialized) assertThat(initialState.logoutAction).isEqualTo(AsyncAction.Uninitialized)
skipItems(1) skipItems(1)

2
features/logout/impl/src/test/kotlin/io/element/android/features/logout/impl/LogoutViewTest.kt

@ -153,7 +153,7 @@ class LogoutViewTest {
rule.setContent { rule.setContent {
LogoutView( LogoutView(
aLogoutState( aLogoutState(
isLastSession = true, isLastDevice = true,
eventSink = eventsRecorder eventSink = eventsRecorder
), ),
onChangeRecoveryKeyClicked = callback, onChangeRecoveryKeyClicked = callback,

Loading…
Cancel
Save