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