diff --git a/app/src/main/kotlin/com/wire/android/datastore/GlobalDataStore.kt b/app/src/main/kotlin/com/wire/android/datastore/GlobalDataStore.kt index bc8912e5ad..57e51f0246 100644 --- a/app/src/main/kotlin/com/wire/android/datastore/GlobalDataStore.kt +++ b/app/src/main/kotlin/com/wire/android/datastore/GlobalDataStore.kt @@ -55,6 +55,7 @@ class GlobalDataStore @Inject constructor(@ApplicationContext private val contex private val IS_LOGGING_ENABLED = booleanPreferencesKey("is_logging_enabled") private val IS_ENCRYPTED_PROTEUS_STORAGE_ENABLED = booleanPreferencesKey("is_encrypted_proteus_storage_enabled") + private val IS_APP_LOCKED_BY_USER = booleanPreferencesKey("is_app_locked_by_user") private val APP_LOCK_PASSCODE = stringPreferencesKey("app_lock_passcode") private val TEAM_APP_LOCK_PASSCODE = stringPreferencesKey("team_app_lock_passcode") val APP_THEME_OPTION = stringPreferencesKey("app_theme_option") diff --git a/app/src/main/kotlin/com/wire/android/ui/AppLockActivity.kt b/app/src/main/kotlin/com/wire/android/ui/AppLockActivity.kt index c257cb51d9..09a9225860 100644 --- a/app/src/main/kotlin/com/wire/android/ui/AppLockActivity.kt +++ b/app/src/main/kotlin/com/wire/android/ui/AppLockActivity.kt @@ -49,22 +49,22 @@ class AppLockActivity : AppCompatActivity() { WireTheme { val navigator = rememberNavigator(this@AppLockActivity::finish) - val startDestination = - if (intent.getBooleanExtra(SET_TEAM_APP_LOCK, false)) { - appLogger.i("appLock: requesting set team app lock") - SetLockCodeScreenDestination - } else { - val canAuthenticateWithBiometrics = BiometricManager - .from(this) - .canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) - if (canAuthenticateWithBiometrics == BiometricManager.BIOMETRIC_SUCCESS) { - appLogger.i("appLock: requesting app Unlock with biometrics") - AppUnlockWithBiometricsScreenDestination + val startDestination = + if (intent.getBooleanExtra(SET_TEAM_APP_LOCK, false)) { + appLogger.i("appLock: requesting set team app lock") + SetLockCodeScreenDestination } else { - appLogger.i("appLock: requesting app Unlock with passcode") - EnterLockCodeScreenDestination + val canAuthenticateWithBiometrics = BiometricManager + .from(this) + .canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) + if (canAuthenticateWithBiometrics == BiometricManager.BIOMETRIC_SUCCESS) { + appLogger.i("appLock: requesting app Unlock with biometrics") + AppUnlockWithBiometricsScreenDestination + } else { + appLogger.i("appLock: requesting app Unlock with passcode") + EnterLockCodeScreenDestination + } } - } NavigationGraph( navigator = navigator, @@ -74,7 +74,6 @@ class AppLockActivity : AppCompatActivity() { } } } - companion object { const val SET_TEAM_APP_LOCK = "set_team_app_lock" } diff --git a/app/src/main/kotlin/com/wire/android/ui/WireActivity.kt b/app/src/main/kotlin/com/wire/android/ui/WireActivity.kt index 9695a22fd1..779ea6c957 100644 --- a/app/src/main/kotlin/com/wire/android/ui/WireActivity.kt +++ b/app/src/main/kotlin/com/wire/android/ui/WireActivity.kt @@ -249,20 +249,6 @@ class WireActivity : AppCompatActivity() { private fun handleDialogs(navigate: (NavigationCommand) -> Unit) { featureFlagNotificationViewModel.loadInitialSync() with(featureFlagNotificationViewModel.featureFlagState) { - if (showFileSharingDialog) { - FileRestrictionDialog( - isFileSharingEnabled = isFileSharingEnabledState, - hideDialogStatus = featureFlagNotificationViewModel::dismissFileSharingDialog - ) - } - - if (shouldShowGuestRoomLinkDialog) { - GuestRoomLinkFeatureFlagDialog( - isGuestRoomLinkEnabled = isGuestRoomLinkEnabled, - onDismiss = featureFlagNotificationViewModel::dismissGuestRoomLinkDialog - ) - } - if (shouldShowTeamAppLockDialog) { TeamAppLockFeatureFlagDialog( isTeamAppLockEnabled = isTeamAppLockEnabled, @@ -290,28 +276,83 @@ class WireActivity : AppCompatActivity() { } } ) - } + } else { + if (showFileSharingDialog) { + FileRestrictionDialog( + isFileSharingEnabled = isFileSharingEnabledState, + hideDialogStatus = featureFlagNotificationViewModel::dismissFileSharingDialog + ) + } - if (shouldShowSelfDeletingMessagesDialog) { - SelfDeletingMessagesDialog( - areSelfDeletingMessagesEnabled = areSelfDeletedMessagesEnabled, - enforcedTimeout = enforcedTimeoutDuration, - hideDialogStatus = featureFlagNotificationViewModel::dismissSelfDeletingMessagesDialog - ) - } + if (shouldShowGuestRoomLinkDialog) { + GuestRoomLinkFeatureFlagDialog( + isGuestRoomLinkEnabled = isGuestRoomLinkEnabled, + onDismiss = featureFlagNotificationViewModel::dismissGuestRoomLinkDialog + ) + } - e2EIRequired?.let { - E2EIRequiredDialog( - result = e2EIRequired, - getCertificate = featureFlagNotificationViewModel::getE2EICertificate, - snoozeDialog = featureFlagNotificationViewModel::snoozeE2EIdRequiredDialog - ) - } + if (shouldShowSelfDeletingMessagesDialog) { + SelfDeletingMessagesDialog( + areSelfDeletingMessagesEnabled = areSelfDeletedMessagesEnabled, + enforcedTimeout = enforcedTimeoutDuration, + hideDialogStatus = featureFlagNotificationViewModel::dismissSelfDeletingMessagesDialog + ) + } + + e2EIRequired?.let { + E2EIRequiredDialog( + result = e2EIRequired, + getCertificate = featureFlagNotificationViewModel::getE2EICertificate, + snoozeDialog = featureFlagNotificationViewModel::snoozeE2EIdRequiredDialog + ) + } + + e2EISnoozeInfo?.let { + E2EISnoozeDialog( + timeLeft = e2EISnoozeInfo.timeLeft, + dismissDialog = featureFlagNotificationViewModel::dismissSnoozeE2EIdRequiredDialog + ) + } - e2EISnoozeInfo?.let { - E2EISnoozeDialog( - timeLeft = e2EISnoozeInfo.timeLeft, - dismissDialog = featureFlagNotificationViewModel::dismissSnoozeE2EIdRequiredDialog + UpdateAppDialog(viewModel.globalAppState.updateAppDialog, ::updateTheApp) + JoinConversationDialog( + viewModel.globalAppState.conversationJoinedDialog, + navigate, + viewModel::onJoinConversationFlowCompleted + ) + CustomBackendDialog( + viewModel.globalAppState, + viewModel::dismissCustomBackendDialog + ) { + viewModel.customBackendDialogProceedButtonClicked { + navigate( + NavigationCommand( + WelcomeScreenDestination + ) + ) + } + } + MaxAccountDialog( + shouldShow = viewModel.globalAppState.maxAccountDialog, + onConfirm = { + viewModel.dismissMaxAccountDialog() + navigate(NavigationCommand(SelfUserProfileScreenDestination)) + }, + onDismiss = viewModel::dismissMaxAccountDialog + ) + AccountLoggedOutDialog( + viewModel.globalAppState.blockUserUI + ) { viewModel.tryToSwitchAccount(NavigationSwitchAccountActions(navigate)) } + NewClientDialog( + viewModel.globalAppState.newClientDialog, + { navigate(NavigationCommand(SelfDevicesScreenDestination)) }, + { + viewModel.switchAccount( + userId = it, + actions = NavigationSwitchAccountActions(navigate), + onComplete = { navigate(NavigationCommand(SelfDevicesScreenDestination)) }) + }, + viewModel::dismissNewClientsDialog ) } if (showCallEndedBecauseOfConversationDegraded) { @@ -320,38 +361,6 @@ class WireActivity : AppCompatActivity() { ) } } - UpdateAppDialog(viewModel.globalAppState.updateAppDialog, ::updateTheApp) - JoinConversationDialog( - viewModel.globalAppState.conversationJoinedDialog, - navigate, - viewModel::onJoinConversationFlowCompleted - ) - CustomBackendDialog( - viewModel.globalAppState, - viewModel::dismissCustomBackendDialog - ) { viewModel.customBackendDialogProceedButtonClicked { navigate(NavigationCommand(WelcomeScreenDestination)) } } - MaxAccountDialog( - shouldShow = viewModel.globalAppState.maxAccountDialog, - onConfirm = { - viewModel.dismissMaxAccountDialog() - navigate(NavigationCommand(SelfUserProfileScreenDestination)) - }, - onDismiss = viewModel::dismissMaxAccountDialog - ) - AccountLoggedOutDialog( - viewModel.globalAppState.blockUserUI - ) { viewModel.tryToSwitchAccount(NavigationSwitchAccountActions(navigate)) } - NewClientDialog( - viewModel.globalAppState.newClientDialog, - { navigate(NavigationCommand(SelfDevicesScreenDestination)) }, - { - viewModel.switchAccount( - userId = it, - actions = NavigationSwitchAccountActions(navigate), - onComplete = { navigate(NavigationCommand(SelfDevicesScreenDestination)) }) - }, - viewModel::dismissNewClientsDialog - ) } private fun updateTheApp() {