Updated on 2026-08-14
This commit is contained in:
parent
468843f7b9
commit
6dcb4d9aa6
2 changed files with 25 additions and 24 deletions
|
|
@ -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<UniversalError, DataForReceive> {
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue