diff --git a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt
index 1ee151033f..391bbc9b13 100644
--- a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt
+++ b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessagesManager.kt
@@ -117,5 +117,17 @@ class WarningMessagesManager(
fun isAlreadySignedHashesWarning(warning: WarningMessage): Boolean {
return warning.messageResId == R.string.alert_card_signed_transactions
}
+
+ fun onlineVerificationFailed(): WarningMessage = WarningMessage(
+ "",
+ "",
+ type = WarningMessage.Type.Permanent,
+ priority = WarningMessage.Priority.Critical,
+ listOf(WarningMessage.Location.MainScreen),
+ null,
+ R.string.warning_failed_to_verify_card_title,
+ R.string.warning_failed_to_verify_card_message,
+ WarningMessage.Origin.Local
+ )
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt
index a64f722056..ad2c009c9c 100644
--- a/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt
+++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/middlewares/WarningsMiddleware.kt
@@ -6,6 +6,7 @@ import com.tangem.blockchain.common.Wallet
import com.tangem.blockchain.extensions.SimpleResult
import com.tangem.commands.common.card.Card
import com.tangem.commands.common.card.CardType
+import com.tangem.commands.verifycard.VerifyCardState
import com.tangem.common.extensions.getType
import com.tangem.tap.common.analytics.AnalyticsEvent
import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler
@@ -29,16 +30,7 @@ class WarningsMiddleware {
fun handle(action: WalletAction.Warnings, globalState: GlobalState?) {
when (action) {
is WalletAction.Warnings.CheckIfNeeded -> {
- val validator = globalState?.scanNoteResponse?.walletManager as? SignatureCountValidator
- globalState?.scanNoteResponse?.card?.let { card ->
- globalState.warningManager?.removeWarnings(WarningMessage.Origin.Local)
- if (card.getType() != CardType.Release) {
- addWarningMessage(WarningMessagesManager.devCardWarning())
- } else if (!preferencesStorage.wasCardScannedBefore(card.cardId)) {
- checkIfWarningNeeded(card, validator)?.let { addWarningMessage(it) }
- }
- updateWarningMessages()
- }
+ showCardWarningsIfNeeded(globalState)
val readyToShow = preferencesStorage.appRatingLaunchObserver.isReadyToShow()
if (readyToShow) addWarningMessage(WarningMessagesManager.appRatingWarning(), true)
}
@@ -69,6 +61,25 @@ class WarningsMiddleware {
}
}
+ private fun showCardWarningsIfNeeded(globalState: GlobalState?) {
+ val validator = globalState?.scanNoteResponse?.walletManager as? SignatureCountValidator
+ globalState?.scanNoteResponse?.card?.let { card ->
+ globalState.warningManager?.removeWarnings(WarningMessage.Origin.Local)
+ if (card.getType() != CardType.Release) {
+ addWarningMessage(WarningMessagesManager.devCardWarning())
+ } else if (!preferencesStorage.wasCardScannedBefore(card.cardId)) {
+ checkIfWarningNeeded(card, validator)?.let { addWarningMessage(it) }
+ }
+ if (card.getType() == CardType.Release) {
+ if (globalState.scanNoteResponse.verifyResponse?.verificationState ==
+ VerifyCardState.VerifiedOffline) {
+ addWarningMessage(WarningMessagesManager.onlineVerificationFailed())
+ }
+ }
+ updateWarningMessages()
+ }
+ }
+
private fun checkIfWarningNeeded(
card: Card, signatureCountValidator: SignatureCountValidator? = null,
): WarningMessage? {
diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml
index 3e6b22d9c1..860b985336 100644
--- a/app/src/main/res/values/strings_untranslated.xml
+++ b/app/src/main/res/values/strings_untranslated.xml
@@ -99,6 +99,8 @@ this wallet.
+ Add tokens
+ Authenticity check failed
+ This card might be a production sample or counterfeit