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 c3a352b2c3..93c54eeefa 100644 --- a/app/src/main/java/com/tangem/tap/common/DialogManager.kt +++ b/app/src/main/java/com/tangem/tap/common/DialogManager.kt @@ -14,10 +14,9 @@ import com.tangem.tap.features.details.ui.walletconnect.dialogs.ClipboardOrScanQ import com.tangem.tap.features.details.ui.walletconnect.dialogs.PersonalSignDialog import com.tangem.tap.features.details.ui.walletconnect.dialogs.TransactionDialog 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.OnboardingDialog +import com.tangem.tap.features.onboarding.products.twins.ui.dialog.TwinningProcessNotCompletedDialog 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.PutVisaCardDialog @@ -75,7 +74,7 @@ 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(context) + is OnboardingDialog.TwinningProcessNotCompleted -> TwinningProcessNotCompletedDialog.create(context) is OnboardingDialog.InterruptOnboarding -> InterruptOnboardingDialog.create(context, state.dialog) is WalletConnectDialog.UnsupportedCard -> SimpleAlertDialog.create( diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingDialog.kt new file mode 100644 index 0000000000..7773489a2f --- /dev/null +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingDialog.kt @@ -0,0 +1,12 @@ +package com.tangem.tap.features.onboarding + +import com.tangem.common.extensions.VoidCallback +import com.tangem.tap.common.redux.StateDialog + +/** +[REDACTED_AUTHOR] + */ +sealed class OnboardingDialog : StateDialog { + object TwinningProcessNotCompleted : OnboardingDialog() + data class InterruptOnboarding(val onOk: VoidCallback) : OnboardingDialog() +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt index 9314199111..169e5dfb7f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteMiddleware.kt @@ -23,8 +23,8 @@ import com.tangem.tap.domain.TapError import com.tangem.tap.domain.extensions.makePrimaryWalletManager import com.tangem.tap.features.demo.DemoHelper import com.tangem.tap.features.home.RUSSIA_COUNTRY_CODE +import com.tangem.tap.features.onboarding.OnboardingDialog import com.tangem.tap.features.onboarding.OnboardingHelper -import com.tangem.tap.features.onboarding.products.wallet.redux.OnboardingDialog import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.tap.features.wallet.redux.WalletAction diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt index 8b25bf8e00..bdd6ac9917 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsAction.kt @@ -5,7 +5,6 @@ import com.tangem.blockchain.common.WalletManager import com.tangem.common.extensions.VoidCallback import com.tangem.domain.common.ScanResponse import com.tangem.tap.common.AssetReader -import com.tangem.tap.common.redux.StateDialog import com.tangem.tap.domain.TapError import com.tangem.tap.domain.twins.TwinCardsManager import com.tangem.tap.features.onboarding.OnboardingWalletBalance @@ -28,13 +27,6 @@ sealed class TwinCardsAction : Action { } sealed class Wallet : TwinCardsAction() { - data class HandleOnBackPressed( - // this is necessary for the correct animation of the return of cards to the Home screen - val shouldResetTwinCardsWidget: (should: Boolean, popAction: VoidCallback) -> Unit - ) : TwinCardsAction() - - data class ShowInterruptDialog(val onOk: VoidCallback) : TwinCardsAction(), StateDialog - data class LaunchFirstStep(val initialMessage: Message, val reader: AssetReader) : TwinCardsAction() data class LaunchSecondStep( val initialMessage: Message, @@ -52,6 +44,11 @@ sealed class TwinCardsAction : Action { data class SetWalletManager(val walletManager: WalletManager) : TwinCardsAction() object Done : TwinCardsAction() + data class OnBackPressed( + // this is necessary for the correct animation of the return of cards to the Home screen + val shouldResetTwinCardsWidget: (should: Boolean, popAction: VoidCallback) -> Unit, + ) : TwinCardsAction() + data class SaveScannedTwinCardAndNavigateToWallet( val scanResponse: ScanResponse, ) : TwinCardsAction() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt index f378c7080f..df7d042f2b 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsMiddleware.kt @@ -27,8 +27,8 @@ import com.tangem.tap.domain.extensions.makePrimaryWalletManager import com.tangem.tap.domain.model.builders.UserWalletIdBuilder import com.tangem.tap.domain.twins.TwinCardsManager import com.tangem.tap.features.home.RUSSIA_COUNTRY_CODE +import com.tangem.tap.features.onboarding.OnboardingDialog import com.tangem.tap.features.onboarding.OnboardingHelper -import com.tangem.tap.features.home.RUSSIA_COUNTRY_CODE import com.tangem.tap.features.wallet.models.Currency import com.tangem.tap.features.wallet.redux.ProgressState import com.tangem.tap.features.wallet.redux.WalletAction @@ -121,27 +121,6 @@ private fun handle(action: Action, dispatch: DispatchFunction) { } } } - is TwinCardsAction.Wallet.HandleOnBackPressed -> { - val shouldReturnCardBack = twinCardsState.mode == CreateTwinWalletMode.CreateWallet && - twinCardsState.currentStep != TwinCardsStep.TopUpWallet && - twinCardsState.currentStep != TwinCardsStep.Done - - if (twinCardsState.showAlert) { - val onInterruptPrompt = { - store.dispatch(TwinCardsAction.CardsManager.Release) - action.shouldResetTwinCardsWidget(shouldReturnCardBack) { - store.dispatch(NavigationAction.PopBackTo(AppScreen.Home)) - } - } - val stateDialog = TwinCardsAction.Wallet.ShowInterruptDialog(onInterruptPrompt) - store.dispatchDialogShow(stateDialog) - } else { - store.dispatch(TwinCardsAction.CardsManager.Release) - action.shouldResetTwinCardsWidget(shouldReturnCardBack) { - store.dispatch(NavigationAction.PopBackTo()) - } - } - } is TwinCardsAction.SetStepOfScreen -> { when (action.step) { is TwinCardsStep.WelcomeOnly, TwinCardsStep.Welcome -> { @@ -332,6 +311,23 @@ private fun handle(action: Action, dispatch: DispatchFunction) { scanResponse = action.scanResponse, ) } + is TwinCardsAction.OnBackPressed -> { + if (twinCardsState.twinningInProgress) { + store.dispatchDialogShow(OnboardingDialog.TwinningProcessNotCompleted) + } else { + val onOkCallback = { + val shouldReturnCardBack = twinCardsState.mode == CreateTwinWalletMode.CreateWallet && + twinCardsState.currentStep != TwinCardsStep.TopUpWallet && + twinCardsState.currentStep != TwinCardsStep.Done + + store.dispatch(TwinCardsAction.CardsManager.Release) + action.shouldResetTwinCardsWidget(shouldReturnCardBack) { + store.dispatch(NavigationAction.PopBackTo(AppScreen.Home)) + } + } + store.dispatchDialogShow(OnboardingDialog.InterruptOnboarding(onOkCallback)) + } + } else -> Unit } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsState.kt index 0e1078584e..88f9e5d82d 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/redux/TwinCardsState.kt @@ -39,21 +39,21 @@ data class TwinCardsState( TwinCardsStep.CreateSecondWallet, TwinCardsStep.CreateThirdWallet, TwinCardsStep.TopUpWallet, - TwinCardsStep.Done + TwinCardsStep.Done, ) CreateTwinWalletMode.RecreateWallet -> listOf( TwinCardsStep.None, TwinCardsStep.CreateFirstWallet, TwinCardsStep.CreateSecondWallet, TwinCardsStep.CreateThirdWallet, - TwinCardsStep.Done + TwinCardsStep.Done, ) } val progress: Int get() = steps.indexOf(currentStep) - val showAlert: Boolean + val twinningInProgress: Boolean get() = currentStep == TwinCardsStep.CreateSecondWallet || currentStep == TwinCardsStep.CreateThirdWallet val isBuyAllowed: Boolean by ReadOnlyProperty { _, _ -> diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt index aa307a448d..56f0d949ce 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/TwinsCardsFragment.kt @@ -408,7 +408,7 @@ class TwinsCardsFragment : BaseOnboardingFragment() { override fun handleOnBackPressed() { store.dispatch( - TwinCardsAction.Wallet.HandleOnBackPressed { should, popAction -> + TwinCardsAction.OnBackPressed { should, popAction -> store.dispatch(TwinCardsAction.Confetti.Hide) showConfetti(false) if (should) switchToCard(TwinCardNumber.First, true, popAction) else popAction() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/CreateWalletInterruptDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/TwinningProcessNotCompletedDialog.kt similarity index 94% rename from app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/CreateWalletInterruptDialog.kt rename to app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/TwinningProcessNotCompletedDialog.kt index 72a7ae7f2e..2a074debb7 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/CreateWalletInterruptDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/dialog/TwinningProcessNotCompletedDialog.kt @@ -10,7 +10,7 @@ import com.tangem.wallet.R /** [REDACTED_AUTHOR] */ -object CreateWalletInterruptDialog { +object TwinningProcessNotCompletedDialog { fun create(context: Context): AlertDialog { return MaterialAlertDialogBuilder(context) .setMessage(R.string.onboarding_twin_exit_warning) 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 8b7db136ec..e240879094 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,6 +22,7 @@ import com.tangem.tap.common.redux.navigation.NavigationAction 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.OnboardingDialog import com.tangem.tap.features.onboarding.OnboardingHelper import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.OnboardingSaltPayAction import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.OnboardingSaltPayState 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 f678ff716e..64af52ecac 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 @@ -3,7 +3,6 @@ package com.tangem.tap.features.onboarding.products.wallet.redux import android.graphics.Bitmap import android.net.Uri 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 @@ -108,10 +107,6 @@ sealed class BackupStep { object Finished : BackupStep() } -sealed class OnboardingDialog : StateDialog { - data class InterruptOnboarding(val onOk: VoidCallback) : BackupDialog() -} - sealed class BackupDialog : StateDialog { object AddMoreBackupCards : BackupDialog() object BackupInProgress : BackupDialog() diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt index 1636675ae1..b99b55d05f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/dialog/InterruptOnboardingDialog.kt @@ -4,7 +4,7 @@ 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.features.onboarding.OnboardingDialog import com.tangem.tap.store import com.tangem.wallet.R