diff --git a/src/popup/views/addressToken.js b/src/popup/views/addressToken.js index 21d9310..6f25fef 100644 --- a/src/popup/views/addressToken.js +++ b/src/popup/views/addressToken.js @@ -12,7 +12,7 @@ const { balanceLine, } = require("./helpers"); const { state, currentAddress, saveState } = require("../../shared/state"); -const { TOKEN_BY_ADDRESS } = require("../../shared/tokenList"); +const { TOKEN_BY_ADDRESS, resolveSymbol } = require("../../shared/tokenList"); const { formatUsd, getPrice, @@ -96,14 +96,11 @@ function show() { const tb = (addr.tokenBalances || []).find( (t) => t.address.toLowerCase() === tokenId.toLowerCase(), ); - const tracked = (state.trackedTokens || []).find( - (t) => t.address.toLowerCase() === tokenId.toLowerCase(), + symbol = resolveSymbol( + tokenId, + addr.tokenBalances, + state.trackedTokens, ); - symbol = - (tb && tb.symbol) || - (tracked && tracked.symbol) || - (knownToken && knownToken.symbol) || - "?"; amount = tb ? parseFloat(tb.balance || "0") : 0; price = getPrice(symbol); } diff --git a/src/popup/views/send.js b/src/popup/views/send.js index 9272784..fda8a66 100644 --- a/src/popup/views/send.js +++ b/src/popup/views/send.js @@ -10,7 +10,7 @@ const { const { state, currentAddress } = require("../../shared/state"); let ctx; const { getProvider } = require("../../shared/balances"); -const { KNOWN_SYMBOLS, TOKEN_BY_ADDRESS } = require("../../shared/tokenList"); +const { KNOWN_SYMBOLS, resolveSymbol } = require("../../shared/tokenList"); const EXT_ICON = `` + @@ -73,15 +73,11 @@ function updateSendBalance() { const tb = (addr.tokenBalances || []).find( (t) => t.address.toLowerCase() === token.toLowerCase(), ); - const knownToken = TOKEN_BY_ADDRESS.get(token.toLowerCase()); - const tracked = (state.trackedTokens || []).find( - (t) => t.address.toLowerCase() === token.toLowerCase(), + const symbol = resolveSymbol( + token, + addr.tokenBalances, + state.trackedTokens, ); - const symbol = - (tb && tb.symbol) || - (tracked && tracked.symbol) || - (knownToken && knownToken.symbol) || - "?"; const bal = tb ? tb.balance || "0" : "0"; $("send-balance").textContent = "Current balance: " + bal + " " + symbol; @@ -132,15 +128,11 @@ function init(_ctx) { const tb = (addr.tokenBalances || []).find( (t) => t.address.toLowerCase() === token.toLowerCase(), ); - const knownTk = TOKEN_BY_ADDRESS.get(token.toLowerCase()); - const trackedTk = (state.trackedTokens || []).find( - (t) => t.address.toLowerCase() === token.toLowerCase(), + tokenSymbol = resolveSymbol( + token, + addr.tokenBalances, + state.trackedTokens, ); - tokenSymbol = - (tb && tb.symbol) || - (trackedTk && trackedTk.symbol) || - (knownTk && knownTk.symbol) || - "?"; tokenBalance = tb ? tb.balance || "0" : "0"; } diff --git a/src/shared/tokenList.js b/src/shared/tokenList.js index 45aa587..eff9dd6 100644 --- a/src/shared/tokenList.js +++ b/src/shared/tokenList.js @@ -3645,10 +3645,27 @@ async function getTopTokenPrices(n) { return prices; } +// Resolve a token symbol from multiple sources, never returning "?". +function resolveSymbol(tokenAddress, tokenBalances, trackedTokens) { + const lower = (tokenAddress || "").toLowerCase(); + const tb = (tokenBalances || []).find( + (t) => t.address.toLowerCase() === lower, + ); + if (tb && tb.symbol) return tb.symbol; + const known = TOKEN_BY_ADDRESS.get(lower); + if (known && known.symbol) return known.symbol; + const tracked = (trackedTokens || []).find( + (t) => t.address.toLowerCase() === lower, + ); + if (tracked && tracked.symbol) return tracked.symbol; + return lower.slice(0, 10) + "\u2026"; +} + module.exports = { TOKENS, TOKEN_BY_ADDRESS, KNOWN_SYMBOLS, getTopTokens, getTopTokenPrices, + resolveSymbol, };