Do not show verification banner for the last device, show the enter recovery key banner.

This commit is contained in:
Benoit Marty 2024-02-20 10:51:35 +01:00 committed by Benoit Marty
parent 6cd28b2305
commit 4a75e6a9a7
2 changed files with 36 additions and 11 deletions

View file

@ -109,22 +109,23 @@ class RoomListPresenter @Inject constructor(
val isMigrating = migrationScreenPresenter.present().isMigrating
var securityBannerDismissed by rememberSaveable { mutableStateOf(false) }
val displayVerificationPrompt by sessionVerificationService.canVerifySessionFlow.collectAsState(initial = false)
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
val secureStorageFlag by featureFlagService.isFeatureEnabledFlow(FeatureFlags.SecureStorage)
.collectAsState(initial = null)
val displayRecoveryKeyPrompt by remember {
derivedStateOf {
secureStorageFlag == true &&
recoveryState == RecoveryState.INCOMPLETE
}
val canVerifySession by sessionVerificationService.canVerifySessionFlow.collectAsState(initial = false)
var isLastDevice by remember { mutableStateOf(false) }
LaunchedEffect(Unit) {
isLastDevice = encryptionService.isLastDevice().getOrNull() ?: false
}
val recoveryState by encryptionService.recoveryStateStateFlow.collectAsState()
val secureStorageFlag by featureFlagService.isFeatureEnabledFlow(FeatureFlags.SecureStorage).collectAsState(initial = null)
val securityBannerState by remember {
derivedStateOf {
when {
securityBannerDismissed -> SecurityBannerState.None
displayVerificationPrompt -> SecurityBannerState.SessionVerification
displayRecoveryKeyPrompt -> SecurityBannerState.RecoveryKeyConfirmation
canVerifySession -> if (isLastDevice) {
SecurityBannerState.RecoveryKeyConfirmation
} else {
SecurityBannerState.SessionVerification
}
secureStorageFlag == true && recoveryState == RecoveryState.INCOMPLETE -> SecurityBannerState.RecoveryKeyConfirmation
else -> SecurityBannerState.None
}
}