diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt index ce2c8784a8..6b536fc754 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletAction.kt @@ -65,6 +65,7 @@ sealed class BackupAction : Action { object StartAddingBackupCards : BackupAction() object AddBackupCard : BackupAction() { object Success : BackupAction() + data class ChangeButtonLoading(val isLoading: Boolean) : BackupAction() } object FinishAddingBackupCards : BackupAction() 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 3e602349e8..2a4ca101c4 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 @@ -395,11 +395,12 @@ private fun handleBackupAction(appState: () -> AppState?, action: BackupAction) } } is BackupAction.AddBackupCard -> { + store.dispatchOnMain(BackupAction.AddBackupCard.ChangeButtonLoading(true)) backupService.addBackupCard { result -> backupService.skipCompatibilityChecks = false store.state.daggerGraphState.get(DaggerGraphState::cardSdkConfigRepository).sdk .config.filter.cardIdFilter = null - + store.dispatchOnMain(BackupAction.AddBackupCard.ChangeButtonLoading(false)) when (result) { is CompletionResult.Success -> { store.dispatchOnMain(BackupAction.AddBackupCard.Success) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletReducer.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletReducer.kt index 1e6dc646b8..61bee3be0f 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/redux/OnboardingWalletReducer.kt @@ -81,6 +81,7 @@ private object BackupReducer { BackupAction.StartAddingPrimaryCard -> state.copy(backupStep = BackupStep.ScanOriginCard) BackupAction.StartAddingBackupCards -> state.copy(backupStep = BackupStep.AddBackupCards) BackupAction.AddBackupCard.Success -> state.copy(backupCardsNumber = state.backupCardsNumber + 1) + is BackupAction.AddBackupCard.ChangeButtonLoading -> state.copy(showBtnLoading = action.isLoading) BackupAction.ShowAccessCodeInfoScreen -> state.copy(backupStep = BackupStep.SetAccessCode) BackupAction.ShowEnterAccessCodeScreen -> state.copy( backupStep = BackupStep.EnterAccessCode, 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 508e40db10..0920fb4a9b 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 @@ -69,6 +69,7 @@ data class BackupState( val maxBackupCards: Int = 2, val canSkipBackup: Boolean = true, val isInterruptedBackup: Boolean = false, + val showBtnLoading: Boolean = false, ) enum class AccessCodeError { diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt index fa12a0f3d5..9a08513cdb 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/ui/OnboardingWalletFragment.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.onboarding.products.wallet.ui +import android.content.res.ColorStateList import android.net.Uri import android.os.Bundle import android.util.TypedValue @@ -296,10 +297,26 @@ class OnboardingWalletFragment : layoutButtonsAddCards.root.show() layoutButtonsCommon.root.hide() - layoutButtonsAddCards.btnAddCard.text = getText(R.string.onboarding_button_add_backup_card) layoutButtonsAddCards.btnAddCard.setIconResource(R.drawable.ic_tangem_24) + if (state.showBtnLoading) { + layoutButtonsAddCards.btnAddCard.iconTint = ColorStateList.valueOf( + resources.getColor(R.color.button_secondary), + ) + layoutButtonsAddCards.btnAddCard.text = "" + layoutButtonsAddCards.btnAddCard.isEnabled = false + layoutButtonsAddCards.btnProgress.show() + } else { + layoutButtonsAddCards.btnAddCard.iconTint = ColorStateList.valueOf( + resources.getColor(R.color.icon_primary_1), + ) + layoutButtonsAddCards.btnProgress.hide() + layoutButtonsAddCards.btnAddCard.text = getText(R.string.onboarding_button_add_backup_card) + layoutButtonsAddCards.btnAddCard.isEnabled = true + } if (state.backupCardsNumber < state.maxBackupCards) { - layoutButtonsAddCards.btnAddCard.setOnClickListener { store.dispatch(BackupAction.AddBackupCard) } + layoutButtonsAddCards.btnAddCard.setOnClickListener { + store.dispatch(BackupAction.AddBackupCard) + } } else { layoutButtonsAddCards.btnAddCard.isEnabled = false } diff --git a/app/src/main/res/layout/layout_onboarding_buttons_add_cards.xml b/app/src/main/res/layout/layout_onboarding_buttons_add_cards.xml index 505d485b6f..a6fd01cc5b 100644 --- a/app/src/main/res/layout/layout_onboarding_buttons_add_cards.xml +++ b/app/src/main/res/layout/layout_onboarding_buttons_add_cards.xml @@ -5,22 +5,37 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + app:layout_constraintStart_toStartOf="@id/btn_continue"> + + + + + #000000 #00000000 - d #FFFFFF #F0FFFF