fix(more-menu): make ⋯ "Event Details" robust + non-silent (#31)

The wiring was structurally intact (menu item event-details → handler case →
handleEventDetailsAction → EventDetailsModal.open), so the failure was silent:
- handleEventDetailsAction only opened the modal `if (… && payload.video)` and
  never caught the async open() rejection — any miss = nothing happens.
- EventDetailsModal.open ran the (throwable) renderVersion BEFORE openStaticModal,
  so a render hiccup left the click looking dead.

Hardened:
- handleEventDetailsAction surfaces "No video selected" / "unavailable" instead of
  failing silently, falls back to app.eventDetailsModal, and .catch()es open().
- open() now shows the modal (openStaticModal) FIRST, then renders in a try/catch.
- The ⋯ popover is dismissed before opening the modal.

Couldn't repro by inspection, so this both fixes the likely causes and makes any
remaining failure visible (a toast / console warn naming the exact reason).

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
thePR0M3TH3ANandClaude Opus 4.8 committed 2026-06-24 17:53:32 -04:00
1 parent 36f3c6e127
commit 63dcb5f6ed
5 files changed
+46 -14

No files matched your search

+8 -1
View File
@@ -1604,11 +1604,18 @@ export default class MoreMenuController {
break;
}
case "event-details": {
// Card context passes the card's video; modal context falls back to the
// active video (the dispatch path doesn't carry the video object).
let targetVideo = video;
if (!targetVideo && context === "modal") {
targetVideo = currentVideo;
}
// Dismiss the menu before opening the details modal.
try {
this.activePopover?.close?.();
} catch (error) {
// ignore
}
await this.callbacks.handleEventDetailsAction({
eventId: dataset.eventId,
video: targetVideo,