const { $, showView, showFlash } = require("./helpers"); const { addressFromPrivateKey } = require("../../shared/wallet"); const { encryptWithPassword } = require("../../shared/vault"); const { state, saveState } = require("../../shared/state"); function show() { $("import-private-key").value = ""; $("import-key-password").value = ""; $("import-key-password-confirm").value = ""; showView("import-key"); } function init(ctx) { $("btn-import-key-confirm").addEventListener("click", async () => { const key = $("import-private-key").value.trim(); if (!key) { showFlash("Please enter your private key."); return; } let addr; try { addr = addressFromPrivateKey(key); } catch (e) { showFlash("Invalid private key."); return; } const pw = $("import-key-password").value; const pw2 = $("import-key-password-confirm").value; if (!pw) { showFlash("Please choose a password."); return; } if (pw.length < 12) { showFlash("Password must be at least 12 characters."); return; } if (pw !== pw2) { showFlash("Passwords do not match."); return; } const encrypted = await encryptWithPassword(key, pw); const walletNum = state.wallets.length + 1; state.wallets.push({ type: "key", name: "Wallet " + walletNum, encryptedSecret: encrypted, addresses: [ { address: addr, balance: "0.0000", tokenBalances: [] }, ], }); state.hasWallet = true; await saveState(); ctx.renderWalletList(); showView("main"); ctx.doRefreshAndRender(); }); $("btn-import-key-back").addEventListener("click", () => { if (!state.hasWallet) { showView("welcome"); } else { ctx.renderWalletList(); showView("main"); } }); } module.exports = { init, show };