Files
chatroom/resources/js/chat-room/holiday-modal.js
T
2026-04-25 11:06:31 +08:00

53 lines
1.5 KiB
JavaScript

// 节日福利弹窗事件代理,承接从 Blade 内联 onclick 迁移出的公屏领取入口。
let holidayModalEventsBound = false;
/**
* 从公屏系统消息中打开已缓存的节日福利批次。
*
* @param {string|number} runId 福利批次 ID
* @returns {void}
*/
export function openHolidayRunFromSystemMessage(runId) {
const normalizedRunId = String(runId || "");
const detail = window.__holidayRuns?.[normalizedRunId];
const modal = document.getElementById("holiday-event-modal");
if (!normalizedRunId || !modal || typeof window.Alpine?.$data !== "function") {
return;
}
if (!detail) {
window.chatDialog?.alert("当前福利批次信息未缓存,请等待下一轮广播或刷新页面后重试。", "提示", "#f59e0b");
return;
}
window.Alpine.$data(modal)?.open?.(detail);
}
/**
* 绑定节日福利公屏按钮点击事件。
*
* @returns {void}
*/
export function bindHolidayModalControls() {
if (holidayModalEventsBound || typeof document === "undefined") {
return;
}
holidayModalEventsBound = true;
document.addEventListener("click", (event) => {
if (!(event.target instanceof Element)) {
return;
}
const claimButton = event.target.closest("[data-holiday-run-id]");
if (!claimButton) {
return;
}
event.preventDefault();
openHolidayRunFromSystemMessage(claimButton.getAttribute("data-holiday-run-id") || "");
});
}