Fix incorrect showing of backups enabled bottom sheet on flow exit.

This commit is contained in:
Cody Henthorne
2025-03-21 07:50:34 -04:00
parent 28481e3aab
commit 8fc358f0a5
3 changed files with 14 additions and 9 deletions

View File

@@ -146,13 +146,14 @@ class MessageBackupsFlowFragment : ComposeFragment(), InAppPaymentCheckoutDelega
}
}
if (state.stage == MessageBackupsStage.CHECKOUT_SHEET) {
AppDependencies.billingApi.launchBillingFlow(requireActivity())
}
if (state.stage == MessageBackupsStage.COMPLETED) {
requireActivity().setResult(Activity.RESULT_OK, MessageBackupsCheckoutActivity.createResultData())
requireActivity().finishAfterTransition()
when (state.stage) {
MessageBackupsStage.CANCEL -> requireActivity().finishAfterTransition()
MessageBackupsStage.CHECKOUT_SHEET -> AppDependencies.billingApi.launchBillingFlow(requireActivity())
MessageBackupsStage.COMPLETED -> {
requireActivity().setResult(Activity.RESULT_OK, MessageBackupsCheckoutActivity.createResultData())
requireActivity().finishAfterTransition()
}
else -> Unit
}
}

View File

@@ -161,6 +161,7 @@ class MessageBackupsFlowViewModel(
fun goToNextStage() {
internalStateFlow.update {
when (it.stage) {
MessageBackupsStage.CANCEL -> error("Unsupported state transition from terminal state CANCEL")
MessageBackupsStage.EDUCATION -> it.copy(stage = MessageBackupsStage.BACKUP_KEY_EDUCATION)
MessageBackupsStage.BACKUP_KEY_EDUCATION -> it.copy(stage = MessageBackupsStage.BACKUP_KEY_RECORD)
MessageBackupsStage.BACKUP_KEY_RECORD -> it.copy(stage = MessageBackupsStage.TYPE_SELECTION)
@@ -178,10 +179,11 @@ class MessageBackupsFlowViewModel(
fun goToPreviousStage() {
internalStateFlow.update {
if (it.stage == it.startScreen) {
it.copy(stage = MessageBackupsStage.COMPLETED)
it.copy(stage = MessageBackupsStage.CANCEL)
} else {
val previousScreen = when (it.stage) {
MessageBackupsStage.EDUCATION -> MessageBackupsStage.COMPLETED
MessageBackupsStage.CANCEL -> error("Unsupported state transition from terminal state CANCEL")
MessageBackupsStage.EDUCATION -> MessageBackupsStage.CANCEL
MessageBackupsStage.BACKUP_KEY_EDUCATION -> MessageBackupsStage.EDUCATION
MessageBackupsStage.BACKUP_KEY_RECORD -> MessageBackupsStage.BACKUP_KEY_EDUCATION
MessageBackupsStage.TYPE_SELECTION -> MessageBackupsStage.BACKUP_KEY_RECORD

View File

@@ -11,6 +11,7 @@ package org.thoughtcrime.securesms.backup.v2.ui.subscription
enum class MessageBackupsStage(
val route: Route
) {
CANCEL(route = Route.CANCEL),
EDUCATION(route = Route.EDUCATION),
BACKUP_KEY_EDUCATION(route = Route.BACKUP_KEY_EDUCATION),
BACKUP_KEY_RECORD(route = Route.BACKUP_KEY_RECORD),
@@ -26,6 +27,7 @@ enum class MessageBackupsStage(
* Compose navigation route to display while in a given stage.
*/
enum class Route {
CANCEL,
EDUCATION,
BACKUP_KEY_EDUCATION,
BACKUP_KEY_RECORD,