Fix Chrome dialog auto-dismiss with Bootstrap modals

- Add modal-alerts.js library with Bootstrap modal replacements
- Replace all 15 confirm() calls with showConfirm/showDeleteConfirm
- Auto-override window.alert() for all alert() calls
- Fixes Chrome 132+ aggressively blocking native dialogs
This commit is contained in:
Chris Lu
2026-01-25 23:09:14 -08:00
parent 31a1c87db0
commit 74c7b10bc7
31 changed files with 357 additions and 47 deletions

View File

@@ -802,7 +802,7 @@ templ ObjectStoreUsers(data dash.ObjectStoreUsersData) {
// Delete user function
async function deleteUser(username) {
if (confirm(`Are you sure you want to delete user "${username}"? This action cannot be undone.`)) {
showDeleteConfirm(username, async function() {
try {
const response = await fetch(`/api/users/${username}`, {
method: 'DELETE'
@@ -819,6 +819,9 @@ templ ObjectStoreUsers(data dash.ObjectStoreUsersData) {
console.error('Error deleting user:', error);
showErrorMessage('Failed to delete user: ' + error.message);
}
}, 'Are you sure you want to delete this user? This action cannot be undone.');
}
}
}
}
@@ -1102,7 +1105,7 @@ templ ObjectStoreUsers(data dash.ObjectStoreUsersData) {
// Delete access key
async function deleteAccessKey(username, accessKey) {
if (confirm('Are you sure you want to delete this access key?')) {
showDeleteConfirm(accessKey, async function() {
try {
const response = await fetch(`/api/users/${username}/access-keys/${accessKey}`, {
method: 'DELETE'
@@ -1121,6 +1124,9 @@ templ ObjectStoreUsers(data dash.ObjectStoreUsersData) {
console.error('Error deleting access key:', error);
showErrorMessage('Failed to delete access key: ' + error.message);
}
}, 'Are you sure you want to delete this access key?');
}
}
}
}