diff --git a/flowallet/index.html b/flowallet/index.html index bbd8743..feb5afb 100644 --- a/flowallet/index.html +++ b/flowallet/index.html @@ -2258,52 +2258,86 @@ } }, 100)) - function checkSenderBalance() { - renderBalance({ balance: 0, showLoader: true }) - const senderPrivateKey = getRef('get_private_key_field').value.trim() - const senderFloAddr = floCrypto.getFloID(senderPrivateKey) - Promise.all([ - floWebWallet.getBalance(senderFloAddr), - fetchJson(`${floGlobals.tokenURL}api/v2/floAddressBalance/${senderFloAddr}`) - ]).then(([retrievedBal, { floAddressBalances }]) => { - renderBalance({ balance: parseFloat(retrievedBal), address: senderFloAddr }) - let ownedTokens = [] - for (const token in floAddressBalances) { - ownedTokens.push(html` - - `) - } - if (ownedTokens.length) { - ownedTokens.push(html` - - `) - renderElem(getRef('sender_tokens_wrapper'), html.for(getRef('sender_tokens_wrapper'), senderFloAddr)` -
-
Tokens
-

Select a token, if you want to send a token.

-
-
-
- ${ownedTokens} -
-
- `) - getRef('sender_tokens_wrapper').classList.remove('hidden') - handleTokenSelection() - } else { - getRef('sender_tokens_wrapper').classList.add('hidden') - clearSelection() - } - }).catch((error) => { - notify(error, 'error'); - resetBalance() - }) + async function checkSenderBalance() { + try { + renderBalance({ balance: 0, showLoader: true }); + + const senderPrivateKey = getRef('get_private_key_field').value.trim(); + const senderFloAddr = floCrypto.getFloID(senderPrivateKey); + + const [floBalRes, tokenRes] = await Promise.allSettled([ + floWebWallet.getBalance(senderFloAddr), + fetchJson(`${floGlobals.tokenURL}api/v2/floAddressBalance/${senderFloAddr}`) + ]); + + // --- FLO coin --- + if (floBalRes.status === 'fulfilled') { + const retrievedBal = parseFloat(floBalRes.value) || 0; + renderBalance({ balance: retrievedBal, address: senderFloAddr }); + } else { + // Show address but 0 balance (or your renderBalance can show a placeholder) + renderBalance({ balance: 0, address: senderFloAddr }); + } + + // --- FLO-based tokens --- + if (tokenRes.status === 'fulfilled') { + const floAddressBalances = tokenRes.value?.floAddressBalances || {}; + const ownedTokens = []; + + for (const token in floAddressBalances) { + const bal = parseFloat((floAddressBalances[token].balance || 0).toFixed(8)); + ownedTokens.push(html` + + `); + } + + if (ownedTokens.length) { + ownedTokens.push(html` + + `); + + renderElem( + getRef('sender_tokens_wrapper'), + html.for(getRef('sender_tokens_wrapper'), senderFloAddr)` +
+
Tokens
+

Select a token, if you want to send a token.

+
+
+
+ ${ownedTokens} +
+
+ ` + ); + getRef('sender_tokens_wrapper').classList.remove('hidden'); + handleTokenSelection(); + } else { + getRef('sender_tokens_wrapper').classList.add('hidden'); + clearSelection(); + } + } else { + // Token call failed — just hide token UI and keep going + getRef('sender_tokens_wrapper').classList.add('hidden'); + clearSelection(); + } + + // Optional: if BOTH failed, notify + reset visual state if you prefer + if (floBalRes.status !== 'fulfilled' && tokenRes.status !== 'fulfilled') { + notify('Unable to fetch FLO balance and token balances.', 'error'); + // resetBalance(); // uncomment if you want to clear the address/balance too + } + } catch (error) { + notify(error, 'error'); + resetBalance(); + } } function openAddressSelector(e) { floGlobals.addressSelectorTarget = e.target.closest('sm-input')