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.
-
-
- `)
- 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.
+
+
+ `
+ );
+ 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')