Updated on 2026-08-14

This commit is contained in:
Tangem 2024-06-18 19:53:45 +05:00
parent 6a9b344abf
commit 9855f169fc
4 changed files with 24 additions and 6 deletions

View file

@ -10,6 +10,7 @@ import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.tangem.blockchain.blockchains.hedera.HederaTokenAddressConverter
import com.tangem.blockchain.common.Blockchain
import com.tangem.blockchain.common.Token
import com.tangem.blockchain.common.derivation.DerivationStyle
@ -77,6 +78,7 @@ internal class AddCustomTokenViewModel @Inject constructor(
private val actionsHandler = ActionsHandler(featureRouter)
private val testActionsHandler = TestActionsHandler()
private val formStateBuilder = FormStateBuilder()
private val hederaAddressConverter = HederaTokenAddressConverter()
private var currentCryptoCurrencies: List<CryptoCurrency> = emptyList()
@ -365,7 +367,8 @@ internal class AddCustomTokenViewModel @Inject constructor(
private fun updateForm(address: String, selectedNetwork: Blockchain) {
viewModelScope.launch(dispatchers.main) {
runCatching(dispatchers.io) {
featureInteractor.findToken(address = address, blockchain = selectedNetwork)
val tokenAddress = convertTokenAddress(selectedNetwork, address)
featureInteractor.findToken(address = tokenAddress, blockchain = selectedNetwork)
}
.onSuccess { token ->
foundToken = token
@ -849,8 +852,10 @@ internal class AddCustomTokenViewModel @Inject constructor(
val currency = when (getCustomTokenType()) {
CustomTokenType.TOKEN -> {
val contractAddress = foundToken?.network?.contractAddress
?: uiState.form.contractAddressInputField.value
val contractAddress = convertTokenAddress(
blockchain = blockchain,
address = foundToken?.network?.contractAddress ?: uiState.form.contractAddressInputField.value,
)
CustomCurrency.CustomToken(
token = Token(
name = uiState.form.tokenNameInputField.value,
@ -888,6 +893,13 @@ internal class AddCustomTokenViewModel @Inject constructor(
}
}
private fun convertTokenAddress(blockchain: Blockchain, address: String): String {
return when (blockchain) {
Blockchain.Hedera, Blockchain.HederaTestnet -> hederaAddressConverter.convertToTokenId(address)
else -> address
}
}
private inner class TestActionsHandler {
fun onClearAddressButtonClick() {

View file

@ -40,7 +40,7 @@ class AssociateAssetUseCase(
catch(
block = {
when (val result = walletManagersFacade.associateAsset(userWalletId, currency, signer)) {
is SimpleResult.Failure -> raise(AssociateAssetError.DataError(result.error.message))
is SimpleResult.Failure -> raise(AssociateAssetError.DataError(result.error.customMessage))
SimpleResult.Success -> Unit
}
},

View file

@ -13,6 +13,7 @@ import com.tangem.core.ui.components.bottomsheets.tokenreceive.mapToAddressModel
import com.tangem.core.ui.components.transactions.state.TxHistoryState
import com.tangem.core.ui.extensions.TextReference
import com.tangem.core.ui.extensions.resourceReference
import com.tangem.core.ui.extensions.stringReference
import com.tangem.core.ui.extensions.wrappedList
import com.tangem.core.ui.haptic.HapticManager
import com.tangem.datasource.local.swaptx.SwapTransactionStatusStore
@ -753,7 +754,12 @@ internal class TokenDetailsViewModel @Inject constructor(
),
)
}
is AssociateAssetError.DataError -> Timber.e(e.message)
is AssociateAssetError.DataError -> {
internalUiState.value = stateFactory.getStateWithErrorDialog(
stringReference(e.message.orEmpty()),
)
Timber.e(e.message)
}
}
},
ifRight = { internalUiState.value = stateFactory.getStateWithRemovedHederaAssociateNotification() },

View file

@ -87,7 +87,7 @@ markdown = "0.7.2"
# endregion Other libraries
# region Tangem
tangemBlockchainSdk = "release-app_5.12-677"
tangemBlockchainSdk = "release-app_5.12-678"
#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds
tangemCardSdk = "release-app_5.12-364"
#tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^