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 7334aecc0d..7c38359430 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -26,7 +26,6 @@ import java.math.BigDecimal class TapWalletManager { private val payIdManager = PayIdManager() private val coinMarketCapService = CoinMarketCapService() - private var tapWorkarounds: TapWorkarounds? = null suspend fun loadWalletData() { val walletManager = store.state.globalState.scanNoteResponse?.walletManager @@ -84,7 +83,7 @@ class TapWalletManager { if (addAnalyticsEvent) { FirebaseAnalyticsHandler.triggerEvent(AnalyticsEvent.CARD_IS_SCANNED, data.card) } - tapWorkarounds = TapWorkarounds(data.card) + TapWorkarounds.updateCard(data.card) withContext(Dispatchers.Main) { store.dispatch(WalletAction.ResetState) store.dispatch(GlobalAction.SaveScanNoteResponse(data)) @@ -103,7 +102,7 @@ class TapWalletManager { } store.dispatch(WalletAction.LoadWallet( data.walletManager.wallet, data.verifyResponse?.artworkInfo?.id, - tapWorkarounds?.isStart2Coin != true && TapConfig.useTopUp + TapWorkarounds.isStart2Coin != true && TapConfig.useTopUp )) store.dispatch(WalletAction.LoadArtwork(data.card, artworkId)) store.dispatch(WalletAction.LoadFiatRate) @@ -168,7 +167,7 @@ class TapWalletManager { when (result) { is Result.Success -> { val payId = result.data - if (tapWorkarounds?.isPayIdEnabled() == false) { + if (TapWorkarounds.isPayIdEnabled() == false) { store.dispatch(WalletAction.DisablePayId) return@withContext } diff --git a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt index b0bedc66be..de1640fd9c 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt @@ -3,17 +3,19 @@ package com.tangem.tap.domain import com.tangem.commands.Card import java.util.* -class TapWorkarounds(val card: Card) { +object TapWorkarounds { - val isStart2Coin: Boolean = - card.cardData?.issuerName?.toLowerCase(Locale.US) == START_2_COIN_ISSUER + var isStart2Coin: Boolean = false + private set + + fun updateCard(card: Card) { + isStart2Coin = card.cardData?.issuerName?.toLowerCase(Locale.US) == START_2_COIN_ISSUER + } fun isPayIdEnabled(): Boolean { if (isStart2Coin) return false return true } - companion object { - const val START_2_COIN_ISSUER = "start2coin" - } + const val START_2_COIN_ISSUER = "start2coin" } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/AddressPayIdMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/AddressPayIdMiddleware.kt index 320eac8f91..98a096a77c 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/AddressPayIdMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/AddressPayIdMiddleware.kt @@ -4,6 +4,7 @@ import com.tangem.blockchain.common.Wallet import com.tangem.commands.common.network.Result import com.tangem.tap.common.redux.AppState import com.tangem.tap.domain.PayIdManager +import com.tangem.tap.domain.TapWorkarounds import com.tangem.tap.domain.isPayIdSupported import com.tangem.tap.features.send.redux.AddressPayIdActionUi import com.tangem.tap.features.send.redux.AddressPayIdVerifyAction @@ -48,7 +49,7 @@ internal class AddressPayIdMiddleware { private fun setAddressAndCheck(data: String, isUserInput: Boolean, dispatch: (Action) -> Unit) { val potentialPayId = data.toLowerCase() - if (PayIdManager.isPayId(potentialPayId)) { + if (PayIdManager.isPayId(potentialPayId) && TapWorkarounds.isPayIdEnabled()) { dispatch(SetPayIdWalletAddress(potentialPayId, "", isUserInput)) } else { dispatch(SetWalletAddress(data, isUserInput)) @@ -62,7 +63,7 @@ internal class AddressPayIdMiddleware { val addressPayId = sendState.addressPayIdState.normalFieldValue ?: return val isUserInput = sendState.addressPayIdState.viewFieldValue.isFromUserInput - if (PayIdManager.isPayId(addressPayId)) { + if (PayIdManager.isPayId(addressPayId) && TapWorkarounds.isPayIdEnabled()) { verifyPayId(addressPayId, wallet, isUserInput, dispatch) } else { verifyAddress(addressPayId, wallet, isUserInput, dispatch) @@ -149,7 +150,7 @@ internal class AddressPayIdMiddleware { } } - if (PayIdManager.isPayId(addressPayId)) { + if (PayIdManager.isPayId(addressPayId) && TapWorkarounds.isPayIdEnabled()) { verifyPayId(addressPayId, wallet, false, internalDispatcher) } else { verifyAddress(addressPayId, wallet, false, internalDispatcher) diff --git a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt index 0e266fcc54..bdd2e9f3c4 100644 --- a/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt +++ b/app/src/main/java/com/tangem/tap/features/send/ui/stateSubscribers/SendStateSubscriber.kt @@ -5,14 +5,12 @@ import android.content.Context import android.text.SpannableStringBuilder import android.view.ViewGroup import androidx.core.text.bold -import com.tangem.tap.common.extensions.beginDelayedTransition -import com.tangem.tap.common.extensions.enableError -import com.tangem.tap.common.extensions.show -import com.tangem.tap.common.extensions.update +import com.tangem.tap.common.extensions.* import com.tangem.tap.common.redux.getMessageString import com.tangem.tap.common.text.DecimalDigitsInputFilter import com.tangem.tap.common.toggleWidget.ProgressState import com.tangem.tap.domain.MultiMessageError +import com.tangem.tap.domain.TapWorkarounds import com.tangem.tap.domain.assembleErrors import com.tangem.tap.features.send.BaseStoreFragment import com.tangem.tap.features.send.redux.AddressPayIdVerifyAction.Error @@ -106,6 +104,12 @@ class SendStateSubscriber(fragment: BaseStoreFragment) : FragmentStateSubscriber val til = fg.tilAddressOrPayId val parsedError = parseError(til.context, state.error) + val hintResId = if (TapWorkarounds.isPayIdEnabled()) { + R.string.send_destination_hint_address_payid + }else { + R.string.send_destination_hint_address + } + til.hint = til.getString(hintResId) til.parent?.parent?.beginDelayedTransition() til.error = parsedError til.isErrorEnabled = parsedError != null diff --git a/app/src/main/res/layout/layout_send_address_payid.xml b/app/src/main/res/layout/layout_send_address_payid.xml index a1423a4ed9..12a9d76915 100644 --- a/app/src/main/res/layout/layout_send_address_payid.xml +++ b/app/src/main/res/layout/layout_send_address_payid.xml @@ -11,7 +11,7 @@ android:id="@+id/tilAddressOrPayId" android:layout_width="0dp" android:layout_height="wrap_content" - android:hint="@string/send_destination_hint" + android:hint="@string/send_destination_hint_address_payid" app:boxBackgroundColor="@color/backgroundLightGray" app:errorIconDrawable="@null" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 467c665f4f..d2b3bb460e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -51,7 +51,8 @@ Ihre PayID wurde erfolgreich erstellt und zum Clipboard kopiert Fehlerantwort beim Erstellen der ZahlungsID Diese PayID existiert bereits. Versuchen Sie mit einer anderen erneut. - Adresse oder PayID + Adresse oder PayID + Adresse Absenden Netzgebühr Betrag diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f315ba278d..6c2934f23c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -52,7 +52,8 @@ PayID a été créé avec succès et copié dans le presse-papiers Mauvaise réponse lors de la création de PayID Ce PayID existe déjà. Essayez une autre variante. - Adresse ou PayID + Adresse ou PayID + Adresse Envoyer Commissions du réseau Somme diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 93bac3c897..461ebd8693 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -50,7 +50,8 @@ PayID creato con successo e copiato negli appunti Errore di risposta durante la creazione del PayID Questo PayID esiste già. Scegline un altro. - Indirizzo o PayID + Indirizzo o PayID + Indirizzo Invia Rete libera Importo diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a14f49d345..80f2e89d5f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -62,7 +62,8 @@ Error response while creating PayID This PayID already exists. Try a different one. - Address or PayID + Address or PayID + Address Send Network fee Amount