diff --git a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessage.kt b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessage.kt index 500f3844b3..03c10daf6f 100644 --- a/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessage.kt +++ b/app/src/main/java/com/tangem/tap/domain/configurable/warningMessage/WarningMessage.kt @@ -21,7 +21,7 @@ data class WarningMessage( val messageFormatArg: String? = null ) { val blockchainList: List? by lazy { - blockchains?.map { Blockchain.fromId(it.toUpperCase()) } + blockchains?.map { Blockchain.fromId(it.uppercase()) } } 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 163ac1264a..40c5755a23 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 @@ -5,6 +5,7 @@ import com.tangem.common.extensions.VoidCallback import com.tangem.tap.common.extensions.containsAny import com.tangem.tap.common.extensions.removeBy import com.tangem.wallet.R +import java.util.* /** [REDACTED_AUTHOR] @@ -181,6 +182,24 @@ class WarningMessagesManager( WarningMessage.Origin.Local ) + fun restoreFundsWarning(): WarningMessage = WarningMessage( + title = "", + message = "", + type = WarningMessage.Type.Temporary, + priority = WarningMessage.Priority.Warning, + listOf(WarningMessage.Location.MainScreen), + blockchains = null, + titleResId = R.string.alert_funds_restoration_message, + messageResId = R.string.alert_funds_restoration_message, + origin = WarningMessage.Origin.Local, + buttonTextId = R.string.warning_button_learn_more + ) + const val REMAINING_SIGNATURES_WARNING = 10 + + fun getRestoreFundsGuideUrl(locale: String): String { + val code = if (locale == Locale("ru").language) "ru" else "en" + return "https://tangem.com/$code/notion" + } } } \ 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 94ee1e747e..5dcf4fba4a 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 @@ -8,6 +8,7 @@ import com.tangem.common.card.Card import com.tangem.common.card.FirmwareVersion import com.tangem.domain.common.ScanResponse import com.tangem.domain.common.TapWorkarounds.isTestCard +import com.tangem.domain.common.TapWorkarounds.useOldStyleDerivation import com.tangem.tap.common.analytics.AnalyticsEvent import com.tangem.tap.common.extensions.isGreaterThan import com.tangem.tap.common.redux.global.GlobalState @@ -88,6 +89,9 @@ class WarningsMiddleware { addWarningMessage(WarningMessagesManager.testCardWarning(), autoUpdate = true) return@let } + if (card.useOldStyleDerivation) { + addWarningMessage(warning = WarningMessagesManager.restoreFundsWarning()) + } showWarningLowRemainingSignaturesIfNeeded(card) if (card.firmwareVersion.type != FirmwareVersion.FirmwareType.Release) { diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WarningMessagesAdapter.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WarningMessagesAdapter.kt index afcba036da..8dd0d76fc6 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WarningMessagesAdapter.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/adapters/WarningMessagesAdapter.kt @@ -1,9 +1,11 @@ package com.tangem.tap.features.wallet.ui.adapters +import android.content.res.Resources import android.graphics.Rect import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.core.os.ConfigurationCompat import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView @@ -13,6 +15,7 @@ import com.tangem.tap.common.analytics.AnalyticsEvent import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.domain.configurable.warningMessage.WarningMessage +import com.tangem.tap.domain.configurable.warningMessage.WarningMessagesManager import com.tangem.tap.features.feedback.RateCanBeBetterEmail import com.tangem.tap.features.wallet.redux.WalletAction import com.tangem.tap.store @@ -56,7 +59,9 @@ class WarningMessageVH(val binding: LayoutWarningBinding) : RecyclerView.ViewHol tvTitle.text = getString(warning.titleResId, warning.title) tvMessage.text = getString( - resId = warning.messageResId, default = warning.message, formatArgs = warning.messageFormatArg + resId = warning.messageResId, + default = warning.message, + formatArgs = warning.messageFormatArg ) } @@ -73,10 +78,13 @@ class WarningMessageVH(val binding: LayoutWarningBinding) : RecyclerView.ViewHol WarningMessage.Type.Permanent, WarningMessage.Type.TestCard -> { binding.groupControlsTemporary.hide() binding.groupControlsRating.hide() + binding.btnClose.hide() } WarningMessage.Type.Temporary -> { binding.groupControlsRating.hide() binding.groupControlsTemporary.show() + binding.btnClose.hide() + val buttonAction = when (warning.titleResId) { R.string.warning_important_security_info -> { @@ -84,6 +92,19 @@ class WarningMessageVH(val binding: LayoutWarningBinding) : RecyclerView.ViewHol store.dispatch(WalletAction.ShowDialog.SignedHashesMultiWalletDialog) } } + R.string.alert_funds_restoration_message -> { + binding.btnClose.show() + binding.btnClose.setOnClickListener { + store.dispatch(GlobalAction.HideWarningMessage(warning)) + } + val locale = ConfigurationCompat + .getLocales(Resources.getSystem().configuration) + .get(0) + val url = WarningMessagesManager.getRestoreFundsGuideUrl(locale.language) + View.OnClickListener { + store.dispatchOpenUrl(url) + } + } else -> { View.OnClickListener { store.dispatch(GlobalAction.HideWarningMessage(warning)) @@ -99,6 +120,7 @@ class WarningMessageVH(val binding: LayoutWarningBinding) : RecyclerView.ViewHol WarningMessage.Type.AppRating -> { binding.groupControlsTemporary.hide() binding.groupControlsRating.show() + binding.btnClose.show() val analyticsHandler = store.state.globalState.analyticsHandlers binding.btnClose.setOnClickListener { analyticsHandler?.triggerEvent(AnalyticsEvent.APP_RATING_DISMISS) diff --git a/app/src/main/res/layout/layout_warning.xml b/app/src/main/res/layout/layout_warning.xml index e2f6f41d6f..adab88869c 100644 --- a/app/src/main/res/layout/layout_warning.xml +++ b/app/src/main/res/layout/layout_warning.xml @@ -103,7 +103,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:visibility="visible" - app:constraint_referenced_ids="btn_close, btn_can_be_better, btn_really_cool" /> + app:constraint_referenced_ids="btn_can_be_better, btn_really_cool" /> diff --git a/app/src/main/res/values-de/strings_final.xml b/app/src/main/res/values-de/strings_final.xml index 9fc6dd2a11..6753ad4f1b 100644 --- a/app/src/main/res/values-de/strings_final.xml +++ b/app/src/main/res/values-de/strings_final.xml @@ -40,6 +40,7 @@ Available networks Note that tokens on different networks have different addresses. Double check that your address matches the network when you transfer funds. Contract address copied! + Funds restoration instuction Custom diff --git a/app/src/main/res/values-fr/strings_final.xml b/app/src/main/res/values-fr/strings_final.xml index 9fc6dd2a11..6753ad4f1b 100644 --- a/app/src/main/res/values-fr/strings_final.xml +++ b/app/src/main/res/values-fr/strings_final.xml @@ -40,6 +40,7 @@ Available networks Note that tokens on different networks have different addresses. Double check that your address matches the network when you transfer funds. Contract address copied! + Funds restoration instuction Custom diff --git a/app/src/main/res/values-it/strings_final.xml b/app/src/main/res/values-it/strings_final.xml index 9fc6dd2a11..6753ad4f1b 100644 --- a/app/src/main/res/values-it/strings_final.xml +++ b/app/src/main/res/values-it/strings_final.xml @@ -40,6 +40,7 @@ Available networks Note that tokens on different networks have different addresses. Double check that your address matches the network when you transfer funds. Contract address copied! + Funds restoration instuction Custom diff --git a/app/src/main/res/values-ru/strings_final.xml b/app/src/main/res/values-ru/strings_final.xml index 19b4411fba..9078737b3c 100644 --- a/app/src/main/res/values-ru/strings_final.xml +++ b/app/src/main/res/values-ru/strings_final.xml @@ -40,6 +40,7 @@ Доступные сети Внимание! Валюты на разных сетях имеют разные адреса. Убедитесь, что адрес соответствует сети, в которой вы отправляете средства. Адрес контракта скопирован! + Инструкция по восстановлению средств Пользовательский diff --git a/app/src/main/res/values/strings_final.xml b/app/src/main/res/values/strings_final.xml index 9fc6dd2a11..6753ad4f1b 100644 --- a/app/src/main/res/values/strings_final.xml +++ b/app/src/main/res/values/strings_final.xml @@ -40,6 +40,7 @@ Available networks Note that tokens on different networks have different addresses. Double check that your address matches the network when you transfer funds. Contract address copied! + Funds restoration instuction Custom