diff --git a/src/popup/index.html b/src/popup/index.html
index 68edf66..4a2b899 100644
--- a/src/popup/index.html
+++ b/src/popup/index.html
@@ -708,9 +708,7 @@
Wallets
-
- Add a new wallet from a recovery phrase or private key.
-
+
-
-
Danger Zone
-
- Permanently delete the currently selected wallet. This
- cannot be undone. Make sure you have backed up your
- recovery phrase before proceeding.
-
-
- Delete Wallet
-
-
-
-
- Confirm Deletion
-
+
Confirm Deletion
- Deleting is
- permanent. Any funds on this wallet will be
- unrecoverable if you have not backed up your recovery
- phrase.
+ Delete ? This
+ is permanent. Any funds will be unrecoverable without
+ your recovery phrase.
Enter your password to confirm:
- Delete permanently
+ Delete
{
+ const name = escapeHtml(wallet.name || "Wallet " + (idx + 1));
+ html += ``;
+ html += `${name} `;
+ html += `[delete] `;
+ html += `
`;
+ });
+ container.innerHTML = html;
+ container.querySelectorAll(".btn-delete-wallet").forEach((btn) => {
+ btn.addEventListener("click", () => {
+ const idx = parseInt(btn.dataset.idx, 10);
+ const wallet = state.wallets[idx];
+ deleteWalletIndex = idx;
+ $("delete-wallet-name").textContent =
+ wallet.name || "Wallet " + (idx + 1);
+ $("delete-wallet-password").value = "";
+ $("delete-wallet-confirm").classList.remove("hidden");
+ });
+ });
+}
+
function show() {
$("settings-rpc").value = state.rpcUrl;
$("settings-blockscout").value = state.blockscoutUrl;
renderTrackedTokens();
renderSiteLists();
- // Populate wallet deletion dropdown
- const sel = $("delete-wallet-select");
- sel.innerHTML = "";
- for (let i = 0; i < state.wallets.length; i++) {
- const opt = document.createElement("option");
- opt.value = i;
- opt.textContent = state.wallets[i].name || "Wallet " + (i + 1);
- sel.appendChild(opt);
- }
+ renderWalletListSettings();
+ deleteWalletIndex = null;
$("delete-wallet-confirm").classList.add("hidden");
showView("settings");
@@ -205,20 +228,10 @@ function init(ctx) {
showView("main");
});
- $("btn-delete-wallet").addEventListener("click", () => {
- if (state.selectedWallet === null || state.wallets.length === 0) {
- showFlash("No wallet selected.");
- return;
- }
- const wallet = state.wallets[state.selectedWallet];
- $("delete-wallet-name").textContent = wallet.name || "this wallet";
- $("delete-wallet-password").value = "";
- $("delete-wallet-confirm").classList.remove("hidden");
- });
-
$("btn-delete-wallet-cancel").addEventListener("click", () => {
$("delete-wallet-confirm").classList.add("hidden");
$("delete-wallet-password").value = "";
+ deleteWalletIndex = null;
});
$("btn-delete-wallet-confirm").addEventListener("click", async () => {
@@ -228,7 +241,12 @@ function init(ctx) {
return;
}
- const walletIdx = state.selectedWallet;
+ if (deleteWalletIndex === null) {
+ showFlash("No wallet selected for deletion.");
+ return;
+ }
+
+ const walletIdx = deleteWalletIndex;
const wallet = state.wallets[walletIdx];
// Verify password against the wallet's encrypted data
@@ -251,6 +269,8 @@ function init(ctx) {
delete state.deniedSites[addr];
}
+ deleteWalletIndex = null;
+
if (state.wallets.length === 0) {
// No wallets left — reset selection and show welcome
state.selectedWallet = null;
@@ -268,6 +288,7 @@ function init(ctx) {
await saveState();
$("delete-wallet-confirm").classList.add("hidden");
showFlash("Wallet deleted.");
+ renderWalletListSettings();
ctx.renderWalletList();
showView("main");
}