Add Delete Account button with confirmation modal

Red "Delete Account" button at top of Account Settings. Clicking opens
a second modal with an irreversibility warning and the account name,
requiring a second explicit confirmation before deletion. Deletes the
account row plus all associated checks and deposits. Redirects to the
setup wizard if no accounts remain.
This commit is contained in:
2026-03-18 21:15:05 -06:00
parent 35a5d576ea
commit e4feafa82b
4 changed files with 82 additions and 0 deletions
+40
View File
@@ -644,6 +644,40 @@ async function saveAccountSettings() {
}
}
// ── Delete account ────────────────────────────────────────────────────────────
function openDeleteAccount() {
const name = (state.account && state.account.company1) || 'this account';
document.getElementById('delete-account-name').textContent = name;
document.getElementById('delete-account-overlay').classList.add('open');
document.getElementById('delete-account-modal').classList.add('open');
}
function closeDeleteAccount() {
document.getElementById('delete-account-overlay').classList.remove('open');
document.getElementById('delete-account-modal').classList.remove('open');
}
async function confirmDeleteAccount() {
const btn = document.getElementById('btn-confirm-delete-account');
btn.disabled = true;
btn.textContent = 'Deleting…';
try {
await apiFetch('DELETE', `/api/account/${state.activeAccountId}`);
closeDeleteAccount();
closeAccountSettings();
state.account = null;
state.activeAccountId = null;
state.checks = [];
localStorage.removeItem('activeAccountId');
await loadAccounts(); // will open wizard if no accounts remain
} catch (err) {
alert('Delete failed: ' + err.message);
btn.disabled = false;
btn.textContent = 'Yes, Delete Account';
}
}
// ── QBO Import ────────────────────────────────────────────────────────────────
let qboChecksRecords = null;
@@ -1241,6 +1275,12 @@ function init() {
document.getElementById('acct-settings-overlay').addEventListener('click', closeAccountSettings);
document.getElementById('btn-save-acct-settings').addEventListener('click', saveAccountSettings);
document.getElementById('btn-delete-account').addEventListener('click', openDeleteAccount);
document.getElementById('btn-close-delete-account').addEventListener('click', closeDeleteAccount);
document.getElementById('btn-cancel-delete-account').addEventListener('click', closeDeleteAccount);
document.getElementById('delete-account-overlay').addEventListener('click', closeDeleteAccount);
document.getElementById('btn-confirm-delete-account').addEventListener('click', confirmDeleteAccount);
document.getElementById('btn-set-check-no').addEventListener('click', openSetCheckNo);
document.getElementById('btn-close-set-check-no').addEventListener('click', closeSetCheckNo);
document.getElementById('btn-cancel-set-check-no').addEventListener('click', closeSetCheckNo);