export const DESKTOP_REFRESH_CURRENT_VIEW_EVENT = "ctms:desktop-refresh-current-view"; export interface DesktopRefreshEventDetail { handled: boolean; } export const dispatchDesktopRefreshCurrentView = (): boolean => { if (typeof window === "undefined") return false; const detail: DesktopRefreshEventDetail = { handled: false }; window.dispatchEvent(new CustomEvent(DESKTOP_REFRESH_CURRENT_VIEW_EVENT, { detail })); return detail.handled; }; export const onDesktopRefreshCurrentView = (handler: () => void | Promise): (() => void) => { if (typeof window === "undefined") return () => {}; const listener = (event: Event) => { const detail = (event as CustomEvent).detail; if (detail) detail.handled = true; void handler(); }; window.addEventListener(DESKTOP_REFRESH_CURRENT_VIEW_EVENT, listener); return () => window.removeEventListener(DESKTOP_REFRESH_CURRENT_VIEW_EVENT, listener); };