Workflow updating files of flowallet

This commit is contained in:
RanchiMall Dev 2025-08-20 07:01:05 +00:00
parent 3f8bae43ae
commit 1019612a7a

View File

@ -2258,52 +2258,86 @@
} }
}, 100)) }, 100))
function checkSenderBalance() { async function checkSenderBalance() {
renderBalance({ balance: 0, showLoader: true }) try {
const senderPrivateKey = getRef('get_private_key_field').value.trim() renderBalance({ balance: 0, showLoader: true });
const senderFloAddr = floCrypto.getFloID(senderPrivateKey)
Promise.all([ const senderPrivateKey = getRef('get_private_key_field').value.trim();
floWebWallet.getBalance(senderFloAddr), const senderFloAddr = floCrypto.getFloID(senderPrivateKey);
fetchJson(`${floGlobals.tokenURL}api/v2/floAddressBalance/${senderFloAddr}`)
]).then(([retrievedBal, { floAddressBalances }]) => { const [floBalRes, tokenRes] = await Promise.allSettled([
renderBalance({ balance: parseFloat(retrievedBal), address: senderFloAddr }) floWebWallet.getBalance(senderFloAddr),
let ownedTokens = [] fetchJson(`${floGlobals.tokenURL}api/v2/floAddressBalance/${senderFloAddr}`)
for (const token in floAddressBalances) { ]);
ownedTokens.push(html`
<label class="token-balance"> // --- FLO coin ---
<input type="radio" name="sender-token" data-balance=${(floAddressBalances[token].balance || 0).toFixed(8)} value=${token}/> if (floBalRes.status === 'fulfilled') {
<span>${token} </span><b class="margin-left-auto">${parseFloat((floAddressBalances[token].balance || 0).toFixed(8))}</b> const retrievedBal = parseFloat(floBalRes.value) || 0;
</label> renderBalance({ balance: retrievedBal, address: senderFloAddr });
`) } else {
} // Show address but 0 balance (or your renderBalance can show a placeholder)
if (ownedTokens.length) { renderBalance({ balance: 0, address: senderFloAddr });
ownedTokens.push(html` }
<label class="token-balance">
<input type="radio" name="sender-token" value="none" checked/> // --- FLO-based tokens ---
<span>Don't send a token</span> if (tokenRes.status === 'fulfilled') {
</label> const floAddressBalances = tokenRes.value?.floAddressBalances || {};
`) const ownedTokens = [];
renderElem(getRef('sender_tokens_wrapper'), html.for(getRef('sender_tokens_wrapper'), senderFloAddr)`
<div class="grid"> for (const token in floAddressBalances) {
<h5>Tokens</h5> const bal = parseFloat((floAddressBalances[token].balance || 0).toFixed(8));
<p>Select a token, if you want to send a token.</p> ownedTokens.push(html`
</div> <label class="token-balance">
<fieldset onchange=${handleTokenSelection} class="grid gap-1"> <input type="radio" name="sender-token" data-balance=${bal.toFixed(8)} value=${token}/>
<div class="grid gap-0-5"> <span>${token}</span>
${ownedTokens} <b class="margin-left-auto">${bal}</b>
</div> </label>
</fieldset> `);
`) }
getRef('sender_tokens_wrapper').classList.remove('hidden')
handleTokenSelection() if (ownedTokens.length) {
} else { ownedTokens.push(html`
getRef('sender_tokens_wrapper').classList.add('hidden') <label class="token-balance">
clearSelection() <input type="radio" name="sender-token" value="none" checked/>
} <span>Don't send a token</span>
}).catch((error) => { </label>
notify(error, 'error'); `);
resetBalance()
}) renderElem(
getRef('sender_tokens_wrapper'),
html.for(getRef('sender_tokens_wrapper'), senderFloAddr)`
<div class="grid">
<h5>Tokens</h5>
<p>Select a token, if you want to send a token.</p>
</div>
<fieldset onchange=${handleTokenSelection} class="grid gap-1">
<div class="grid gap-0-5">
${ownedTokens}
</div>
</fieldset>
`
);
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) { function openAddressSelector(e) {
floGlobals.addressSelectorTarget = e.target.closest('sm-input') floGlobals.addressSelectorTarget = e.target.closest('sm-input')