All checks were successful
check / check (push) Successful in 4s
popup/index.js reduced to ~75 lines: loads state, builds a shared context object, initializes all views, shows first screen. Each view in popup/views/: helpers.js — $(), showError, hideError, showView welcome.js — welcome screen addWallet.js — unified create/import recovery phrase importKey.js — private key import home.js — wallet list, total value, address derivation addressDetail.js — address view, token list, QR, copy send.js — send form, ENS resolution, tx broadcast receive.js — QR + copy addToken.js — token lookup, common token picker settings.js — RPC endpoint approval.js — dApp approval (stub) Views communicate via a ctx object with shared callbacks (renderWalletList, showAddressDetail, doRefreshAndRender, etc).
77 lines
2.2 KiB
JavaScript
77 lines
2.2 KiB
JavaScript
// AutistMask popup entry point.
|
|
// Loads state, initializes views, triggers first render.
|
|
|
|
const { DEBUG } = require("../shared/wallet");
|
|
const { state, saveState, loadState } = require("../shared/state");
|
|
const { refreshPrices } = require("../shared/prices");
|
|
const { refreshBalances } = require("../shared/balances");
|
|
const { showView } = require("./views/helpers");
|
|
|
|
const home = require("./views/home");
|
|
const welcome = require("./views/welcome");
|
|
const addWallet = require("./views/addWallet");
|
|
const importKey = require("./views/importKey");
|
|
const addressDetail = require("./views/addressDetail");
|
|
const send = require("./views/send");
|
|
const receive = require("./views/receive");
|
|
const addToken = require("./views/addToken");
|
|
const settings = require("./views/settings");
|
|
const approval = require("./views/approval");
|
|
|
|
function renderWalletList() {
|
|
home.render(ctx);
|
|
}
|
|
|
|
async function doRefreshAndRender() {
|
|
await Promise.all([
|
|
refreshPrices(),
|
|
refreshBalances(state.wallets, state.trackedTokens, state.rpcUrl),
|
|
]);
|
|
await saveState();
|
|
renderWalletList();
|
|
}
|
|
|
|
const ctx = {
|
|
renderWalletList,
|
|
doRefreshAndRender,
|
|
showAddWalletView: () => addWallet.show(),
|
|
showImportKeyView: () => importKey.show(),
|
|
showAddressDetail: () => addressDetail.show(),
|
|
showAddTokenView: () => addToken.show(),
|
|
};
|
|
|
|
async function init() {
|
|
if (DEBUG) {
|
|
const banner = document.createElement("div");
|
|
banner.id = "debug-banner";
|
|
banner.textContent = "DEBUG / INSECURE";
|
|
banner.style.cssText =
|
|
"background:#c00;color:#fff;text-align:center;font-size:10px;padding:1px 0;font-family:monospace;position:sticky;top:0;z-index:9999;";
|
|
document.body.prepend(banner);
|
|
}
|
|
|
|
await loadState();
|
|
|
|
// Initialize all view event handlers
|
|
welcome.init(ctx);
|
|
addWallet.init(ctx);
|
|
importKey.init(ctx);
|
|
home.init(ctx);
|
|
addressDetail.init(ctx);
|
|
send.init(ctx);
|
|
receive.init(ctx);
|
|
addToken.init(ctx);
|
|
settings.init(ctx);
|
|
approval.init(ctx);
|
|
|
|
if (!state.hasWallet) {
|
|
showView("welcome");
|
|
} else {
|
|
renderWalletList();
|
|
showView("main");
|
|
doRefreshAndRender();
|
|
}
|
|
}
|
|
|
|
document.addEventListener("DOMContentLoaded", init);
|