diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowFragment.kt index c19af70664..d59b17ac3d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowFragment.kt @@ -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 } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt index 44bed153c6..283b7d8c9b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsFlowViewModel.kt @@ -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 diff --git a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsStage.kt b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsStage.kt index 817ed42505..4a2de20819 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsStage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/backup/v2/ui/subscription/MessageBackupsStage.kt @@ -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,