diff --git a/src/popup/index.html b/src/popup/index.html index 503e068..7a1980c 100644 --- a/src/popup/index.html +++ b/src/popup/index.html @@ -178,6 +178,22 @@ class="text-2xl font-bold mb-2 min-h-[2rem]" > + +
+ + +
+
diff --git a/src/popup/views/home.js b/src/popup/views/home.js index 5bcff37..3ff16d0 100644 --- a/src/popup/views/home.js +++ b/src/popup/views/home.js @@ -6,7 +6,9 @@ const { addressDotHtml, truncateMiddle, } = require("./helpers"); -const { state, saveState } = require("../../shared/state"); +const { state, saveState, currentAddress } = require("../../shared/state"); +const { updateSendBalance } = require("./send"); +const QRCode = require("qrcode"); const { deriveAddressFromXpub } = require("../../shared/wallet"); const { formatUsd, @@ -109,6 +111,55 @@ function render(ctx) { renderTotalValue(); } -function init(ctx) {} +function selectActiveAddress() { + for (let wi = 0; wi < state.wallets.length; wi++) { + for (let ai = 0; ai < state.wallets[wi].addresses.length; ai++) { + if ( + state.wallets[wi].addresses[ai].address === state.activeAddress + ) { + state.selectedWallet = wi; + state.selectedAddress = ai; + return true; + } + } + } + return false; +} + +function init(ctx) { + $("btn-main-send").addEventListener("click", () => { + if (!selectActiveAddress()) { + showFlash("No active address selected."); + return; + } + const addr = currentAddress(); + if (!addr.balance || parseFloat(addr.balance) === 0) { + showFlash("Cannot send \u2014 zero balance."); + return; + } + $("send-to").value = ""; + $("send-amount").value = ""; + updateSendBalance(); + showView("send"); + }); + + $("btn-main-receive").addEventListener("click", () => { + if (!selectActiveAddress()) { + showFlash("No active address selected."); + return; + } + const addr = currentAddress(); + const address = addr ? addr.address : ""; + $("receive-address").textContent = address; + if (address) { + QRCode.toCanvas($("receive-qr"), address, { + width: 200, + margin: 2, + color: { dark: "#000000", light: "#ffffff" }, + }); + } + showView("receive"); + }); +} module.exports = { init, render };