diff --git a/app/build.gradle b/app/build.gradle index 055bee9680..5d7f7fbefb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -38,7 +38,7 @@ android { } debug_beta { initWith release - debuggable true + debuggable false versionNameSuffix "-beta" applicationIdSuffix ".debug" buildConfigField 'String', 'CONFIG_ENVIRONMENT', '\"prod\"' diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index f80e7ec763..66ddcda23a 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -97,7 +97,7 @@ class TapWalletManager { } } - private fun updateConfigManager(data: ScanResponse) { + fun updateConfigManager(data: ScanResponse) { val configManager = store.state.globalState.configManager val blockchain = data.getBlockchain() if (data.card.isStart2Coin) { @@ -208,7 +208,6 @@ class TapWalletManager { return@withContext } - val config = store.state.globalState.configManager?.config ?: return@withContext val moonPayStatus = store.state.globalState.moonpayStatus store.dispatch(WalletAction.LoadWallet(moonPayStatus)) store.dispatch(WalletAction.LoadFiatRate()) diff --git a/app/src/main/java/com/tangem/tap/domain/extensions/MoonpayStatus.kt b/app/src/main/java/com/tangem/tap/domain/extensions/MoonpayStatus.kt index 4407a0516f..d204a2051d 100644 --- a/app/src/main/java/com/tangem/tap/domain/extensions/MoonpayStatus.kt +++ b/app/src/main/java/com/tangem/tap/domain/extensions/MoonpayStatus.kt @@ -3,11 +3,13 @@ package com.tangem.tap.domain.extensions import com.tangem.blockchain.common.Blockchain import com.tangem.tap.features.wallet.redux.Currency import com.tangem.tap.network.moonpay.MoonpayStatus +import com.tangem.tap.store /** [REDACTED_AUTHOR] */ fun MoonpayStatus.buyIsAllowed(currency: Currency): Boolean { + if (store.state.globalState.configManager?.config?.isTopUpEnabled == false) return false if (!isBuyAllowed) return false return when (currency) { @@ -23,6 +25,7 @@ fun MoonpayStatus.buyIsAllowed(currency: Currency): Boolean { } fun MoonpayStatus.sellIsAllowed(currency: Currency): Boolean { + if (store.state.globalState.configManager?.config?.isTopUpEnabled == false) return false if (!isSellAllowed) return false return when (currency) { diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt index 29143f79b9..9c7a39b172 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsAction.kt @@ -1,6 +1,7 @@ package com.tangem.tap.features.details.redux import com.tangem.blockchain.common.Wallet +import com.tangem.common.card.Card import com.tangem.operations.pins.CheckUserCodesResponse import com.tangem.tap.common.redux.NotificationAction import com.tangem.tap.common.redux.global.FiatCurrencyName @@ -50,7 +51,7 @@ sealed class DetailsAction : Action { } sealed class ManageSecurity : DetailsAction() { - data class CheckCurrentSecurityOption(val cardId: String?) : ManageSecurity() + data class CheckCurrentSecurityOption(val card: Card) : ManageSecurity() data class SetCurrentOption(val userCodes: CheckUserCodesResponse) : ManageSecurity() object OpenSecurity : ManageSecurity() data class SelectOption(val option: SecurityOption) : ManageSecurity() diff --git a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt index 0f9b8982dc..05591c0e48 100644 --- a/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/details/redux/DetailsMiddleware.kt @@ -1,8 +1,10 @@ package com.tangem.tap.features.details.redux import com.tangem.common.CompletionResult +import com.tangem.common.card.FirmwareVersion import com.tangem.common.core.TangemSdkError import com.tangem.common.services.Result +import com.tangem.operations.pins.CheckUserCodesResponse import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.extensions.dispatchNotification import com.tangem.tap.common.extensions.dispatchOnMain @@ -141,16 +143,22 @@ class DetailsMiddleware { fun handle(action: DetailsAction.ManageSecurity) { when (action) { is DetailsAction.ManageSecurity.CheckCurrentSecurityOption -> { - scope.launch { - when (val response = tangemSdkManager.checkUserCodes(action.cardId)) { - is CompletionResult.Success -> { - store.dispatchOnMain( - DetailsAction.ManageSecurity.SetCurrentOption(response.data) - ) - store.dispatchOnMain(DetailsAction.ManageSecurity.OpenSecurity) - } - is CompletionResult.Failure -> { - + if (action.card.firmwareVersion >= FirmwareVersion.IsAccessCodeStatusAvailable) { + // for a card that meets this condition, we can get these statuses from it + val simulatedResponse = CheckUserCodesResponse( + action.card.isAccessCodeSet, action.card.isPasscodeSet ?: false + ) + store.dispatch(DetailsAction.ManageSecurity.SetCurrentOption(simulatedResponse)) + store.dispatch(DetailsAction.ManageSecurity.OpenSecurity) + } else { + scope.launch { + when (val response = tangemSdkManager.checkUserCodes(action.card.cardId)) { + is CompletionResult.Success -> { + store.dispatchOnMain(DetailsAction.ManageSecurity.SetCurrentOption(response.data)) + store.dispatchOnMain(DetailsAction.ManageSecurity.OpenSecurity) + } + is CompletionResult.Failure -> { + } } } } @@ -197,7 +205,7 @@ class DetailsMiddleware { actionToLog = FirebaseAnalyticsHandler.ActionToLog.ChangeSecOptions, parameters = mapOf( FirebaseAnalyticsHandler.AnalyticsParam.NEW_SECURITY_OPTION to - (selectedOption?.name ?: "") + (selectedOption?.name ?: "") ), card = store.state.detailsState.scanResponse?.card ) diff --git a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt index 6f7eb15b43..5a1864ec3f 100644 --- a/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/details/ui/DetailsFragment.kt @@ -119,9 +119,7 @@ class DetailsFragment : Fragment(R.layout.fragment_details), StoreSubscriber + store.state.globalState.tapWalletManager.updateConfigManager(scanResponse) store.dispatch(TwinCardsAction.IfTwinsPrepareState(scanResponse)) if (OnboardingHelper.isOnboardingCase(scanResponse)) {