From d9cc5513493bf7daf179ae203ca61ba87844f5ee Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Nov 2021 16:45:07 +0300 Subject: [PATCH 1/4] Updated on 2026-08-14 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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\"' From 4aca655138829ab69f8cdeaf11758a7cc10df2a4 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Nov 2021 17:15:22 +0300 Subject: [PATCH 2/4] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt | 3 +-- .../java/com/tangem/tap/domain/extensions/MoonpayStatus.kt | 3 +++ .../java/com/tangem/tap/features/home/redux/HomeMiddleware.kt | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) 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/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index feb775872b..43346530de 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 @@ -60,6 +60,7 @@ private fun handleReadCard() { } else { changeButtonState(ButtonState.PROGRESS) store.dispatch(GlobalAction.ScanCard({ scanResponse -> + store.state.globalState.tapWalletManager.updateConfigManager(scanResponse) store.dispatch(TwinCardsAction.IfTwinsPrepareState(scanResponse)) if (OnboardingHelper.isOnboardingCase(scanResponse)) { From 841423843a76ebb6385b476b5d012d4cb66f4aa7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Nov 2021 17:31:38 +0300 Subject: [PATCH 3/4] Updated on 2026-08-14 --- .../com/tangem/tap/features/feedback/FeedbackManager.kt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/feedback/FeedbackManager.kt b/app/src/main/java/com/tangem/tap/features/feedback/FeedbackManager.kt index 2d8050dbdc..0e4fe0a875 100644 --- a/app/src/main/java/com/tangem/tap/features/feedback/FeedbackManager.kt +++ b/app/src/main/java/com/tangem/tap/features/feedback/FeedbackManager.kt @@ -256,15 +256,19 @@ class ScanFailsEmail : EmailData { class SendTransactionFailedEmail(private val error: String) : EmailData { override val subject: String = "Can’t send a transaction" override val mainMessage: String = "Please tell us more about your issue. Every small detail can help." + override fun createOptionalMessage(infoHolder: AdditionalEmailInfo): String { val walletInfo = infoHolder.onSendErrorWalletInfo ?: AdditionalEmailInfo.EmailWalletInfo() return StringBuilder().apply { - appendKeyValue("Error", error) appendKeyValue("Card ID", infoHolder.cardId) + appendKeyValue("Firmware version", infoHolder.cardFirmwareVersion) + appendKeyValue("Signed hashes", infoHolder.signedHashesCount) appendDelimiter(this) appendKeyValue("Blockchain", walletInfo.blockchain.fullName) appendKeyValue("Host", walletInfo.host) appendKeyValue("Token", infoHolder.token) + appendKeyValue("Error", error) + appendDelimiter(this) appendKeyValue("Source address", walletInfo.address) appendKeyValue("Destination address", infoHolder.destinationAddress) appendKeyValue("Amount", infoHolder.amount) @@ -273,8 +277,6 @@ class SendTransactionFailedEmail(private val error: String) : EmailData { appendKeyValue("Phone model", infoHolder.phoneModel) appendKeyValue("OS version", infoHolder.osVersion) appendKeyValue("App version", infoHolder.appVersion) - appendKeyValue("Firmware version", infoHolder.cardFirmwareVersion) - appendKeyValue("Signed hashes", infoHolder.signedHashesCount) // appendKeyValue("Transaction HEX", infoHolder.transactionHex) }.toString() } From 20c985d8594340ee26937ecf0194c127c8e54d29 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 16 Nov 2021 19:45:05 +0300 Subject: [PATCH 4/4] Updated on 2026-08-14 --- .../features/details/redux/DetailsAction.kt | 3 +- .../details/redux/DetailsMiddleware.kt | 30 ++++++++++++------- .../features/details/ui/DetailsFragment.kt | 6 ++-- 3 files changed, 23 insertions(+), 16 deletions(-) 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