aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js
diff options
context:
space:
mode:
authorChristophe Besson <cbesson@gmail.com>2026-09-21 19:53:33 +0200
committerChristophe Besson <cbesson@gmail.com>2026-09-21 19:53:33 +0200
commit9f3445d03f106ee3ebd8b4b1bd546a08d9169af7 (patch)
treefabae2b4c9e2fee75a73c5ba1479075be908a584 /packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js
parent24b563d0073849d0ba74c3fce9822a70c98e9d9f (diff)
downloadmeshbay-9f3445d03f106ee3ebd8b4b1bd546a08d9169af7.tar.gz
fix: ask in the page instead of native confirm/alert
A native confirm() or alert() leaves the desktop client unable to type until the window is refocused. ask.js draws both in the page; the SPA test now bans all three browser dialogs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js')
-rw-r--r--packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js8
1 files changed, 4 insertions, 4 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js b/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js
index 64d1c62..a65d26d 100644
--- a/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js
+++ b/packages/meshbay-hub/src/meshbay_hub/static/playlist-menu.js
@@ -2,6 +2,7 @@ import {
html, useState, useCallback, useEffect,
} from './vendor/htm-preact.js';
import { t } from './i18n.js';
+import { ask } from './ask.js';
import { Icon } from './icon.js';
import { Menu, useMenu } from './menu.js';
import * as P from './playlists.js';
@@ -123,10 +124,9 @@ function PlaylistMenuButton({ userId, lists, reload, onPlayQueue, onSync, cached
}, [userId, reload, say]);
const deletePlaylist = useCallback(async (p) => {
- // `confirm` and not a component: Electron implements it, a dozen places in
- // this SPA already use it, and a deletion is a tombstone rather than
- // something that can be undone from the interface.
- if (!window.confirm(t('playlists.confirm_delete', { name: p.name }))) return;
+ // Asked first: a deletion is a tombstone rather than something that can be
+ // undone from the interface.
+ if (!await ask(t('playlists.confirm_delete', { name: p.name }))) return;
await P.deletePlaylist(userId, p.id);
await reload();
say(t('playlists.deleted', { name: p.name }));