diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/EnterBackupKeyFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/EnterBackupKeyFragment.kt index 76af3c8cd2..251d664709 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/EnterBackupKeyFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/EnterBackupKeyFragment.kt @@ -14,6 +14,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource +import androidx.compose.ui.window.DialogProperties import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.lifecycle.Lifecycle @@ -129,7 +130,8 @@ class EnterBackupKeyFragment : ComposeFragment() { findNavController().safeNavigate(EnterBackupKeyFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.RESTART_AFTER_COLLECTION)) }, onDismiss = { showSkipRestoreWarning = false }, - confirmColor = MaterialTheme.colorScheme.error + confirmColor = MaterialTheme.colorScheme.error, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } if (contactSupportState.show) { @@ -146,6 +148,7 @@ class EnterBackupKeyFragment : ComposeFragment() { }, onAbandonRemoteRestoreAfterRegistration = { viewLifecycleOwner.lifecycleScope.launch { + sharedViewModel.resetRestoreDecision() sharedViewModel.resumeNormalRegistration() } }, @@ -200,7 +203,8 @@ private fun ErrorContent( onConfirm = onBackupTierRetry, onDeny = onAbandonRemoteRestoreAfterRegistration, onDismiss = onBackupTierNotRestoredDismiss, - onDismissRequest = {} + onDismissRequest = {}, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } } else if (state.showBackupTierNotRestoreError == EnterBackupKeyViewModel.TierRestoreError.NOT_FOUND) { @@ -211,7 +215,8 @@ private fun ErrorContent( dismiss = stringResource(R.string.EnterBackupKey_skip_restore), onConfirm = onBackupTierRetry, onDeny = onAbandonRemoteRestoreAfterRegistration, - onDismiss = onBackupTierNotRestoredDismiss + onDismiss = onBackupTierNotRestoredDismiss, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } else if (state.showRegistrationError) { if (state.registerAccountResult is RegisterAccountResult.IncorrectRecoveryPassword) { @@ -222,7 +227,8 @@ private fun ErrorContent( dismiss = stringResource(R.string.EnterBackupKey_backup_key_help), onConfirm = {}, onDeny = onBackupKeyHelp, - onDismiss = onRegistrationErrorDismiss + onDismiss = onRegistrationErrorDismiss, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } else { val message = when (state.registerAccountResult) { @@ -233,7 +239,8 @@ private fun ErrorContent( Dialogs.SimpleMessageDialog( message = message, onDismiss = onRegistrationErrorDismiss, - dismiss = stringResource(android.R.string.ok) + dismiss = stringResource(android.R.string.ok), + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt index 06b2927aa7..ae8b96b2c0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/RemoteRestoreActivity.kt @@ -44,6 +44,7 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.DialogProperties import androidx.lifecycle.Lifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.lifecycleScope @@ -227,7 +228,8 @@ class RemoteRestoreActivity : BaseActivity() { } }, onDismiss = { showSkipRestoreWarning = false }, - confirmColor = MaterialTheme.colorScheme.error + confirmColor = MaterialTheme.colorScheme.error, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } } @@ -682,7 +684,8 @@ fun TierRestoreFailedDialog( negative = stringResource(android.R.string.cancel), onPositive = onRetryRestore, onNeutral = onContactSupport, - onNegative = onCancel + onNegative = onCancel, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } else { Dialogs.SimpleAlertDialog( diff --git a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/SelectManualRestoreMethodFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/SelectManualRestoreMethodFragment.kt index 38f329b949..52ae555d91 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/SelectManualRestoreMethodFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/registration/ui/restore/SelectManualRestoreMethodFragment.kt @@ -15,6 +15,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource +import androidx.compose.ui.window.DialogProperties import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import org.signal.core.ui.compose.Dialogs @@ -72,7 +73,8 @@ class SelectManualRestoreMethodFragment : ComposeFragment() { findNavController().safeNavigate(SelectManualRestoreMethodFragmentDirections.goToEnterPhoneNumber(EnterPhoneNumberMode.NORMAL)) }, onDismiss = { showSkipRestoreWarning = false }, - confirmColor = MaterialTheme.colorScheme.error + confirmColor = MaterialTheme.colorScheme.error, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/restore/selection/SelectRestoreMethodFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/restore/selection/SelectRestoreMethodFragment.kt index 39234567fb..4a4293bafe 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/restore/selection/SelectRestoreMethodFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/restore/selection/SelectRestoreMethodFragment.kt @@ -12,6 +12,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.res.stringResource +import androidx.compose.ui.window.DialogProperties import androidx.fragment.app.activityViewModels import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -69,7 +70,8 @@ class SelectRestoreMethodFragment : ComposeFragment() { } }, onDismiss = { showSkipRestoreWarning = false }, - confirmColor = MaterialTheme.colorScheme.error + confirmColor = MaterialTheme.colorScheme.error, + properties = DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false) ) } } diff --git a/core-ui/src/main/java/org/signal/core/ui/compose/Dialogs.kt b/core-ui/src/main/java/org/signal/core/ui/compose/Dialogs.kt index 1d0e482154..d653be1feb 100644 --- a/core-ui/src/main/java/org/signal/core/ui/compose/Dialogs.kt +++ b/core-ui/src/main/java/org/signal/core/ui/compose/Dialogs.kt @@ -25,6 +25,7 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.AlertDialog import androidx.compose.material3.AlertDialogDefaults import androidx.compose.material3.Checkbox import androidx.compose.material3.CircularProgressIndicator @@ -94,7 +95,7 @@ object Dialogs { tonalElevation: Dp = Defaults.TonalElevation, properties: DialogProperties = DialogProperties() ) { - androidx.compose.material3.AlertDialog( + AlertDialog( onDismissRequest = onDismissRequest, confirmButton = confirmButton, modifier = modifier, @@ -551,11 +552,19 @@ object Dialogs { negative: String, onPositive: () -> Unit, onNegative: () -> Unit, - onNeutral: () -> Unit + onNeutral: () -> Unit, + properties: DialogProperties = DialogProperties() ) { Dialog( onDismissRequest = onNegative, - properties = DialogProperties(usePlatformDefaultWidth = false) + properties = DialogProperties( + usePlatformDefaultWidth = false, + dismissOnBackPress = properties.dismissOnBackPress, + dismissOnClickOutside = properties.dismissOnClickOutside, + securePolicy = properties.securePolicy, + decorFitsSystemWindows = properties.decorFitsSystemWindows, + windowTitle = properties.windowTitle + ) ) { Surface( modifier = Modifier