迁移管理菜单和钓鱼按钮事件绑定
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
// 聊天室管理菜单事件绑定,替代 input-bar 中的管理类内联 onclick。
|
||||
|
||||
let adminMenuEventsBound = false;
|
||||
|
||||
/**
|
||||
* 绑定管理菜单、管理动作与全屏特效选择事件。
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
export function bindAdminMenuControls() {
|
||||
if (adminMenuEventsBound || typeof document === "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
adminMenuEventsBound = true;
|
||||
document.addEventListener("click", (event) => {
|
||||
if (!(event.target instanceof Element)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const menuToggle = event.target.closest("[data-chat-admin-menu-toggle]");
|
||||
if (menuToggle) {
|
||||
event.preventDefault();
|
||||
window.toggleAdminMenu?.(event);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const adminAction = event.target.closest("[data-chat-admin-action]");
|
||||
if (adminAction) {
|
||||
event.preventDefault();
|
||||
|
||||
// 管理菜单只负责入口分发,权限校验和实际动作仍由后端与原有全局函数负责。
|
||||
const action = adminAction.getAttribute("data-chat-admin-action") || "";
|
||||
if (action && typeof window.runAdminAction === "function") {
|
||||
window.runAdminAction(action);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
const effectButton = event.target.closest("[data-chat-admin-effect]");
|
||||
if (effectButton) {
|
||||
event.preventDefault();
|
||||
|
||||
// 特效按钮只触发管理员发起请求,实际播放仍由 chat:effect 广播和 EffectManager 处理。
|
||||
const effect = effectButton.getAttribute("data-chat-admin-effect") || "";
|
||||
if (effect && typeof window.selectEffect === "function") {
|
||||
window.selectEffect(effect);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.target.closest("[data-chat-admin-menu]")) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
// 聊天室钓鱼入口事件绑定,先兼容存量全局 startFishing 实现。
|
||||
|
||||
let fishingEventsBound = false;
|
||||
|
||||
/**
|
||||
* 绑定钓鱼按钮点击事件。
|
||||
*
|
||||
* @returns {void}
|
||||
*/
|
||||
export function bindFishingControls() {
|
||||
if (fishingEventsBound || typeof document === "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
fishingEventsBound = true;
|
||||
document.addEventListener("click", (event) => {
|
||||
if (!(event.target instanceof Element) || !event.target.closest("[data-chat-fishing-start]")) {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
// 钓鱼完整流程仍在 fishing-panel.blade.php,当前模块只统一按钮事件入口。
|
||||
if (typeof window.startFishing === "function") {
|
||||
window.startFishing();
|
||||
}
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user