70 lines
2.1 KiB
JavaScript
70 lines
2.1 KiB
JavaScript
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 };
|