Make restore dialogs not cancelable.

This commit is contained in:
Cody Henthorne
2025-11-20 13:40:45 -05:00
parent 25481b7408
commit 1ad838d8ce
5 changed files with 35 additions and 12 deletions

View File

@@ -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)
)
}
}

View File

@@ -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(

View File

@@ -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)
)
}
}

View File

@@ -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)
)
}
}