From 00e8689adaf079e004ff80e0105300972e4e8381 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 20:41:41 +0500 Subject: [PATCH 01/13] Updated on 2026-08-14 --- .../saltPay/SaltPayActivationManager.kt | 15 +--- .../saltPay/redux/OnboardingSaltPayState.kt | 5 -- .../tap/persistence/PreferencesStorage.kt | 2 - .../SaltPayActivationPrefStorage.kt | 82 ------------------- 4 files changed, 1 insertion(+), 103 deletions(-) delete mode 100644 app/src/main/java/com/tangem/tap/persistence/SaltPayActivationPrefStorage.kt diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt index d7e5ff80f7..9080c00383 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt @@ -21,7 +21,6 @@ import com.tangem.tap.common.extensions.safeUpdate import com.tangem.tap.domain.getFirstToken import com.tangem.tap.domain.tokens.UserWalletId import com.tangem.tap.features.onboarding.products.wallet.saltPay.message.SaltPayActivationError -import com.tangem.tap.persistence.SaltPayActivationStorage import java.math.BigDecimal /** @@ -34,7 +33,6 @@ class SaltPayActivationManager( private val kycProvider: KYCProvider, private val paymentologyService: PaymentologyApiService, private val gnosisRegistrator: GnosisRegistrator, - private val registrationStorage: SaltPayActivationStorage, ) { val kycUrlProvider = KYCUrlProvider(walletPublicKey, kycProvider) @@ -43,10 +41,6 @@ class SaltPayActivationManager( private val spendLimitValue: BigDecimal = BigDecimal("100") - fun transactionIsSent(): Boolean { - return registrationStorage.data.transactionsSent - } - suspend fun checkHasGas(): Result { return when (val hasGasResult = gnosisRegistrator.checkHasGas()) { is com.tangem.blockchain.extensions.Result.Success -> if (hasGasResult.data) { @@ -103,13 +97,7 @@ class SaltPayActivationManager( pin = pinCode, ) - val result = paymentologyService.registerWallet(request) - - registrationStorage.data = registrationStorage.data.copy( - transactionsSent = result is Result.Success, - ) - - return result + return paymentologyService.registerWallet(request) } suspend fun getAmountToClaim(): Result { @@ -166,7 +154,6 @@ class SaltPayActivationManager( kycProvider = SaltPayConfig.stub().kycProvider, paymentologyService = PaymentologyApiService.stub(), gnosisRegistrator = GnosisRegistrator.stub(), - registrationStorage = SaltPayActivationStorage.stub(), cardId = "", cardPublicKey = byteArrayOf(), walletPublicKey = byteArrayOf(), diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayState.kt index 419c8fb750..64d23417bd 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/redux/OnboardingSaltPayState.kt @@ -17,8 +17,6 @@ import com.tangem.tap.features.onboarding.products.wallet.saltPay.KYCProvider import com.tangem.tap.features.onboarding.products.wallet.saltPay.SaltPayActivationManager import com.tangem.tap.features.onboarding.products.wallet.saltPay.SaltPayConfig import com.tangem.tap.features.wallet.redux.ProgressState -import com.tangem.tap.persistence.SaltPayActivationStorage -import com.tangem.tap.preferencesStorage import com.tangem.tap.store import java.math.BigDecimal @@ -60,7 +58,6 @@ data class OnboardingSaltPayState( scanResponse = scanResponse, gnosisRegistrator = gnosisRegistrator, paymentologyService = store.state.domainNetworks.paymentologyService, - registrationStorage = preferencesStorage.saltPayActivationStorage, kycProvider = saltPayConfig.kycProvider, ) test(scanResponse, gnosisRegistrator) @@ -83,7 +80,6 @@ data class OnboardingSaltPayState( scanResponse: ScanResponse, gnosisRegistrator: GnosisRegistrator, paymentologyService: PaymentologyApiService, - registrationStorage: SaltPayActivationStorage, kycProvider: KYCProvider, ): SaltPayActivationManager { if (!scanResponse.isSaltPay()) { @@ -100,7 +96,6 @@ data class OnboardingSaltPayState( kycProvider = kycProvider, paymentologyService = paymentologyService, gnosisRegistrator = gnosisRegistrator, - registrationStorage = registrationStorage, ) } diff --git a/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt b/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt index 1fad689559..fad5cd8acd 100644 --- a/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt +++ b/app/src/main/java/com/tangem/tap/persistence/PreferencesStorage.kt @@ -15,7 +15,6 @@ class PreferencesStorage(applicationContext: Application) { val appRatingLaunchObserver: AppRatingLaunchObserver val usedCardsPrefStorage: UsedCardsPrefStorage val fiatCurrenciesPrefStorage: FiatCurrenciesPrefStorage - val saltPayActivationStorage: SaltPayActivationStorage val disclaimerPrefStorage: DisclaimerPrefStorage init { @@ -25,7 +24,6 @@ class PreferencesStorage(applicationContext: Application) { usedCardsPrefStorage.migrate() fiatCurrenciesPrefStorage = FiatCurrenciesPrefStorage(preferences, MoshiJsonConverter.INSTANCE) fiatCurrenciesPrefStorage.migrate() - saltPayActivationStorage = SaltPayActivationPrefStorage(applicationContext, MoshiJsonConverter.INSTANCE) disclaimerPrefStorage = DisclaimerPrefStorage(preferences) } diff --git a/app/src/main/java/com/tangem/tap/persistence/SaltPayActivationPrefStorage.kt b/app/src/main/java/com/tangem/tap/persistence/SaltPayActivationPrefStorage.kt deleted file mode 100644 index 9bfbddc594..0000000000 --- a/app/src/main/java/com/tangem/tap/persistence/SaltPayActivationPrefStorage.kt +++ /dev/null @@ -1,82 +0,0 @@ -package com.tangem.tap.persistence - -import android.content.Context -import androidx.core.content.edit -import at.favre.lib.armadillo.ArmadilloSharedPreferences -import com.tangem.common.json.MoshiJsonConverter -import com.tangem.common.services.secure.SecureStorage -import com.tangem.tangem_sdk_new.storage.createEncryptedSharedPreferences - -/** -[REDACTED_AUTHOR] - */ -interface SaltPayActivationStorage { - var data: SaltPayActivationData - - fun reset() - - companion object { - fun stub(): SaltPayActivationStorage = object : SaltPayActivationStorage { - override var data: SaltPayActivationData = SaltPayActivationData() - override fun reset() {} - } - } -} - -data class SaltPayActivationData( - val transactionsSent: Boolean = false, -) - -class SaltPayActivationPrefStorage( - context: Context, - private val converter: MoshiJsonConverter, -) : SaltPayActivationStorage { - - private val storage: ArmadilloSharedPreferences = SecureStorage.createEncryptedSharedPreferences( - context = context, - storageName = "saltpay", - ) - - private var isFetching: Boolean = false - - init { - fetch() - } - - override var data: SaltPayActivationData = SaltPayActivationData() - set(value) { - field = value - if (!isFetching) save() - } - - override fun reset() { - storage.edit(true) { - this.remove(REGISTRATION_DATA_KEY) - data = SaltPayActivationData() - } - } - - private fun save() { - storage.edit(true) { - putString(REGISTRATION_DATA_KEY, converter.toJson(data)) - } - } - - private fun fetch(): SaltPayActivationData { - isFetching = true - - val jsonData = storage.getString(REGISTRATION_DATA_KEY, null) - data = if (jsonData == null) { - SaltPayActivationData() - } else { - converter.fromJson(jsonData) ?: SaltPayActivationData() - } - isFetching = false - - return data - } - - companion object { - private const val REGISTRATION_DATA_KEY = "saltpay_registration_data" - } -} \ No newline at end of file From b5ddd53157555e07f47fe2c86deec3fe5a708fbe Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 20:46:43 +0500 Subject: [PATCH 02/13] Updated on 2026-08-14 --- .../products/wallet/saltPay/ui/OnboardingSaltPayView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6552fbd9d5..a40ace3b49 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.Update) + store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycStart)) } progressButton = SaltPayProgressButton(root) } From 3a35d3af513810a2f06101b4e9f251b74ea1fbdb Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 20:47:25 +0500 Subject: [PATCH 03/13] Updated on 2026-08-14 --- .../wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) 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 af4a354e4b..2141bea51c 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 @@ -317,10 +317,7 @@ private suspend fun checkGasIfNeeded( step: SaltPayActivationStep, ): Result { Timber.d("checkGasIfNeeded: for step: %s", step) - if (step == SaltPayActivationStep.KycStart || - step == SaltPayActivationStep.KycWaiting || - step == SaltPayActivationStep.Finished - ) { + if (step.ordinal >= SaltPayActivationStep.KycIntro.ordinal) { Timber.d("checkGasIfNeeded: no need to check for step: %s", step) return Result.Success(Unit) } From 9a8dd8b4b471b34ddfe5d912f67fcc841aaa2c03 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 20:48:04 +0500 Subject: [PATCH 04/13] Updated on 2026-08-14 --- .../wallet/saltPay/redux/OnboardingSaltPayMiddleware.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 2141bea51c..9678e9161e 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 @@ -383,7 +383,7 @@ fun RegistrationResponse.Item.toSaltPayStep(): SaltPayActivationStep { kycStatus != null -> { when (kycStatus) { - KYCStatus.NOT_STARTED, KYCStatus.STARTED -> SaltPayActivationStep.KycStart + KYCStatus.NOT_STARTED, KYCStatus.STARTED -> SaltPayActivationStep.KycIntro KYCStatus.WAITING_FOR_APPROVAL -> SaltPayActivationStep.KycWaiting KYCStatus.CORRECTION_REQUESTED, KYCStatus.REJECTED -> SaltPayActivationStep.KycReject KYCStatus.APPROVED -> SaltPayActivationStep.Claim From f45ce626b91efe436438783ab16428b1593f3102 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 21:35:45 +0500 Subject: [PATCH 05/13] Updated on 2026-08-14 --- .../common/analytics/api/EventHandlerApi.kt | 21 ++++++++++++++++++- .../amplitude/AmplitudeAnalyticsHandler.kt | 11 ---------- .../appsFlyer/AppsFlyerAnalyticsHandler.kt | 11 ---------- .../firebase/FirebaseAnalyticsHandler.kt | 10 --------- 4 files changed, 20 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt b/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt index 0491d03b80..dce88977e6 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt @@ -7,6 +7,7 @@ import com.tangem.common.core.TangemSdkError import com.tangem.tap.common.analytics.AnalyticsAnOld import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.AnalyticsParamAnOld +import com.tangem.tap.common.analytics.events.AnalyticsEvent import com.tangem.tap.common.extensions.filterNotNull /** @@ -18,12 +19,26 @@ interface AnalyticsEventHandler { params: Map = emptyMap(), ) + fun handleAnalyticsEvent( + event: AnalyticsEvent, + card: Card? = null, + blockchain: String? = null, + ) { + handleEvent( + event = prepareEventString(event.category, event.event), + params = prepareParams(card, blockchain, event.params), + ) + } + + @Deprecated("Migrate to AnalyticsEvent") fun handleAnalyticsEvent( event: AnalyticsEventAnOld, params: Map = emptyMap(), card: Card? = null, blockchain: String? = null, - ) + ) { + handleEvent(event.event, prepareParams(card, blockchain, params)) + } fun prepareParams( card: Card?, @@ -34,6 +49,10 @@ interface AnalyticsEventHandler { AnalyticsParamAnOld.BATCH_ID.param to card?.batchId, AnalyticsParamAnOld.BLOCKCHAIN.param to blockchain, ).filterNotNull() + params + + fun prepareEventString(category: String, event: String): String { + return "[$category] $event" + } } interface ErrorEventHandler { diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt index dcc0930b4e..27132a1f61 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/amplitude/AmplitudeAnalyticsHandler.kt @@ -1,7 +1,5 @@ package com.tangem.tap.common.analytics.handlers.amplitude -import com.tangem.common.card.Card -import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.api.AnalyticsEventHandler class AmplitudeAnalyticsHandler( @@ -11,13 +9,4 @@ class AmplitudeAnalyticsHandler( override fun handleEvent(event: String, params: Map) { client.logEvent(event, params) } - - override fun handleAnalyticsEvent( - event: AnalyticsEventAnOld, - params: Map, - card: Card?, - blockchain: String?, - ) { - handleEvent(event.event, prepareParams(card, blockchain, params)) - } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsFlyer/AppsFlyerAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsFlyer/AppsFlyerAnalyticsHandler.kt index 42ddfb8925..0acfb1dc2f 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsFlyer/AppsFlyerAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/appsFlyer/AppsFlyerAnalyticsHandler.kt @@ -4,8 +4,6 @@ import com.appsflyer.AFInAppEventParameterName import com.appsflyer.AFInAppEventType import com.shopify.buy3.Storefront import com.tangem.common.Converter -import com.tangem.common.card.Card -import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.api.AnalyticsEventHandler import com.tangem.tap.common.analytics.api.ShopifyOrderEventHandler @@ -17,15 +15,6 @@ class AppsFlyerAnalyticsHandler( client.logEvent(event, params) } - override fun handleAnalyticsEvent( - event: AnalyticsEventAnOld, - params: Map, - card: Card?, - blockchain: String?, - ) { - handleEvent(event.event, prepareParams(card, blockchain, params)) - } - override fun handleShopifyOrderEvent(order: Storefront.Order) { handleEvent(ORDER_EVENT, OrderToParamsConverter().convert(order)) } diff --git a/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseAnalyticsHandler.kt index 08404f01f7..3ab6326670 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/handlers/firebase/FirebaseAnalyticsHandler.kt @@ -7,7 +7,6 @@ import com.tangem.common.Converter import com.tangem.common.card.Card import com.tangem.common.core.TangemSdkError import com.tangem.tap.common.analytics.AnalyticsAnOld -import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.AnalyticsParamAnOld import com.tangem.tap.common.analytics.api.AnalyticsEventHandler import com.tangem.tap.common.analytics.api.ErrorEventHandler @@ -24,15 +23,6 @@ class FirebaseAnalyticsHandler( client.logEvent(event, params) } - override fun handleAnalyticsEvent( - event: AnalyticsEventAnOld, - params: Map, - card: Card?, - blockchain: String?, - ) { - handleEvent(event.name, prepareParams(card, blockchain, params)) - } - override fun handleErrorEvent(error: Throwable, params: Map) { client.logErrorEvent(error, params) } From ff1c933a7bf0655d9b5760869c9f5fe2a88d7946 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 21:36:29 +0500 Subject: [PATCH 06/13] Updated on 2026-08-14 --- .../analytics/GlobalAnalyticsHandler.kt | 40 ++++++++++++++++++- .../tap/common/redux/global/GlobalState.kt | 2 +- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt index f80aacdc29..e51030526f 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt @@ -11,12 +11,42 @@ import com.tangem.tap.common.analytics.api.ErrorEventHandler import com.tangem.tap.common.analytics.api.ErrorEventLogger import com.tangem.tap.common.analytics.api.SdkErrorEventHandler import com.tangem.tap.common.analytics.api.ShopifyOrderEventHandler +import com.tangem.tap.common.analytics.events.AnalyticsEvent import com.tangem.tap.common.extensions.filterNotNull interface GlobalAnalyticsEventHandler : AnalyticsEventHandler, ErrorEventHandler, SdkErrorEventHandler, - ShopifyOrderEventHandler + ShopifyOrderEventHandler { + + companion object { + fun stub(): GlobalAnalyticsEventHandler { + return object : GlobalAnalyticsEventHandler { + override fun handleEvent(event: String, params: Map) {} + + override fun handleErrorEvent(error: Throwable, params: Map) {} + + override fun handleCardSdkErrorEvent( + error: TangemSdkError, + action: AnalyticsAnOld.ActionToLog, + params: Map, + card: Card?, + ) { + } + + override fun handleBlockchainSdkErrorEvent( + error: BlockchainError, + action: AnalyticsAnOld.ActionToLog, + params: Map, + card: Card?, + ) { + } + + override fun handleShopifyOrderEvent(order: Storefront.Order) {} + } + } + } +} class GlobalAnalyticsHandler( private val analyticsHandlers: List, @@ -26,6 +56,14 @@ class GlobalAnalyticsHandler( analyticsHandlers.forEach { it.handleEvent(event, params) } } + override fun handleAnalyticsEvent( + event: AnalyticsEvent, + card: Card?, + blockchain: String?, + ) { + analyticsHandlers.forEach { it.handleAnalyticsEvent(event, card, blockchain) } + } + override fun handleAnalyticsEvent( event: AnalyticsEventAnOld, params: Map, diff --git a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt index 55b8d535b3..a02172db23 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/global/GlobalState.kt @@ -27,7 +27,7 @@ data class GlobalState( val dialog: StateDialog? = null, val exchangeManager: CurrencyExchangeManager = CurrencyExchangeManager.dummy(), val resources: AndroidResources = AndroidResources(), - val analyticsHandler: GlobalAnalyticsEventHandler? = null, + val analyticsHandler: GlobalAnalyticsEventHandler = GlobalAnalyticsEventHandler.stub(), val userCountryCode: String? = null, ) : StateType From 3b4b8ead66b3d9017671f496bf03ae697d122ed1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 21:37:07 +0500 Subject: [PATCH 07/13] Updated on 2026-08-14 --- .../tap/common/analytics/events/Onboarding.kt | 9 +++++++ .../redux/OnboardingSaltPayMiddleware.kt | 27 +++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt index 4a57cda71d..b65408b7d5 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/Onboarding.kt @@ -64,4 +64,13 @@ sealed class Onboarding( class SetupStarted : Twins("Twin Setup Started") class SetupFinished : Twins("Twin Setup Finished") } + + class PinCodeSet: Onboarding("Onboarding", "PIN code set") + class ButtonConnect: Onboarding("Onboarding", "Button - Connect") + class KYCStarted: Onboarding("Onboarding", "KYC started") + class KYCInProgress: Onboarding("Onboarding", "KYC in progress") + class KYCRejected: Onboarding("Onboarding", "KYC rejected") + class ClaimScreenOpened: Onboarding("Onboarding", "Claim screen opened") + class ButtonClaim: Onboarding("Onboarding", "Button - Claim") + class ClaimWasSuccessfully: Onboarding("Onboarding", "Claim was successfully") } \ No newline at end of file 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 9678e9161e..382f1e32cf 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 @@ -10,6 +10,8 @@ import com.tangem.domain.common.extensions.successOr import com.tangem.domain.common.extensions.withMainContext import com.tangem.network.api.paymentology.KYCStatus import com.tangem.network.api.paymentology.RegistrationResponse +import com.tangem.tap.common.analytics.GlobalAnalyticsEventHandler +import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.dispatchOnMain import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction @@ -56,6 +58,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App fun getAppState(): AppState = appState()!! fun getOnboardingWalletState(): OnboardingWalletState = getAppState().onboardingWalletState fun getState(): OnboardingSaltPayState = getOnboardingWalletState().onboardingSaltPayState!! + val analyticsHandler = getAppState().globalState.analyticsHandler when (action) { is OnboardingSaltPayAction.Update -> { @@ -78,6 +81,8 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App } } is OnboardingSaltPayAction.RegisterCard -> { + analyticsHandler.handleAnalyticsEvent(Onboarding.ButtonConnect()) + handleInProgress = true val state = getState() @@ -154,6 +159,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App is OnboardingSaltPayAction.TrySetPin -> { try { assertPinValid(action.pin, getState().pinLength) + analyticsHandler.handleAnalyticsEvent(Onboarding.PinCodeSet()) store.dispatch(OnboardingSaltPayAction.SetPin(action.pin)) store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.CardRegistration)) } catch (error: SaltPayActivationError) { @@ -161,6 +167,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App } } is OnboardingSaltPayAction.Claim -> { + analyticsHandler.handleAnalyticsEvent(Onboarding.ButtonClaim()) val state = getState() handleInProgress = true @@ -210,16 +217,36 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App handleInProgress = false handleClaimRefreshInProgress = false + + analyticsHandler.handleAnalyticsEvent(Onboarding.ClaimWasSuccessfully()) dispatchOnMain(OnboardingSaltPayAction.SetTokenBalance(balance)) dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.Finished)) } } + is OnboardingSaltPayAction.SetStep -> handleAnalytics(analyticsHandler, action.newStep) else -> { /* do nothing, only reduce */ } } } +fun handleAnalytics(analyticsHandler: GlobalAnalyticsEventHandler, step: SaltPayActivationStep?) { + when(step){ + SaltPayActivationStep.None -> {} + SaltPayActivationStep.NoGas -> {} + SaltPayActivationStep.NeedPin -> {} + SaltPayActivationStep.CardRegistration -> {} + SaltPayActivationStep.KycIntro -> {} + SaltPayActivationStep.KycStart -> analyticsHandler.handleAnalyticsEvent(Onboarding.KYCStarted()) + SaltPayActivationStep.KycWaiting -> analyticsHandler.handleAnalyticsEvent(Onboarding.KYCInProgress()) + SaltPayActivationStep.KycReject -> analyticsHandler.handleAnalyticsEvent(Onboarding.KYCRejected()) + SaltPayActivationStep.Claim -> analyticsHandler.handleAnalyticsEvent(Onboarding.ClaimScreenOpened()) + SaltPayActivationStep.ClaimInProgress -> {} + SaltPayActivationStep.Finished -> {} + null -> {} + } +} + data class UpdateResult( val step: SaltPayActivationStep = SaltPayActivationStep.None, val amountToClaim: Amount? = null, From cecadddbc250864a9b016e58b1ef7a883516b50d Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 21:50:58 +0500 Subject: [PATCH 08/13] Updated on 2026-08-14 --- .../common/analytics/GlobalAnalyticsHandler.kt | 17 +++++++++++++++-- .../common/analytics/events/AnalyticsParam.kt | 4 ++++ .../tap/features/home/redux/HomeMiddleware.kt | 3 +++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt index e51030526f..d1bef7d01b 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/GlobalAnalyticsHandler.kt @@ -19,13 +19,14 @@ interface GlobalAnalyticsEventHandler : AnalyticsEventHandler, SdkErrorEventHandler, ShopifyOrderEventHandler { + fun attachToAllEvents(key: String, value: String) + companion object { fun stub(): GlobalAnalyticsEventHandler { return object : GlobalAnalyticsEventHandler { + override fun attachToAllEvents(key: String, value: String) {} override fun handleEvent(event: String, params: Map) {} - override fun handleErrorEvent(error: Throwable, params: Map) {} - override fun handleCardSdkErrorEvent( error: TangemSdkError, action: AnalyticsAnOld.ActionToLog, @@ -52,6 +53,12 @@ class GlobalAnalyticsHandler( private val analyticsHandlers: List, ) : GlobalAnalyticsEventHandler { + private val attachToAllEventsParams: MutableMap = mutableMapOf() + + override fun attachToAllEvents(key: String, value: String) { + attachToAllEventsParams[key] = value + } + override fun handleEvent(event: String, params: Map) { analyticsHandlers.forEach { it.handleEvent(event, params) } } @@ -106,6 +113,12 @@ class GlobalAnalyticsHandler( it.handleShopifyOrderEvent(order) } } + + override fun prepareParams(card: Card?, blockchain: String?, params: Map): Map { + return super.prepareParams(card, blockchain, params).toMutableMap().apply { + putAll(attachToAllEventsParams) + } + } } fun GlobalAnalyticsEventHandler.logWcEvent(event: AnalyticsAnOld.WcAnalyticsEvent) { diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt index aa8d8439f4..9d971d8f01 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -49,4 +49,8 @@ sealed class AnalyticsParam { object LinkedIn : SocialNetwork("LinkedIn") object GitHub : SocialNetwork("GitHub") } + + companion object Key { + const val BatchId = "batch_id" + } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index 569c2c4a77..ef916d18c7 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -9,6 +9,7 @@ import com.tangem.tap.DELAY_SDK_DIALOG_CLOSE import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.AnalyticsParamAnOld import com.tangem.tap.common.analytics.GetCardSourceParamsAnOld +import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.entities.IndeterminateProgressButton import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.extensions.dispatchOpenUrl @@ -121,6 +122,8 @@ private fun onScanSuccess(scanResponse: ScanResponse) { val tapWalletManager = globalState.tapWalletManager tapWalletManager.updateConfigManager(scanResponse) + globalState.analyticsHandler.attachToAllEvents(AnalyticsParam.BatchId, scanResponse.card.batchId) + store.dispatch(TwinCardsAction.IfTwinsPrepareState(scanResponse)) if (scanResponse.isSaltPay()) { From 1d61f898a74f36ea023c4326f4b9636d66fec315 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 22:47:20 +0500 Subject: [PATCH 09/13] Updated on 2026-08-14 --- .../tangem/tap/common/analytics/api/EventHandlerApi.kt | 9 +++++---- .../tangem/tap/common/analytics/events/AnalyticsParam.kt | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt b/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt index dce88977e6..08e1609e3c 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/api/EventHandlerApi.kt @@ -8,6 +8,7 @@ import com.tangem.tap.common.analytics.AnalyticsAnOld import com.tangem.tap.common.analytics.AnalyticsEventAnOld import com.tangem.tap.common.analytics.AnalyticsParamAnOld import com.tangem.tap.common.analytics.events.AnalyticsEvent +import com.tangem.tap.common.analytics.events.AnalyticsParam import com.tangem.tap.common.extensions.filterNotNull /** @@ -41,13 +42,13 @@ interface AnalyticsEventHandler { } fun prepareParams( - card: Card?, + card: Card? = null, blockchain: String? = null, params: Map = emptyMap(), ): Map = mapOf( - AnalyticsParamAnOld.FIRMWARE.param to card?.firmwareVersion?.stringValue, - AnalyticsParamAnOld.BATCH_ID.param to card?.batchId, - AnalyticsParamAnOld.BLOCKCHAIN.param to blockchain, + AnalyticsParam.Firmware to card?.firmwareVersion?.stringValue, + AnalyticsParam.BatchId to card?.batchId, + AnalyticsParam.Blockchain to blockchain, ).filterNotNull() + params fun prepareEventString(category: String, event: String): String { diff --git a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt index 9d971d8f01..8c69239429 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/events/AnalyticsParam.kt @@ -51,6 +51,8 @@ sealed class AnalyticsParam { } companion object Key { + const val Blockchain = "blockchain" const val BatchId = "batch_id" + const val Firmware = "firmware" } } \ No newline at end of file From b5ac6052ac2ecde95f69842f8e2387a0a6a6d209 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 22:48:04 +0500 Subject: [PATCH 10/13] Updated on 2026-08-14 --- .../com/tangem/tap/common/extensions/WalletManager.kt | 11 ++++++++--- .../wallet/saltPay/SaltPayActivationManager.kt | 3 ++- .../wallet/saltPay/SaltPayExceptionHandler.kt | 7 +++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt index 76144c6132..15d02907bf 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/WalletManager.kt @@ -44,8 +44,13 @@ suspend fun WalletManager.safeUpdate(): Result = try { if (exception is BlockchainSdkError.AccountNotFound && amountToCreateAccount != null) { Result.Failure(TapError.WalletManager.NoAccountError(amountToCreateAccount.toString())) } else { - val message = exception.localizedMessage ?: "An error has occurred. Try later" - Result.Failure(TapError.WalletManager.InternalError(message)) + when (exception) { + is BlockchainSdkError -> Result.Failure(exception) + else -> { + val message = exception.cause?.localizedMessage ?: "Unknown error" + Result.Failure(TapError.WalletManager.InternalError(message)) + } + } } } } @@ -72,7 +77,7 @@ fun WalletManager?.getAddressData(): AddressData? { else addressDataList[0] } -fun WalletManager.Companion.stub(): T { +fun WalletManager.Companion.stub(): T { val wallet = Wallet(Blockchain.Unknown, setOf(), Wallet.PublicKey(byteArrayOf(), null, null), setOf()) return object : WalletManager(wallet) { override val currentHost: String = "" diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt index 9080c00383..e103ad4391 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayActivationManager.kt @@ -4,6 +4,7 @@ import android.net.Uri import com.tangem.blockchain.blockchains.ethereum.SignedEthereumTransaction import com.tangem.blockchain.common.Amount import com.tangem.blockchain.common.AmountType +import com.tangem.blockchain.common.BlockchainSdkError import com.tangem.blockchain.common.TransactionSigner import com.tangem.blockchain.extensions.successOr import com.tangem.common.extensions.guard @@ -48,7 +49,7 @@ class SaltPayActivationManager( } else { Result.Failure(SaltPayActivationError.NoGas) } - is com.tangem.blockchain.extensions.Result.Failure -> Result.Failure(SaltPayActivationError.NoGas) + is com.tangem.blockchain.extensions.Result.Failure -> Result.Failure(hasGasResult.error as BlockchainSdkError) } } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayExceptionHandler.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayExceptionHandler.kt index 87d0c2831d..3b4ed41a05 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayExceptionHandler.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/wallet/saltPay/SaltPayExceptionHandler.kt @@ -1,5 +1,6 @@ package com.tangem.tap.features.onboarding.products.wallet.saltPay +import com.tangem.blockchain.common.BlockchainSdkError import com.tangem.common.core.TangemSdkError import com.tangem.tap.common.extensions.dispatchDialogShow import com.tangem.tap.common.redux.AppDialog @@ -21,7 +22,6 @@ class SaltPayExceptionHandler { } store.dispatchDialogShow(dialog) } - is TangemSdkError -> { when (throwable) { is TangemSdkError.NetworkError -> { @@ -33,8 +33,11 @@ class SaltPayExceptionHandler { } } } + is BlockchainSdkError -> { + store.dispatchDialogShow(AppDialog.SimpleOkErrorDialog(throwable.customMessage)) + } else -> { - val message = throwable.message ?: "SaltPay unknown error" + val message = throwable.localizedMessage ?: "SaltPay unknown error" store.dispatchDialogShow(AppDialog.SimpleOkErrorDialog(message)) } } From 9b35e9cbaca04e67fedb7da2797c577eae3ffdc2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 23:34:17 +0500 Subject: [PATCH 11/13] Updated on 2026-08-14 --- .../redux/OnboardingSaltPayMiddleware.kt | 56 ++++++------------- 1 file changed, 16 insertions(+), 40 deletions(-) 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 382f1e32cf..2f97aa6f95 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 @@ -13,6 +13,7 @@ import com.tangem.network.api.paymentology.RegistrationResponse import com.tangem.tap.common.analytics.GlobalAnalyticsEventHandler import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.dispatchOnMain +import com.tangem.tap.common.extensions.isPositive import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.TangemSigner @@ -198,7 +199,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App onException(it.error) return@launch } - + analyticsHandler.handleAnalyticsEvent(Onboarding.ClaimWasSuccessfully()) dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.ClaimInProgress)) dispatchOnMain(OnboardingSaltPayAction.RefreshClaim) } @@ -209,18 +210,20 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App val state = getState() scope.launch { - val balance = state.saltPayManager.getTokenAmount().successOr { + val tokenAmountValue = state.saltPayManager.getTokenAmount().successOr { SaltPayExceptionHandler.handle(it.error) handleClaimRefreshInProgress = false return@launch } - handleInProgress = false - handleClaimRefreshInProgress = false - - analyticsHandler.handleAnalyticsEvent(Onboarding.ClaimWasSuccessfully()) - dispatchOnMain(OnboardingSaltPayAction.SetTokenBalance(balance)) - dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.Finished)) + if (tokenAmountValue.isPositive()) { + handleInProgress = false + handleClaimRefreshInProgress = false + dispatchOnMain(OnboardingSaltPayAction.SetTokenBalance(tokenAmountValue)) + dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.Finished)) + } else { + handleClaimRefreshInProgress = false + } } } is OnboardingSaltPayAction.SetStep -> handleAnalytics(analyticsHandler, action.newStep) @@ -231,7 +234,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App } fun handleAnalytics(analyticsHandler: GlobalAnalyticsEventHandler, step: SaltPayActivationStep?) { - when(step){ + when (step) { SaltPayActivationStep.None -> {} SaltPayActivationStep.NoGas -> {} SaltPayActivationStep.NeedPin -> {} @@ -252,24 +255,16 @@ data class UpdateResult( val amountToClaim: Amount? = null, ) -suspend fun SaltPayActivationManager.updateActivationStatus( - amountToClaim: Amount?, - step: SaltPayActivationStep, -): Result { +suspend fun SaltPayActivationManager.updateActivationStatus(amountToClaim: Amount?): Result { Timber.d("updateSaltPayStatus") var updateResult = UpdateResult() - checkGasIfNeeded(this, step).successOr { - return Result.Failure(it.error) - - } - registerKYCIfNeeded(this, step).successOr { - return Result.Failure(it.error) - - } val saltPayStep = checkRegistration(this).successOr { return Result.Failure(it.error) + } + checkGasIfNeeded(this, saltPayStep).successOr { + return Result.Failure(it.error) } val fetchedAmountToClaim = getAmountToClaimIfNeeded(this, amountToClaim) @@ -357,25 +352,6 @@ private suspend fun checkGasIfNeeded( return result } -private suspend fun registerKYCIfNeeded( - saltPayManager: SaltPayActivationManager, - step: SaltPayActivationStep, -): Result { - Timber.d("registerKYCIfNeeded: step: %s", step) - if (step != SaltPayActivationStep.KycStart) { - Timber.d("registerKYCIfNeeded: return Success, because step != KycStart") - return Result.Success(Unit) - } - - withMainContext { - Timber.d("registerKYCIfNeeded: set new step: KycWaiting") - store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycWaiting)) - } - - Timber.d("saltPayManager.registerKYC()") - return saltPayManager.registerKYC() -} - private suspend fun checkRegistration( saltPayManager: SaltPayActivationManager, ): Result { From 7e45260907591e6f3e74fba534068d20733430ee Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 23:39:42 +0500 Subject: [PATCH 12/13] Updated on 2026-08-14 --- .../features/onboarding/OnboardingSaltPayHelper.kt | 6 +----- .../saltPay/redux/OnboardingSaltPayMiddleware.kt | 12 ++++++------ 2 files changed, 7 insertions(+), 11 deletions(-) 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 199b59f22a..2c1dcfad4c 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 @@ -19,11 +19,7 @@ class OnboardingSaltPayHelper { manager: SaltPayActivationManager, ): Result { return try { - val status = manager.updateActivationStatus( - amountToClaim = null, - step = SaltPayActivationStep.None, - ).successOr { return it } - + val status = manager.updateActivationStatus(null).successOr { return it } val isRegistrationCase = status.step != SaltPayActivationStep.Finished val isBackupCase = scanResponse.card.backupStatus?.isActive == false Result.Success(isRegistrationCase || isBackupCase) 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 2f97aa6f95..6ada6ee3ec 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,10 +67,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App val state = getState() scope.launch { - val updateResult = state.saltPayManager.updateActivationStatus( - amountToClaim = state.amountToClaim, - step = state.step, - ).successOr { + val updateResult = state.saltPayManager.updateActivationStatus(state.amountToClaim).successOr { onException(it.error) return@launch } @@ -146,15 +143,18 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App } is OnboardingSaltPayAction.RegisterKYC -> { val state = getState() + store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycWaiting)) handleInProgress = true + scope.launch { - registerKYCIfNeeded(state.saltPayManager, state.step).successOr { + Timber.d("saltPayManager.registerKYC()") + state.saltPayManager.registerKYC().successOr { onException(it.error) return@launch } handleInProgress = false - withMainContext { store.dispatch(OnboardingSaltPayAction.Update) } + dispatchOnMain(OnboardingSaltPayAction.Update) } } is OnboardingSaltPayAction.TrySetPin -> { From 58ad7a07eada63e0b59cd663175d9c309b16d30e Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 25 Oct 2022 23:44:28 +0500 Subject: [PATCH 13/13] Updated on 2026-08-14 --- .../saltPay/redux/OnboardingSaltPayMiddleware.kt | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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 6ada6ee3ec..446fc6c2ca 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 @@ -73,9 +73,7 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App } handleInProgress = false - withMainContext { - store.dispatch(OnboardingSaltPayAction.SetStep(updateResult.step)) - } + dispatchOnMain(OnboardingSaltPayAction.SetStep(updateResult.step)) } } is OnboardingSaltPayAction.RegisterCard -> { @@ -129,10 +127,8 @@ private fun handleOnboardingSaltPayAction(anyAction: Action, appState: () -> App return@launch } - withMainContext { - handleInProgress = false - store.dispatch(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycIntro)) - } + handleInProgress = false + dispatchOnMain(OnboardingSaltPayAction.SetStep(SaltPayActivationStep.KycIntro)) } } is OnboardingSaltPayAction.OpenUtorgKYC -> {