From 5ef6a4167db23f8a0357efded0bd7c99f4da58a8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 29 Jul 2024 15:32:22 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../features/onboarding/OnboardingHelper.kt | 11 +++++----- .../products/note/OnboardingNoteFragment.kt | 9 +++++++- .../note/redux/OnboardingNoteReducer.kt | 2 +- .../note/redux/OnboardingNoteState.kt | 8 ++----- .../products/twins/redux/TwinCardsState.kt | 6 ----- .../twins/ui/OnboardingTwinsFragment.kt | 22 +++++++++++++------ .../exchangeServices/BuyExchangeService.kt | 4 +++- .../exchangeServices/CardExchangeRules.kt | 5 +++-- .../CurrencyExchangeManager.kt | 6 +++-- .../exchangeServices/DefaultRampManager.kt | 4 +++- .../exchangeServices/ExchangeService.kt | 7 +++--- .../mercuryo/MercuryoService.kt | 3 ++- .../moonpay/MoonPayService.kt | 3 ++- .../domain/exchange/RampStateManager.kt | 3 ++- .../tokens/GetCryptoCurrencyActionsUseCase.kt | 7 +++--- 15 files changed, 59 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt index d6c4adff57..404a469233 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/OnboardingHelper.kt @@ -32,26 +32,27 @@ import timber.log.Timber */ object OnboardingHelper { suspend fun isOnboardingCase(response: ScanResponse): Boolean { - val onboardingManager = store.state.globalState.onboardingState.onboardingManager + val onboardingManager = + store.state.globalState.onboardingState.onboardingManager ?: OnboardingManager(response) val cardId = response.card.cardId return when { response.cardTypesResolver.isTangemTwins() -> { if (!response.twinsIsTwinned()) { true } else { - onboardingManager?.isActivationInProgress(cardId) ?: false + onboardingManager.isActivationInProgress(cardId) ?: false } } response.cardTypesResolver.isWallet2() || response.cardTypesResolver.isShibaWallet() -> { val emptyWallets = response.card.wallets.isEmpty() - val activationInProgress = onboardingManager?.isActivationInProgress(cardId) + val activationInProgress = onboardingManager.isActivationInProgress(cardId) val isNoBackup = response.card.backupStatus == CardDTO.BackupStatus.NoBackup && !DemoHelper.isDemoCard(response) - emptyWallets || activationInProgress == true || isNoBackup + emptyWallets || activationInProgress || isNoBackup } - response.card.wallets.isNotEmpty() -> onboardingManager?.isActivationInProgress(cardId) ?: false + response.card.wallets.isNotEmpty() -> onboardingManager.isActivationInProgress(cardId) ?: false else -> true } } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt index 7ac3806126..757ec91454 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/OnboardingNoteFragment.kt @@ -11,12 +11,14 @@ import coil.load import com.tangem.blockchain.common.Blockchain import com.tangem.core.analytics.Analytics import com.tangem.core.navigation.ShareElement +import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.common.analytics.events.Onboarding import com.tangem.tap.common.extensions.getDrawableCompat import com.tangem.tap.common.extensions.stripZeroPlainString import com.tangem.tap.common.toggleWidget.RefreshBalanceWidget import com.tangem.tap.common.transitions.InternalNoteLayoutTransition import com.tangem.tap.features.addBackPressHandler +import com.tangem.tap.features.onboarding.OnboardingWalletBalance import com.tangem.tap.features.onboarding.products.BaseOnboardingFragment import com.tangem.tap.features.onboarding.products.note.redux.OnboardingNoteAction import com.tangem.tap.features.onboarding.products.note.redux.OnboardingNoteState @@ -134,7 +136,7 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } private fun setupTopUpWalletState(state: OnboardingNoteState) = with(mainBinding.onboardingActionContainer) { - if (state.isBuyAllowed) { + if (availableForBuy(state.scanResponse, state.walletBalance)) { btnMainAction.setText(R.string.onboarding_top_up_button_but_crypto) btnMainAction.icon = null btnMainAction.setOnClickListener { @@ -217,6 +219,11 @@ class OnboardingNoteFragment : BaseOnboardingFragment() { } } + private fun availableForBuy(scanResponse: ScanResponse?, walletBalance: OnboardingWalletBalance): Boolean { + scanResponse ?: return false + return store.state.globalState.exchangeManager.availableForBuy(scanResponse, walletBalance.currency) + } + override fun handleOnBackPressed() { store.dispatch(OnboardingNoteAction.OnBackPressed) } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt index 5552fc8b50..14f7989391 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteReducer.kt @@ -13,7 +13,7 @@ private fun internalReduce(action: Action, appState: AppState): OnboardingNoteSt when (action) { is GlobalAction.Onboarding.Start -> { - state = OnboardingNoteState() + state = OnboardingNoteState(scanResponse = action.scanResponse) } is OnboardingNoteAction.SetArtworkUrl -> { state = state.copy(cardArtworkUrl = action.artworkUrl) diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt index ae7a2db594..3d659e39da 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/note/redux/OnboardingNoteState.kt @@ -1,11 +1,10 @@ package com.tangem.tap.features.onboarding.products.note.redux import com.tangem.blockchain.common.WalletManager +import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.domain.TapError import com.tangem.tap.features.onboarding.OnboardingWalletBalance -import com.tangem.tap.store import org.rekotlin.StateType -import kotlin.properties.ReadOnlyProperty /** [REDACTED_AUTHOR] @@ -20,14 +19,11 @@ data class OnboardingNoteState( val currentStep: OnboardingNoteStep = OnboardingNoteStep.None, val steps: List = OnboardingNoteStep.values().toList(), val showConfetti: Boolean = false, + val scanResponse: ScanResponse? = null, ) : StateType { val progress: Int get() = steps.indexOf(currentStep) - - val isBuyAllowed: Boolean by ReadOnlyProperty { _, _ -> - store.state.globalState.exchangeManager.availableForBuy(walletBalance.currency) - } } enum class OnboardingNoteStep { 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 fcc38388ac..a8867a1a2c 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 @@ -6,9 +6,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.domain.TapError import com.tangem.tap.domain.twins.TwinCardsManager import com.tangem.tap.features.onboarding.OnboardingWalletBalance -import com.tangem.tap.store import org.rekotlin.StateType -import kotlin.properties.ReadOnlyProperty /** [REDACTED_AUTHOR] @@ -56,10 +54,6 @@ data class TwinCardsState( val twinningInProgress: Boolean get() = currentStep == TwinCardsStep.CreateSecondWallet || currentStep == TwinCardsStep.CreateThirdWallet - - val isBuyAllowed: Boolean by ReadOnlyProperty { _, _ -> - store.state.globalState.exchangeManager.availableForBuy(walletBalance.currency) - } } enum class CreateTwinWalletMode { CreateWallet, RecreateWallet } diff --git a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/OnboardingTwinsFragment.kt b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/OnboardingTwinsFragment.kt index e1e0a58536..69db8e0120 100644 --- a/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/OnboardingTwinsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/onboarding/products/twins/ui/OnboardingTwinsFragment.kt @@ -27,6 +27,7 @@ import com.tangem.tap.common.transitions.InternalNoteLayoutTransition import com.tangem.tap.domain.twins.TwinsCardWidget import com.tangem.tap.features.addBackPressHandler import com.tangem.tap.features.onboarding.OnboardingMenuProvider +import com.tangem.tap.features.onboarding.OnboardingWalletBalance import com.tangem.tap.features.onboarding.products.BaseOnboardingFragment import com.tangem.tap.features.onboarding.products.twins.redux.CreateTwinWalletMode import com.tangem.tap.features.onboarding.products.twins.redux.TwinCardsAction @@ -65,12 +66,7 @@ internal class OnboardingTwinsFragment : BaseOnboardingFragment( } override fun loadToolbarMenu(): MenuProvider = OnboardingMenuProvider( - scanResponseProvider = Provider { - store.state.twinCardsState.welcomeOnlyScanResponse - ?: store.state.globalState.onboardingState.onboardingManager?.scanResponse - ?: store.state.detailsState.scanResponse - ?: error("ScanResponse must be not null") - }, + scanResponseProvider = Provider { getActualScanResponse() }, ) @Suppress("MagicNumber") @@ -342,7 +338,7 @@ internal class OnboardingTwinsFragment : BaseOnboardingFragment( else -> {} } - if (state.isBuyAllowed) { + if (availableForBuy(getActualScanResponse(), state.walletBalance)) { btnMainAction.setText(R.string.onboarding_top_up_button_but_crypto) btnMainAction.setOnClickListener { store.dispatch(TwinCardsAction.TopUp) @@ -424,6 +420,18 @@ internal class OnboardingTwinsFragment : BaseOnboardingFragment( } } + private fun availableForBuy(scanResponse: ScanResponse?, walletBalance: OnboardingWalletBalance): Boolean { + scanResponse ?: return false + return store.state.globalState.exchangeManager.availableForBuy(scanResponse, walletBalance.currency) + } + + private fun getActualScanResponse(): ScanResponse { + return store.state.twinCardsState.welcomeOnlyScanResponse + ?: store.state.globalState.onboardingState.onboardingManager?.scanResponse + ?: store.state.detailsState.scanResponse + ?: error("ScanResponse must be not null") + } + override fun handleOnBackPressed() { store.dispatch( TwinCardsAction.OnBackPressed { should, popAction -> diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/BuyExchangeService.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/BuyExchangeService.kt index e6c523e666..a8861eed2f 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/BuyExchangeService.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/BuyExchangeService.kt @@ -1,5 +1,6 @@ package com.tangem.tap.network.exchangeServices +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.tap.domain.model.Currency import com.tangem.tap.network.exchangeServices.mercuryo.MercuryoService @@ -32,7 +33,8 @@ internal class BuyExchangeService( override fun isSellAllowed(): Boolean = currentService.isSellAllowed() - override fun availableForBuy(currency: Currency): Boolean = currentService.availableForBuy(currency) + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean = + currentService.availableForBuy(scanResponse, currency) override fun availableForSell(currency: Currency): Boolean = currentService.availableForSell(currency) diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/CardExchangeRules.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/CardExchangeRules.kt index 0f4fd42f7d..696f9288bc 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/CardExchangeRules.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/CardExchangeRules.kt @@ -2,6 +2,7 @@ package com.tangem.tap.network.exchangeServices import com.tangem.domain.common.TapWorkarounds.isStart2Coin import com.tangem.domain.models.scan.CardDTO +import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.domain.model.Currency import com.tangem.tap.features.demo.isDemoCard @@ -38,8 +39,8 @@ class CardExchangeRules( } } - override fun availableForBuy(currency: Currency): Boolean { - val card = cardProvider() ?: return false + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean { + val card = scanResponse.card return when { card.isDemoCard() -> true diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt index e962f7ebf4..fb01befe82 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/CurrencyExchangeManager.kt @@ -8,6 +8,7 @@ import com.tangem.blockchain.common.Blockchain import com.tangem.blockchain.common.transaction.TransactionFee import com.tangem.blockchain.extensions.Result import com.tangem.domain.models.scan.CardDTO +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.tap.common.extensions.inject import com.tangem.tap.common.extensions.safeUpdate @@ -38,8 +39,9 @@ class CurrencyExchangeManager( override fun isBuyAllowed(): Boolean = primaryRules.isBuyAllowed() && buyService.isBuyAllowed() override fun isSellAllowed(): Boolean = primaryRules.isSellAllowed() && sellService.isSellAllowed() - override fun availableForBuy(currency: Currency): Boolean { - return primaryRules.availableForBuy(currency) && buyService.availableForBuy(currency) + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean { + return primaryRules.availableForBuy(scanResponse, currency) && + buyService.availableForBuy(scanResponse, currency) } override fun availableForSell(currency: Currency): Boolean { diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/DefaultRampManager.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/DefaultRampManager.kt index 76de7375da..904e22c80e 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/DefaultRampManager.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/DefaultRampManager.kt @@ -1,13 +1,15 @@ package com.tangem.tap.network.exchangeServices import com.tangem.domain.exchange.RampStateManager +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency class DefaultRampManager(private val exchangeService: ExchangeService?) : RampStateManager { private val cryptoCurrencyConverter = CryptoCurrencyConverter() - override fun availableForBuy(cryptoCurrency: CryptoCurrency): Boolean { + override fun availableForBuy(scanResponse: ScanResponse, cryptoCurrency: CryptoCurrency): Boolean { return exchangeService?.availableForBuy( + scanResponse, currency = cryptoCurrencyConverter.convertBack(cryptoCurrency), ) ?: false } diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/ExchangeService.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/ExchangeService.kt index e9b17488e3..1cfd8502ed 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/ExchangeService.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/ExchangeService.kt @@ -1,5 +1,6 @@ package com.tangem.tap.network.exchangeServices +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.tap.common.feature.Feature import com.tangem.tap.domain.model.Currency @@ -7,7 +8,7 @@ import com.tangem.tap.domain.model.Currency interface Exchanger { fun isBuyAllowed(): Boolean fun isSellAllowed(): Boolean - fun availableForBuy(currency: Currency): Boolean + fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean fun availableForSell(currency: Currency): Boolean } @@ -20,7 +21,7 @@ interface ExchangeService : Feature, Exchanger, ExchangeUrlBuilder { override suspend fun update() {} override fun isBuyAllowed(): Boolean = false override fun isSellAllowed(): Boolean = false - override fun availableForBuy(currency: Currency): Boolean = false + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean = false override fun availableForSell(currency: Currency): Boolean = false override fun getUrl( action: CurrencyExchangeManager.Action, @@ -45,7 +46,7 @@ interface ExchangeRules : Feature, Exchanger { override fun featureIsSwitchedOn(): Boolean = false override fun isBuyAllowed(): Boolean = false override fun isSellAllowed(): Boolean = false - override fun availableForBuy(currency: Currency): Boolean = false + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean = false override fun availableForSell(currency: Currency): Boolean = false } } diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/mercuryo/MercuryoService.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/mercuryo/MercuryoService.kt index d653e2babe..8bcc8168e9 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/mercuryo/MercuryoService.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/mercuryo/MercuryoService.kt @@ -6,6 +6,7 @@ import com.tangem.common.extensions.calculateSha512 import com.tangem.common.extensions.toHexString import com.tangem.common.services.Result import com.tangem.common.services.performRequest +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.tap.domain.model.Currency import com.tangem.tap.network.exchangeServices.CurrencyExchangeManager @@ -28,7 +29,7 @@ internal class MercuryoService(private val environment: MercuryoEnvironment) : E override fun isSellAllowed(): Boolean = false - override fun availableForBuy(currency: Currency): Boolean { + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean { if (!isBuyAllowed()) return false val mercuryoNetwork = currency.blockchain.mercuryoNetwork() diff --git a/app/src/main/java/com/tangem/tap/network/exchangeServices/moonpay/MoonPayService.kt b/app/src/main/java/com/tangem/tap/network/exchangeServices/moonpay/MoonPayService.kt index c004c38b21..de34810420 100644 --- a/app/src/main/java/com/tangem/tap/network/exchangeServices/moonpay/MoonPayService.kt +++ b/app/src/main/java/com/tangem/tap/network/exchangeServices/moonpay/MoonPayService.kt @@ -7,6 +7,7 @@ import com.tangem.common.services.Result import com.tangem.common.services.performRequest import com.tangem.datasource.api.common.createRetrofitInstance import com.tangem.domain.common.extensions.withIOContext +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency import com.tangem.tap.domain.model.Currency import com.tangem.tap.network.exchangeServices.CurrencyExchangeManager @@ -83,7 +84,7 @@ class MoonPayService( return status?.responseUserStatus?.isSellAllowed ?: false } - override fun availableForBuy(currency: Currency): Boolean = false + override fun availableForBuy(scanResponse: ScanResponse, currency: Currency): Boolean = false override fun availableForSell(currency: Currency): Boolean { if (!isSellAllowed()) return false diff --git a/domain/legacy/src/main/java/com/tangem/domain/exchange/RampStateManager.kt b/domain/legacy/src/main/java/com/tangem/domain/exchange/RampStateManager.kt index ac9b4fa892..2536d78ea9 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/exchange/RampStateManager.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/exchange/RampStateManager.kt @@ -1,5 +1,6 @@ package com.tangem.domain.exchange +import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.tokens.model.CryptoCurrency /** @@ -7,7 +8,7 @@ import com.tangem.domain.tokens.model.CryptoCurrency */ interface RampStateManager { - fun availableForBuy(cryptoCurrency: CryptoCurrency): Boolean + fun availableForBuy(scanResponse: ScanResponse, cryptoCurrency: CryptoCurrency): Boolean fun availableForSell(cryptoCurrency: CryptoCurrency): Boolean } \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCryptoCurrencyActionsUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCryptoCurrencyActionsUseCase.kt index 16083adcbb..c83af879ba 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCryptoCurrencyActionsUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCryptoCurrencyActionsUseCase.kt @@ -106,7 +106,7 @@ class GetCryptoCurrencyActionsUseCase( return listOf(TokenActionsState.ActionState.HideToken(ScenarioUnavailabilityReason.None)) } if (cryptoCurrencyStatus.value is CryptoCurrencyStatus.Unreachable) { - return getActionsForUnreachableCurrency(cryptoCurrencyStatus, needAssociateAsset) + return getActionsForUnreachableCurrency(userWallet, cryptoCurrencyStatus, needAssociateAsset) } val activeList = mutableListOf() @@ -168,7 +168,7 @@ class GetCryptoCurrencyActionsUseCase( } // buy - if (rampManager.availableForBuy(cryptoCurrency)) { + if (rampManager.availableForBuy(userWallet.scanResponse, cryptoCurrency)) { activeList.add(TokenActionsState.ActionState.Buy(ScenarioUnavailabilityReason.None)) } else { disabledList.add( @@ -222,6 +222,7 @@ class GetCryptoCurrencyActionsUseCase( } private fun getActionsForUnreachableCurrency( + userWallet: UserWallet, cryptoCurrencyStatus: CryptoCurrencyStatus, needAssociateAsset: Boolean, ): List { @@ -230,7 +231,7 @@ class GetCryptoCurrencyActionsUseCase( if (isAddressAvailable(cryptoCurrencyStatus.value.networkAddress)) { actionsList.add(TokenActionsState.ActionState.CopyAddress(ScenarioUnavailabilityReason.None)) } - if (rampManager.availableForBuy(cryptoCurrencyStatus.currency)) { + if (rampManager.availableForBuy(userWallet.scanResponse, cryptoCurrencyStatus.currency)) { actionsList.add(TokenActionsState.ActionState.Buy(ScenarioUnavailabilityReason.None)) } else { actionsList.add(