diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/DefaultDataForReceiveFactory.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/DefaultDataForReceiveFactory.kt index 76a1ab3929..7ac7421c08 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/DefaultDataForReceiveFactory.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/DefaultDataForReceiveFactory.kt @@ -2,9 +2,12 @@ package com.tangem.data.pay import arrow.core.Either import com.squareup.moshi.Moshi +import com.tangem.blockchain.blockchains.ethereum.Chain +import com.tangem.blockchain.common.Blockchain import com.tangem.blockchainsdk.utils.ExcludedBlockchains import com.tangem.core.error.UniversalError import com.tangem.data.common.currency.CryptoCurrencyFactory +import com.tangem.data.common.network.NetworkFactory import com.tangem.data.pay.util.TangemPayErrorConverter import com.tangem.data.pay.util.TangemPayWalletsManager import com.tangem.datasource.di.NetworkMoshi @@ -18,6 +21,13 @@ import timber.log.Timber import javax.inject.Inject private const val TAG = "TangemPay: TokenReceiveConfigFactory" +/** + * Custom token parameters. Will be used only for F&F. + */ +private const val TOKEN_ID = "usd-coin" +private const val TOKEN_NAME = "USDC" +private const val TOKEN_CONTRACT_ADDRESS = "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359" +private const val TOKEN_DECIMALS = 6 internal class DefaultDataForReceiveFactory @Inject constructor( @NetworkMoshi moshi: Moshi, @@ -28,22 +38,28 @@ internal class DefaultDataForReceiveFactory @Inject constructor( private val cryptoCurrencyFactory by lazy(mode = LazyThreadSafetyMode.NONE) { CryptoCurrencyFactory(excludedBlockchains) } + private val networkFactory by lazy(mode = LazyThreadSafetyMode.NONE) { + NetworkFactory(excludedBlockchains) + } private val errorConverter by lazy(mode = LazyThreadSafetyMode.NONE) { TangemPayErrorConverter(moshi) } override fun getDataForReceive(depositAddress: String, chainId: Int): Either { return try { val wallet = tangemPayWalletsManager.getDefaultWalletForTangemPayBlocking() - - /** - * Create [CryptoCurrency.Coin] only for F&F. - * Later will use [CryptoCurrency.Token] when contractAddresses will be provided by BFF. - */ - val currency = cryptoCurrencyFactory.createCoin( - chainId = chainId, + val blockchain: Blockchain? = Chain.entries.find { it.id == chainId }?.blockchain + val network = networkFactory.create( + blockchain = requireNotNull(blockchain), extraDerivationPath = null, userWallet = wallet, - ) ?: error("Cannot create crypto currency from chainId $chainId") - + ) + val currency = cryptoCurrencyFactory.createToken( + network = requireNotNull(network), + rawId = CryptoCurrency.RawID(TOKEN_ID), + name = TOKEN_NAME, + symbol = TOKEN_NAME, + contractAddress = TOKEN_CONTRACT_ADDRESS, + decimals = TOKEN_DECIMALS, + ) val result = DataForReceive( currency = currency, walletId = wallet.walletId, diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt index b910852a53..d19ebecc39 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt @@ -1,7 +1,6 @@ package com.tangem.features.tangempay.model import androidx.compose.runtime.Stable -import androidx.compose.ui.graphics.toArgb import com.arkivanov.decompose.router.slot.SlotNavigation import com.arkivanov.decompose.router.slot.activate import com.tangem.core.decompose.di.ModelScoped @@ -13,9 +12,7 @@ import com.tangem.core.ui.clipboard.ClipboardManager import com.tangem.core.ui.components.containers.pullToRefresh.PullToRefreshConfig.ShowRefreshState import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.message.SnackbarMessage -import com.tangem.core.ui.res.TangemColorPalette import com.tangem.domain.models.TokenReceiveConfig -import com.tangem.domain.models.TokenReceiveType import com.tangem.domain.pay.DataForReceiveFactory import com.tangem.domain.pay.repository.CardDetailsRepository import com.tangem.domain.visa.model.TangemPayTxHistoryItem @@ -38,12 +35,6 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import javax.inject.Inject -/** - * Custom token name and icon url. Will be used only for F&F. - */ -private const val TOKEN_NAME = "USDC" -private const val TOKEN_ICON_URL = "https://s3.eu-central-1.amazonaws.com/tangem.api/coins/large/usd-coin.png" - @Suppress("LongParameterList") @Stable @ModelScoped @@ -104,12 +95,6 @@ internal class TangemPayDetailsModel @Inject constructor( userWalletId = it.walletId, showMemoDisclaimer = false, receiveAddress = it.receiveAddress, - type = TokenReceiveType.Custom( - tokenName = TOKEN_NAME, - tokenIconUrl = TOKEN_ICON_URL, - fallbackTint = TangemColorPalette.Black.toArgb(), - fallbackBackground = TangemColorPalette.Meadow.toArgb(), - ), ) bottomSheetNavigation.activate(TangemPayDetailsNavigation.Receive(config)) }