Files
ctms/frontend/src/composables/useDesktopRefresh.ts
T
2026-06-30 22:26:34 +08:00

24 lines
981 B
TypeScript

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<DesktopRefreshEventDetail>(DESKTOP_REFRESH_CURRENT_VIEW_EVENT, { detail }));
return detail.handled;
};
export const onDesktopRefreshCurrentView = (handler: () => void | Promise<void>): (() => void) => {
if (typeof window === "undefined") return () => {};
const listener = (event: Event) => {
const detail = (event as CustomEvent<DesktopRefreshEventDetail>).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);
};