mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-07-22 12:35:49 +00:00
fix: apply the chain/asset-standard label to the main balance list too
The Send/Receive/etc. network picker (NetworkFlowViewModel) already showed "Ethereum (ERC-20)"/"Tron (TRC-20)" for a multi-chain token's per-chain rows, but the main Assets dashboard's own expandable per-token breakdown (tap a token like USDT to see every chain it exists on) is a completely separate code path (TokenAssetMappers/TokenAssetViewHolder) that still showed a bare chain name - found via a real device screenshot of that specific screen. Moved the shared display-name-with-label logic to a public extension (Chain.displayNameWithAssetStandard(), runtime/ext/ChainExt.kt) so both screens build the exact same string instead of duplicating (and now diverging) the same logic twice.
This commit is contained in:
+10
-2
@@ -6,7 +6,8 @@ import io.novafoundation.nova.common.presentation.AssetIconProvider
|
||||
import io.novafoundation.nova.common.presentation.getAssetIconOrFallback
|
||||
import io.novafoundation.nova.common.utils.formatting.formatAsChange
|
||||
import io.novafoundation.nova.common.utils.orZero
|
||||
import io.novafoundation.nova.feature_account_api.data.mappers.mapChainToUi
|
||||
import io.novafoundation.nova.feature_account_api.presenatation.chain.ChainUi
|
||||
import io.novafoundation.nova.runtime.ext.displayNameWithAssetStandard
|
||||
import io.novafoundation.nova.feature_assets.R
|
||||
import io.novafoundation.nova.feature_account_api.presenatation.chain.getAssetIconOrFallback
|
||||
import io.novafoundation.nova.feature_assets.domain.common.AssetWithNetwork
|
||||
@@ -90,7 +91,14 @@ class TokenAssetFormatter(
|
||||
group.getId(),
|
||||
mapAssetToAssetModel(it.asset, balance(it.balanceWithOffChain)),
|
||||
assetIconProvider.getAssetIconOrFallback(it.asset.token.configuration),
|
||||
mapChainToUi(it.chain)
|
||||
// Not mapChainToUi() here - this row's subtitle needs to disambiguate which issuance of the
|
||||
// token this is (e.g. "Ethereum (ERC-20)" vs "Tron (TRC-20)"), which a bare chain name alone
|
||||
// doesn't when multiple ecosystems share the same symbol (USDT, USDC, etc.).
|
||||
ChainUi(
|
||||
id = it.chain.id,
|
||||
name = it.chain.displayNameWithAssetStandard(),
|
||||
icon = it.chain.icon
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-8
@@ -16,10 +16,9 @@ import io.novafoundation.nova.feature_assets.presentation.flow.network.model.Net
|
||||
import io.novafoundation.nova.feature_wallet_api.presentation.formatters.amount.AmountFormatter
|
||||
import io.novafoundation.nova.feature_wallet_api.presentation.formatters.amount.formatAmountToAmountModel
|
||||
import io.novafoundation.nova.feature_wallet_api.presentation.formatters.amount.model.AmountConfig
|
||||
import io.novafoundation.nova.runtime.ext.assetStandardLabelOrNull
|
||||
import io.novafoundation.nova.runtime.ext.displayNameWithAssetStandard
|
||||
import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry
|
||||
import io.novafoundation.nova.runtime.multiNetwork.asset
|
||||
import io.novafoundation.nova.runtime.multiNetwork.chain.model.Chain
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.SharingStarted
|
||||
import kotlinx.coroutines.flow.map
|
||||
@@ -85,10 +84,4 @@ abstract class NetworkFlowViewModel(
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun Chain.displayNameWithAssetStandard(): String {
|
||||
val standardLabel = assetStandardLabelOrNull ?: return name
|
||||
|
||||
return "$name ($standardLabel)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -515,6 +515,18 @@ val Chain.assetStandardLabelOrNull: String?
|
||||
else -> null
|
||||
}
|
||||
|
||||
/**
|
||||
* Chain display name with its token-standard label appended where [assetStandardLabelOrNull] applies, e.g.
|
||||
* "Ethereum (ERC-20)". Shared across every screen that lists the same token symbol once per chain (the
|
||||
* Send/Receive/etc. network picker, the main balance list's per-token chain breakdown) - a bare chain name
|
||||
* alone doesn't convey which issuance this is when multiple ecosystems share the same symbol.
|
||||
*/
|
||||
fun Chain.displayNameWithAssetStandard(): String {
|
||||
val standardLabel = assetStandardLabelOrNull ?: return name
|
||||
|
||||
return "$name ($standardLabel)"
|
||||
}
|
||||
|
||||
fun Chain.Asset.requireStatemine(): Type.Statemine {
|
||||
require(type is Type.Statemine)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user