fix: Bridge cards use AssetIconProvider and displayNameWithAssetStandard

The redesigned Bridge cards resolved asset icons via the chain-icon
helper (asset.icon.asIconOrFallback()), which treats the value as a
ready-to-load URL. Chain.Asset.icon is frequently a bare filename
resolved through AssetIconProvider's base-URL/color-mode logic, so
any asset relying on that path rendered a blank icon (Polkadot Asset
Hub's USDT, and the DOT/HEZ utility assets on the affected side).
Switched to assetIconProvider.getAssetIconOrFallback(asset), the same
path every other asset row in the app uses.

Also switched the card subtitle from chain.name to
chain.displayNameWithAssetStandard(), so Pezkuwi Asset Hub shows its
PEZ-20 token-standard label, matching Send/Receive/the balance list.
This commit is contained in:
2026-07-13 11:43:03 -07:00
parent 3b5e15457d
commit e0cd1f5def
2 changed files with 11 additions and 6 deletions
@@ -3,16 +3,18 @@ package io.novafoundation.nova.feature_assets.presentation.bridge
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import io.novafoundation.nova.common.base.BaseViewModel
import io.novafoundation.nova.common.presentation.AssetIconProvider
import io.novafoundation.nova.common.resources.ResourceManager
import io.novafoundation.nova.common.utils.images.Icon
import io.novafoundation.nova.common.view.ButtonState
import io.novafoundation.nova.feature_account_api.presenatation.chain.asIconOrFallback
import io.novafoundation.nova.feature_account_api.presenatation.chain.getAssetIconOrFallback
import io.novafoundation.nova.feature_assets.R
import io.novafoundation.nova.feature_assets.presentation.AssetsRouter
import io.novafoundation.nova.feature_assets.presentation.send.amount.SendPayload
import io.novafoundation.nova.feature_wallet_api.presentation.model.AssetPayload
import io.novafoundation.nova.runtime.ext.ChainGeneses
import io.novafoundation.nova.runtime.ext.addressOf
import io.novafoundation.nova.runtime.ext.displayNameWithAssetStandard
import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry
import io.novasama.substrate_sdk_android.ss58.SS58Encoder.toAccountId
import kotlinx.coroutines.Dispatchers
@@ -26,7 +28,8 @@ import java.net.URL
class BridgeViewModel(
private val router: AssetsRouter,
private val resourceManager: ResourceManager,
private val chainRegistry: ChainRegistry
private val chainRegistry: ChainRegistry,
private val assetIconProvider: AssetIconProvider
) : BaseViewModel() {
companion object {
@@ -386,10 +389,10 @@ class BridgeViewModel(
val asset = chain.assetsById.getValue(assetId)
return BridgeAssetCardUi(
assetIcon = asset.icon.asIconOrFallback(),
assetIcon = assetIconProvider.getAssetIconOrFallback(asset),
chainIconUrl = chain.icon,
symbol = asset.symbol.value,
chainName = chain.name
chainName = chain.displayNameWithAssetStandard()
)
}
}
@@ -8,6 +8,7 @@ import dagger.Provides
import dagger.multibindings.IntoMap
import io.novafoundation.nova.common.di.viewmodel.ViewModelKey
import io.novafoundation.nova.common.di.viewmodel.ViewModelModule
import io.novafoundation.nova.common.presentation.AssetIconProvider
import io.novafoundation.nova.common.resources.ResourceManager
import io.novafoundation.nova.feature_assets.presentation.AssetsRouter
import io.novafoundation.nova.feature_assets.presentation.bridge.BridgeViewModel
@@ -22,9 +23,10 @@ class BridgeModule {
fun provideViewModel(
router: AssetsRouter,
resourceManager: ResourceManager,
chainRegistry: ChainRegistry
chainRegistry: ChainRegistry,
assetIconProvider: AssetIconProvider
): ViewModel {
return BridgeViewModel(router, resourceManager, chainRegistry)
return BridgeViewModel(router, resourceManager, chainRegistry, assetIconProvider)
}
@Provides