diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingSaltPayHelper.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingSaltPayHelper.kt index 2c1dcfad4c..85142968b8 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingSaltPayHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingSaltPayHelper.kt @@ -6,7 +6,7 @@ import com.tangem.domain.common.extensions.successOr import com.tangem.tap.features.onboarding.products.wallet.saltPay.SaltPayActivationManager import com.tangem.tap.features.onboarding.products.wallet.saltPay.message.SaltPayActivationError import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.SaltPayActivationStep -import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.updateActivationStatus +import com.tangem.tap.features.onboarding.products.wallet.saltPay.redux.update /** [REDACTED_AUTHOR] @@ -19,8 +19,8 @@ class OnboardingSaltPayHelper { manager: SaltPayActivationManager, ): Result { return try { - val status = manager.updateActivationStatus(null).successOr { return it } - val isRegistrationCase = status.step != SaltPayActivationStep.Finished + val updatedStep = manager.update(null, null).successOr { return it } + val isRegistrationCase = updatedStep != SaltPayActivationStep.Finished val isBackupCase = scanResponse.card.backupStatus?.isActive == false Result.Success(isRegistrationCase || isBackupCase) } catch (ex: Exception) { @@ -30,12 +30,12 @@ class OnboardingSaltPayHelper { } } - suspend fun testProceedToOnboarding( + fun testProceedToOnboarding( scanResponse: ScanResponse, manager: SaltPayActivationManager, ): Result = Result.Success(true) - suspend fun testProceedToMainScreen( + fun testProceedToMainScreen( scanResponse: ScanResponse, manager: SaltPayActivationManager, ): Result = Result.Success(false) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt index 446fc6c2ca..3480a2d818 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt @@ -67,13 +67,13 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App val state = getState() scope.launch { - val updateResult = state.saltPayManager.updateActivationStatus(state.amountToClaim).successOr { + val updateStep = state.saltPayManager.update(state.step, state.amountToClaim).successOr { onException(it.error) return@launch } handleInProgress = false - dispatchOnMain(OnboardingSaltPayAction.SetStep(updateResult.step)) + dispatchOnMain(OnboardingSaltPayAction.SetStep(updateStep)) } } is OnboardingSaltPayAction.RegisterCard -> { @@ -246,40 +246,34 @@ fun handleAnalytics(analyticsHandler: GlobalAnalyticsEventHandler, step: SaltPay } } -data class UpdateResult( - val step: SaltPayActivationStep = SaltPayActivationStep.None, - val amountToClaim: Amount? = null, -) - -suspend fun SaltPayActivationManager.updateActivationStatus(amountToClaim: Amount?): Result { +suspend fun SaltPayActivationManager.update( + currentStep: SaltPayActivationStep?, + currentAmountToClaim: Amount?, +): Result { Timber.d("updateSaltPayStatus") - var updateResult = UpdateResult() - val saltPayStep = checkRegistration(this).successOr { + val step = checkRegistration(this).successOr { return Result.Failure(it.error) } - checkGasIfNeeded(this, saltPayStep).successOr { + checkGasIfNeeded(this, step).successOr { return Result.Failure(it.error) } - val fetchedAmountToClaim = getAmountToClaimIfNeeded(this, amountToClaim) - updateResult = when { - // if fetchedAmountToClaim = null -> then it already claimed - saltPayStep == SaltPayActivationStep.Claim && fetchedAmountToClaim == null -> { - updateResult.copy( - step = SaltPayActivationStep.Finished, - amountToClaim = fetchedAmountToClaim, - ) + val amountToClaim = getAmountToClaimIfNeeded(this, currentAmountToClaim) + + val processedStep = when { + step == SaltPayActivationStep.Claim && amountToClaim == null -> { + SaltPayActivationStep.Finished } - else -> updateResult.copy( - step = saltPayStep, - amountToClaim = fetchedAmountToClaim, - ) + step == SaltPayActivationStep.KycReject && currentStep == SaltPayActivationStep.KycReject -> { + SaltPayActivationStep.KycStart + } + else -> step } - Timber.d("updateSaltPayStatus: success: %s", updateResult) - return Result.Success(updateResult) + Timber.d("update: success: %s", processedStep) + return Result.Success(processedStep) } private suspend fun getAmountToClaimIfNeeded( diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/ui/OnboardingSaltPayView.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/ui/OnboardingSaltPayView.kt index a40ace3b49..6552fbd9d5 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/ui/OnboardingSaltPayView.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/ui/OnboardingSaltPayView.kt @@ -240,7 +240,7 @@ internal class OnboardingSaltPayView( btnOpenSupportChat.hide() btnKycAction.text = getString(R.string.onboarding_button_kyc_start) btnKycAction.setOnClickListener { - store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycStart)) + store.dispatch(OnboardingSaltPayAction.Update) } progressButton = SaltPayProgressButton(root) }