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.LiveData
import androidx.lifecycle.MutableLiveData import androidx.lifecycle.MutableLiveData
import io.novafoundation.nova.common.base.BaseViewModel 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.resources.ResourceManager
import io.novafoundation.nova.common.utils.images.Icon import io.novafoundation.nova.common.utils.images.Icon
import io.novafoundation.nova.common.view.ButtonState 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.R
import io.novafoundation.nova.feature_assets.presentation.AssetsRouter import io.novafoundation.nova.feature_assets.presentation.AssetsRouter
import io.novafoundation.nova.feature_assets.presentation.send.amount.SendPayload import io.novafoundation.nova.feature_assets.presentation.send.amount.SendPayload
import io.novafoundation.nova.feature_wallet_api.presentation.model.AssetPayload import io.novafoundation.nova.feature_wallet_api.presentation.model.AssetPayload
import io.novafoundation.nova.runtime.ext.ChainGeneses import io.novafoundation.nova.runtime.ext.ChainGeneses
import io.novafoundation.nova.runtime.ext.addressOf import io.novafoundation.nova.runtime.ext.addressOf
import io.novafoundation.nova.runtime.ext.displayNameWithAssetStandard
import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry import io.novafoundation.nova.runtime.multiNetwork.ChainRegistry
import io.novasama.substrate_sdk_android.ss58.SS58Encoder.toAccountId import io.novasama.substrate_sdk_android.ss58.SS58Encoder.toAccountId
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@@ -26,7 +28,8 @@ import java.net.URL
class BridgeViewModel( class BridgeViewModel(
private val router: AssetsRouter, private val router: AssetsRouter,
private val resourceManager: ResourceManager, private val resourceManager: ResourceManager,
private val chainRegistry: ChainRegistry private val chainRegistry: ChainRegistry,
private val assetIconProvider: AssetIconProvider
) : BaseViewModel() { ) : BaseViewModel() {
companion object { companion object {
@@ -386,10 +389,10 @@ class BridgeViewModel(
val asset = chain.assetsById.getValue(assetId) val asset = chain.assetsById.getValue(assetId)
return BridgeAssetCardUi( return BridgeAssetCardUi(
assetIcon = asset.icon.asIconOrFallback(), assetIcon = assetIconProvider.getAssetIconOrFallback(asset),
chainIconUrl = chain.icon, chainIconUrl = chain.icon,
symbol = asset.symbol.value, symbol = asset.symbol.value,
chainName = chain.name chainName = chain.displayNameWithAssetStandard()
) )
} }
} }
@@ -8,6 +8,7 @@ import dagger.Provides
import dagger.multibindings.IntoMap import dagger.multibindings.IntoMap
import io.novafoundation.nova.common.di.viewmodel.ViewModelKey import io.novafoundation.nova.common.di.viewmodel.ViewModelKey
import io.novafoundation.nova.common.di.viewmodel.ViewModelModule 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.common.resources.ResourceManager
import io.novafoundation.nova.feature_assets.presentation.AssetsRouter import io.novafoundation.nova.feature_assets.presentation.AssetsRouter
import io.novafoundation.nova.feature_assets.presentation.bridge.BridgeViewModel import io.novafoundation.nova.feature_assets.presentation.bridge.BridgeViewModel
@@ -22,9 +23,10 @@ class BridgeModule {
fun provideViewModel( fun provideViewModel(
router: AssetsRouter, router: AssetsRouter,
resourceManager: ResourceManager, resourceManager: ResourceManager,
chainRegistry: ChainRegistry chainRegistry: ChainRegistry,
assetIconProvider: AssetIconProvider
): ViewModel { ): ViewModel {
return BridgeViewModel(router, resourceManager, chainRegistry) return BridgeViewModel(router, resourceManager, chainRegistry, assetIconProvider)
} }
@Provides @Provides