From 312bfb5ba25ac63e507b65de7500632fc4ea4eb8 Mon Sep 17 00:00:00 2001 From: abefernan <44572727+abefernan@users.noreply.github.com> Date: Fri, 23 Jun 2023 23:02:19 +0200 Subject: [PATCH] Fix printableCoin for microdenoms --- lib/displayHelpers.ts | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/lib/displayHelpers.ts b/lib/displayHelpers.ts index e7db53d..a635ead 100644 --- a/lib/displayHelpers.ts +++ b/lib/displayHelpers.ts @@ -37,26 +37,6 @@ const thinSpace = "\u202F"; const printableCoin = (coin: Coin, chainInfo: ChainInfo) => { if (!coin.amount || !coin.denom) return ""; - // Check if denom is in assets - const foundAsset = chainInfo.assets?.find( - (asset) => asset.denom.toLowerCase() === coin.denom.toLowerCase(), - ); - - // Check if denom starting with "u" has a macrodenom in assets - const foundMacrodenom = coin.denom.startsWith("u") - ? chainInfo.assets?.find( - (asset) => asset.denom.toLowerCase() === coin.denom.slice(1).toLowerCase(), - ) - : undefined; - - const assetToPrint = foundMacrodenom ?? foundAsset; - - if (assetToPrint) { - const value = Decimal.fromAtomics(coin.amount ?? "0", assetToPrint.exponent).toString(); - const ticker = assetToPrint.denom.toUpperCase(); - return value + thinSpace + ticker; - } - // Ellide IBC tokens if (coin.denom.startsWith("ibc/")) { const value = coin.amount; @@ -66,6 +46,19 @@ const printableCoin = (coin: Coin, chainInfo: ChainInfo) => { return value + thinSpace + ticker; } + const foundAsset = chainInfo.assets?.find( + (asset) => coin.denom === asset.symbol || coin.denom === asset.base, + ); + const foundExponent = foundAsset?.denom_units.find( + (unit) => unit.denom === foundAsset.symbol.toLowerCase(), + )?.exponent; + + if (foundExponent) { + const value = Decimal.fromAtomics(coin.amount, foundExponent).toString(); + const ticker = foundAsset.symbol; + return value + thinSpace + ticker; + } + // Fallback to plain coin display return coin.amount + thinSpace + coin.denom.toUpperCase(); };