From 7f4886eaf23ef84b676d2c20e08a6d34e9c3e40d Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 16 Dec 2022 09:58:29 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/tap/common/DialogManager.kt | 14 +++-- .../redux/OnboardingWalletMiddleware.kt | 53 +++++++++---------- .../wallet/redux/OnboardingWalletState.kt | 13 +++-- ...Dialog.kt => InterruptOnboardingDialog.kt} | 7 +-- .../wallet/saltPay/dialog/SaltPayDialog.kt | 2 - 5 files changed, 44 insertions(+), 45 deletions(-) rename app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/{TryToInterruptRegistrationDialog.kt => InterruptOnboardingDialog.kt} (79%) diff --git a/app/src/main/java/com/tangem/tap/common/DialogManager.kt b/app/src/main/java/com/tangem/tap/common/DialogManager.kt index f25d1ddf4c..94dd3ff6c1 100644 --- a/app/src/main/java/com/tangem/tap/common/DialogManager.kt +++ b/app/src/main/java/com/tangem/tap/common/DialogManager.kt @@ -17,10 +17,11 @@ import com.tangem.tap.features.onboarding.AddressInfoBottomSheetDialog import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsAction import com.tangem.tap.features.onboarding.products.twins.ui.dialog.CreateWalletInterruptDialog import com.tangem.tap.features.onboarding.products.wallet.redux.BackupDialog +import com.tangem.tap.features.onboarding.products.wallet.redux.OnboardingDialog +import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.InterruptOnboardingDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.NoFundsForActivationDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.RegistrationErrorDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.SaltPayDialog -import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.TryToInterruptRegistrationDialog import com.tangem.tap.features.onboarding.products.wallet.ui.dialogs.AddMoreBackupCardsDialog import com.tangem.tap.features.onboarding.products.wallet.ui.dialogs.BackupInProgressDialog import com.tangem.tap.features.onboarding.products.wallet.ui.dialogs.ConfirmDiscardingBackupDialog @@ -72,8 +73,8 @@ class DialogManager : StoreSubscriber { is AppDialog.ScanFailsDialog -> ScanFailsDialog.create(context) is AppDialog.AddressInfoDialog -> AddressInfoBottomSheetDialog(state.dialog, context) is AppDialog.TestActionsDialog -> TestActionsBottomSheetDialog(state.dialog, context) - is TwinCardsAction.Wallet.ShowInterruptDialog -> - CreateWalletInterruptDialog.create(state.dialog, context) + is TwinCardsAction.Wallet.ShowInterruptDialog -> CreateWalletInterruptDialog.create(state.dialog, context) + is OnboardingDialog.InterruptOnboarding -> InterruptOnboardingDialog.create(context, state.dialog) is WalletConnectDialog.UnsupportedCard -> SimpleAlertDialog.create( titleRes = R.string.wallet_connect_title, @@ -109,10 +110,8 @@ class DialogManager : StoreSubscriber { ChooseNetworkDialog.create(state.dialog.session, state.dialog.networks, context) is WalletConnectDialog.ClipboardOrScanQr -> ClipboardOrScanQrDialog.create(state.dialog.clipboardUri, context) - is WalletConnectDialog.RequestTransaction -> - TransactionDialog.create(state.dialog.dialogData, context) - is WalletConnectDialog.PersonalSign -> - PersonalSignDialog.create(state.dialog.data, context) + is WalletConnectDialog.RequestTransaction -> TransactionDialog.create(state.dialog.dialogData, context) + is WalletConnectDialog.PersonalSign -> PersonalSignDialog.create(state.dialog.data, context) is WalletConnectDialog.BnbTransactionDialog -> BnbTransactionDialog.create( data = state.dialog.data, @@ -132,7 +131,6 @@ class DialogManager : StoreSubscriber { is BackupDialog.UnfinishedBackupFound -> UnfinishedBackupFoundDialog.create(context) is BackupDialog.ConfirmDiscardingBackup -> ConfirmDiscardingBackupDialog.create(context) is SaltPayDialog.Activation.NoGas -> NoFundsForActivationDialog.create(context) - is SaltPayDialog.Activation.TryToInterrupt -> TryToInterruptRegistrationDialog.create(context, state.dialog) is SaltPayDialog.Activation.OnError -> RegistrationErrorDialog.create(context, state.dialog) is WalletDialog.CurrencySelectionDialog -> CurrencySelectionDialog.create(state.dialog, context) is WalletDialog.ChooseTradeActionDialog -> ChooseTradeActionBottomSheetDialog(context) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt index 37e629800a..c199ac3195 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletMiddleware.kt @@ -22,7 +22,6 @@ import com.tangem.tap.domain.tokens.models.BlockchainNetwork import com.tangem.tap.features.demo.DemoHelper import com.tangem.tap.features.home.redux.HomeAction import com.tangem.tap.features.onboarding.OnboardingHelper -import com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog.SaltPayDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.OnboardingSaltPayAction import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.OnboardingSaltPayState import com.tangem.tap.features.wallet.redux.Artwork @@ -188,12 +187,7 @@ private fun handleWalletAction(action: Action, state: () -> AppState?, dispatch: } newAction?.let { store.dispatch(it) } } - OnboardingWalletAction.OnBackPressed -> { - when { - onboardingWalletState.isSaltPay -> handleOnBackPressedSaltPay(onboardingWalletState) - else -> handleOnBackPressed(onboardingWalletState) - } - } + OnboardingWalletAction.OnBackPressed -> handleOnBackPressed(onboardingWalletState) } } @@ -408,30 +402,33 @@ private fun initSaltPayOnBackupFinishedIfNeeded( } } -private fun handleOnBackPressedSaltPay(state: OnboardingWalletState) { +private fun handleOnBackPressed(state: OnboardingWalletState) { when (state.backupState.backupStep) { - BackupStep.Finished -> { - store.dispatchDialogShow( - SaltPayDialog.Activation.TryToInterrupt( - onOk = { store.dispatch(NavigationAction.PopBackTo()) }, - onCancel = { /* do nothing */ }, - ), - ) + BackupStep.InitBackup, BackupStep.ScanOriginCard, BackupStep.AddBackupCards, BackupStep.EnterAccessCode, + BackupStep.ReenterAccessCode, BackupStep.SetAccessCode, BackupStep.WritePrimaryCard, + -> { + showInterruptOnboardingDialog() + } + is BackupStep.WriteBackupCard -> { + store.dispatch(GlobalAction.ShowDialog(BackupDialog.BackupInProgress)) + } + BackupStep.Finished -> { + if (state.isSaltPay) { + showInterruptOnboardingDialog() + } else { + store.dispatch(NavigationAction.PopBackTo()) + } } - else -> handleOnBackPressed(state) } } -private fun handleOnBackPressed(state: OnboardingWalletState) { - when (state.backupState.backupStep) { - BackupStep.InitBackup, BackupStep.Finished -> store.dispatch(NavigationAction.PopBackTo()) - BackupStep.ScanOriginCard, BackupStep.AddBackupCards, BackupStep.EnterAccessCode, - BackupStep.ReenterAccessCode, BackupStep.SetAccessCode, BackupStep.WritePrimaryCard, - -> { - store.dispatch(BackupAction.DiscardBackup) - store.dispatch(NavigationAction.PopBackTo()) - } - is BackupStep.WriteBackupCard -> - store.dispatch(GlobalAction.ShowDialog(BackupDialog.BackupInProgress)) - } +private fun showInterruptOnboardingDialog() { + store.dispatchDialogShow( + OnboardingDialog.InterruptOnboarding( + onOk = { + store.dispatch(BackupAction.DiscardBackup) + store.dispatch(NavigationAction.PopBackTo()) + }, + ), + ) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletState.kt index 6fc233d092..aa04272085 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletState.kt @@ -2,6 +2,7 @@ package com.tangem.tap.features.onboarding.products.wallet.redux import android.graphics.Bitmap import com.tangem.common.CardFilter +import com.tangem.common.extensions.VoidCallback import com.tangem.domain.common.SaltPayWorkaround import com.tangem.tap.common.redux.StateDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.OnboardingSaltPayState @@ -104,9 +105,13 @@ sealed class BackupStep { object Finished : BackupStep() } +sealed class OnboardingDialog: StateDialog { + data class InterruptOnboarding(val onOk: VoidCallback) : BackupDialog() +} + sealed class BackupDialog : StateDialog { - object AddMoreBackupCards : StateDialog - object BackupInProgress : StateDialog - object UnfinishedBackupFound : StateDialog - object ConfirmDiscardingBackup : StateDialog + object AddMoreBackupCards : BackupDialog() + object BackupInProgress : BackupDialog() + object UnfinishedBackupFound : BackupDialog() + object ConfirmDiscardingBackup : BackupDialog() } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/TryToInterruptRegistrationDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt similarity index 79% rename from app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/TryToInterruptRegistrationDialog.kt rename to app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt index 6f02df9120..1636675ae1 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/TryToInterruptRegistrationDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt @@ -4,20 +4,21 @@ import android.app.Dialog import android.content.Context import androidx.appcompat.app.AlertDialog import com.tangem.tap.common.extensions.dispatchDialogHide +import com.tangem.tap.features.onboarding.products.wallet.redux.OnboardingDialog import com.tangem.tap.store import com.tangem.wallet.R /** [REDACTED_AUTHOR] */ -class TryToInterruptRegistrationDialog { +class InterruptOnboardingDialog { companion object { - fun create(context: Context, dialog: SaltPayDialog.Activation.TryToInterrupt): Dialog { + fun create(context: Context, dialog: OnboardingDialog.InterruptOnboarding): Dialog { return AlertDialog.Builder(context).apply { setTitle(context.getString(R.string.onboarding_exit_alert_title)) setMessage(context.getString(R.string.onboarding_exit_alert_message)) setPositiveButton(R.string.common_ok) { _, _ -> dialog.onOk() } - setNegativeButton(R.string.common_cancel) { _, _ -> dialog.onCancel() } + setNegativeButton(R.string.common_cancel) { _, _ -> } setOnDismissListener { store.dispatchDialogHide() } setCancelable(false) }.create() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/SaltPayDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/SaltPayDialog.kt index fda1331a37..b8b512aef1 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/SaltPayDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/SaltPayDialog.kt @@ -1,6 +1,5 @@ package com.tangem.tap.features.onboarding.products.wallet.saltPay.dialog -import com.tangem.common.extensions.VoidCallback import com.tangem.tap.common.redux.StateDialog import com.tangem.tap.features.onboarding.products.wallet.saltPay.message.SaltPayActivationError @@ -11,6 +10,5 @@ sealed class SaltPayDialog : StateDialog { sealed class Activation : SaltPayDialog() { object NoGas : SaltPayDialog() data class OnError(val error: SaltPayActivationError) : SaltPayDialog() - data class TryToInterrupt(val onOk: VoidCallback, val onCancel: VoidCallback) : SaltPayDialog() } } \ No newline at end of file