fix: 修复迁移遗留的按钮无响应、头像框层级及构建错误
迁移收尾修复:
- heartbeat.js: 移除 export { } 中重复的 startHeartbeat/stopHeartbeat(已通过 export function 导出)
- scripts.blade.php: 移除 JS 注释中的 {{ }} 避免 Blade 编译为 e() 导致 PHP 解析错误
- preferences-status.js: 补全 6 个缺失的 window.* 赋值(toggleBlockMenu/toggleFeatureMenu 等),
实现迁移中丢失的 updateDailyStatus/clearDailyStatus,修复 handleFeatureLocalClear 清屏回调
- toolbar.js: 补全 window.runFeatureShortcut 赋值
头像框样式修复(chat-decorations.css):
- z-index 互换:头像降至 1,框升至 3,使框边缘可遮挡头像外围
- 使用 CSS mask(radial-gradient)挖环形替代旧 ::before 实心圆遮挡方案
- clip-path: circle(50%) 硬裁剪确保圆形,不受 chat.css border-radius: 2px 覆盖
- 特异性提升至 .user-item .avatar-frame-wrapper .user-head
新 Vite 模块(从 Blade 迁移):
- chat-state.js / message-renderer.js / user-list.js / chat-events.js
- composer.js(重写)/ heartbeat.js / admin-commands.js
- vip-presence.js / chat-decorations.css
This commit is contained in:
@@ -208,14 +208,17 @@ export {
|
||||
} from "./chat-room/compact-shop-panel.js";
|
||||
export { bindSlotMachineControls, slotFab, slotPanel } from "./chat-room/slot-machine.js";
|
||||
export { bindVipControls, buyVip, closeVipModal, openVipModal, saveVipPresenceSettings, switchVipTab } from "./chat-room/vip-controls.js";
|
||||
export { showVipPresenceBanner } from "./chat-room/vip-presence.js";
|
||||
export {
|
||||
BLOCKABLE_SYSTEM_SENDERS,
|
||||
BLOCKED_SYSTEM_SENDERS_STORAGE_KEY,
|
||||
CHAT_SOUND_MUTED_STORAGE_KEY,
|
||||
bindBlockMenuControls,
|
||||
bindSoundMuteControl,
|
||||
buildChatPreferencesPayload,
|
||||
closeDailyStatusEditor,
|
||||
closeFeatureMenu,
|
||||
getCurrentUserDailyStatus,
|
||||
handleFeatureLocalClear,
|
||||
isSoundMuted,
|
||||
loadBlockedSystemSenders,
|
||||
@@ -224,9 +227,18 @@ export {
|
||||
openDailyStatusEditor,
|
||||
parseDailyStatusExpiry,
|
||||
persistBlockedSystemSenders,
|
||||
persistChatPreferencesToLocal,
|
||||
removeDailyStatusFields,
|
||||
resolveBlockedSystemSenderKey,
|
||||
saveChatPreferences,
|
||||
setOnlineUserDailyStatus,
|
||||
setRenderedMessagesVisibilityBySender,
|
||||
setSoundMuted,
|
||||
shouldMigrateLocalChatPreferences,
|
||||
syncBlockedSystemSenderCheckboxes,
|
||||
syncDailyStatusUi,
|
||||
toggleBlockMenu,
|
||||
toggleBlockedSystemSender,
|
||||
toggleFeatureMenu,
|
||||
toggleSoundMute,
|
||||
} from "./chat-room/preferences-status.js";
|
||||
@@ -260,6 +272,30 @@ export {
|
||||
toggleAutoScroll,
|
||||
} from "./chat-room/message-utils.js";
|
||||
|
||||
// 新增:聊天室核心引擎模块导出
|
||||
export {
|
||||
appendMessage,
|
||||
buildChatMessageContent,
|
||||
commitChatMessageRenderBatch,
|
||||
createChatMessageRenderBatch,
|
||||
enqueueChatMessage,
|
||||
flushQueuedChatMessages,
|
||||
pruneMessageContainer,
|
||||
} from "./chat-room/message-renderer.js";
|
||||
export {
|
||||
buildUserBadgeHtml,
|
||||
filterUserList,
|
||||
refreshRenderedUserBadges,
|
||||
renderUserList,
|
||||
renderUserListToContainer,
|
||||
scheduleFilterUserList,
|
||||
scheduleRenderUserList,
|
||||
startBadgeRotation,
|
||||
stopBadgeRotation,
|
||||
} from "./chat-room/user-list.js";
|
||||
export { bindChatEvents } from "./chat-room/chat-events.js";
|
||||
export { leaveRoom, notifyExpiredLeave, saveExp, startHeartbeat, stopHeartbeat, HEARTBEAT_INTERVAL, MAX_HEARTBEAT_FAILS } from "./chat-room/heartbeat.js";
|
||||
|
||||
import { escapeHtml, escapeHtmlWithLineBreaks, normalizeSafeChatUrl } from "./chat-room/html.js";
|
||||
import { bindAppointmentAnnouncementControls, showAppointmentBanner } from "./chat-room/appointment-announcement.js";
|
||||
import { bindChatBanner } from "./chat-room/banner.js";
|
||||
@@ -416,8 +452,10 @@ import {
|
||||
CHAT_SOUND_MUTED_STORAGE_KEY,
|
||||
bindBlockMenuControls,
|
||||
bindSoundMuteControl,
|
||||
buildChatPreferencesPayload,
|
||||
closeDailyStatusEditor,
|
||||
closeFeatureMenu,
|
||||
getCurrentUserDailyStatus,
|
||||
handleFeatureLocalClear,
|
||||
isSoundMuted,
|
||||
loadBlockedSystemSenders,
|
||||
@@ -426,9 +464,18 @@ import {
|
||||
openDailyStatusEditor,
|
||||
parseDailyStatusExpiry,
|
||||
persistBlockedSystemSenders,
|
||||
persistChatPreferencesToLocal,
|
||||
removeDailyStatusFields,
|
||||
resolveBlockedSystemSenderKey,
|
||||
saveChatPreferences,
|
||||
setOnlineUserDailyStatus,
|
||||
setRenderedMessagesVisibilityBySender,
|
||||
setSoundMuted,
|
||||
shouldMigrateLocalChatPreferences,
|
||||
syncBlockedSystemSenderCheckboxes,
|
||||
syncDailyStatusUi,
|
||||
toggleBlockMenu,
|
||||
toggleBlockedSystemSender,
|
||||
toggleFeatureMenu,
|
||||
toggleSoundMute,
|
||||
} from "./chat-room/preferences-status.js";
|
||||
@@ -462,6 +509,13 @@ import {
|
||||
toggleAutoScroll,
|
||||
} from "./chat-room/message-utils.js";
|
||||
|
||||
// 新增:聊天室核心引擎模块(共享状态、消息渲染、用户名单、事件监听、心跳)
|
||||
import "./chat-room/chat-state.js";
|
||||
import { appendMessage, buildChatMessageContent, commitChatMessageRenderBatch, createChatMessageRenderBatch, enqueueChatMessage, flushQueuedChatMessages, pruneMessageContainer } from "./chat-room/message-renderer.js";
|
||||
import { buildUserBadgeHtml, filterUserList, refreshRenderedUserBadges, renderUserList, renderUserListToContainer, scheduleFilterUserList, scheduleRenderUserList, startBadgeRotation, stopBadgeRotation } from "./chat-room/user-list.js";
|
||||
import { bindChatEvents } from "./chat-room/chat-events.js";
|
||||
import { leaveRoom, notifyExpiredLeave, saveExp, startHeartbeat, stopHeartbeat } from "./chat-room/heartbeat.js";
|
||||
|
||||
if (typeof window !== "undefined") {
|
||||
bindInstantHoverTooltip();
|
||||
|
||||
@@ -672,6 +726,17 @@ if (typeof window !== "undefined") {
|
||||
toggleBlockMenu,
|
||||
toggleFeatureMenu,
|
||||
toggleSoundMute,
|
||||
buildChatPreferencesPayload,
|
||||
getCurrentUserDailyStatus,
|
||||
persistChatPreferencesToLocal,
|
||||
removeDailyStatusFields,
|
||||
resolveBlockedSystemSenderKey,
|
||||
saveChatPreferences,
|
||||
setOnlineUserDailyStatus,
|
||||
setRenderedMessagesVisibilityBySender,
|
||||
syncBlockedSystemSenderCheckboxes,
|
||||
syncDailyStatusUi,
|
||||
toggleBlockedSystemSender,
|
||||
bindChatRightPanelControls,
|
||||
bindRoomStatusControls,
|
||||
normalizeRoomStatus,
|
||||
@@ -695,6 +760,26 @@ if (typeof window !== "undefined") {
|
||||
scrollChatToBottom,
|
||||
syncAutoScrollControls,
|
||||
toggleAutoScroll,
|
||||
// 聊天室核心引擎
|
||||
bindChatEvents,
|
||||
appendMessage,
|
||||
buildChatMessageContent,
|
||||
commitChatMessageRenderBatch,
|
||||
createChatMessageRenderBatch,
|
||||
enqueueChatMessage,
|
||||
flushQueuedChatMessages,
|
||||
pruneMessageContainer,
|
||||
buildUserBadgeHtml,
|
||||
filterUserList,
|
||||
refreshRenderedUserBadges,
|
||||
renderUserListToContainer,
|
||||
startBadgeRotation,
|
||||
stopBadgeRotation,
|
||||
scheduleFilterUserList,
|
||||
leaveRoom,
|
||||
notifyExpiredLeave,
|
||||
startHeartbeat,
|
||||
stopHeartbeat,
|
||||
};
|
||||
|
||||
// 直接挂载只服务暂未迁移的 Blade 调用点;新代码优先通过模块导入或 ChatRoomTools 复用。
|
||||
@@ -834,6 +919,13 @@ if (typeof window !== "undefined") {
|
||||
window.showShopToast = showShopToast;
|
||||
window.submitRename = submitRename;
|
||||
|
||||
// 聊天室核心引擎 window 挂载
|
||||
window.bindChatEvents = bindChatEvents;
|
||||
window.startBadgeRotation = startBadgeRotation;
|
||||
window.stopBadgeRotation = stopBadgeRotation;
|
||||
window.startHeartbeat = startHeartbeat;
|
||||
window.stopHeartbeat = stopHeartbeat;
|
||||
|
||||
// 页面加载后立即注册事件委托,具体业务逻辑仍由各子模块负责。
|
||||
bindChatBanner();
|
||||
bindChatBotControls();
|
||||
@@ -884,4 +976,7 @@ if (typeof window !== "undefined") {
|
||||
bindMobileDrawerControls();
|
||||
bindWelcomeMenuControls();
|
||||
bindBlockMenuControls();
|
||||
bindChatEvents();
|
||||
startBadgeRotation();
|
||||
startHeartbeat();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user