From 055c8d121bd9c257e00a9bb4e9a95a34149a25da Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 14 Sep 2026 10:44:31 +0200 Subject: [PATCH] fix: the last browser confirm() in the resources library uses the app's confirm modal Deleting a generated image asked with the browser's own confirm(), a bare dialog that looks nothing like the rest of the app. It now goes through showConfirm like every other confirmation, with the danger styling and a Delete button. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_015j4L7Eu5Jp8gVMPsXdPaZ2 --- public/js/myResources.js | 42 ++++++++++++++++++++++------------------ 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/public/js/myResources.js b/public/js/myResources.js index ceafed56..f5f41b6a 100644 --- a/public/js/myResources.js +++ b/public/js/myResources.js @@ -590,26 +590,30 @@ function deleteImage(image, tile, button) { // Asked, because it removes the picture from every deck that used it. The // deck keeps working; the figure is simply no longer there. - if (!window.confirm('Delete this image? Any resource that used it will render without it.')) return; - button.disabled = true; - fetch('/api/generated-images/' + encodeURIComponent(image.id), { - method: 'DELETE', headers: getAuthHeaders() - }) - .then(function (r) { return r.json(); }) - .then(function (data) { - if (!data.success) throw new Error(data.error || 'Could not delete that image'); - tile.remove(); - var grid = document.getElementById('mr-images-grid'); - var empty = document.getElementById('mr-images-empty'); - if (grid && !grid.children.length && empty) { - empty.hidden = false; - empty.textContent = 'No images yet.'; - } + var message = 'Delete this image? Any resource that used it will render without it.'; + if (!window.showConfirm) { if (window.confirm(message)) doDelete(); return; } + window.showConfirm(message, doDelete, { danger: true, confirmText: 'Delete' }); + function doDelete() { + button.disabled = true; + fetch('/api/generated-images/' + encodeURIComponent(image.id), { + method: 'DELETE', headers: getAuthHeaders() }) - .catch(function (err) { - button.disabled = false; - if (typeof showToast === 'function') showToast(err.message, 'error'); - }); + .then(function (r) { return r.json(); }) + .then(function (data) { + if (!data.success) throw new Error(data.error || 'Could not delete that image'); + tile.remove(); + var grid = document.getElementById('mr-images-grid'); + var empty = document.getElementById('mr-images-empty'); + if (grid && !grid.children.length && empty) { + empty.hidden = false; + empty.textContent = 'No images yet.'; + } + }) + .catch(function (err) { + button.disabled = false; + if (typeof showToast === 'function') showToast(err.message, 'error'); + }); + } } // The library as last fetched. Held so searching and the Modify picker both