diff --git a/index.js b/index.js index 1e84289..e0bfc30 100644 --- a/index.js +++ b/index.js @@ -488,6 +488,11 @@ jQuery(async () => { eventSource.on(event_types.IMPERSONATE_READY, onMessageReceived); eventSource.on(event_types.MESSAGE_RECEIVED, (chat_id) => handleTableUpdate(chat_id)); eventSource.on(event_types.MESSAGE_SWIPED, (chat_id) => { + const context = getContext(); + if (context.chat.length < 2) { + log(`【监察系统】检测到消息滑动,但聊天记录不足2条,已跳过状态回退。`, 'info'); + return; + } log(`【监察系统】检测到消息滑动 (SWIPED),开始执行状态回退...`, 'warn'); rollbackState(); }); diff --git a/ui/message-table-renderer.js b/ui/message-table-renderer.js index f5bd8f4..5eacaa1 100644 --- a/ui/message-table-renderer.js +++ b/ui/message-table-renderer.js @@ -1,6 +1,7 @@ import { getMemoryState, getHighlights } from '../core/table-system/manager.js'; import { extension_settings } from '/scripts/extensions.js'; import { extensionName } from '../utils/settings.js'; +import { getContext } from '/scripts/extensions.js'; const TABLE_CONTAINER_ID = 'amily2-chat-table-container'; const isTouchDevice = () => window.matchMedia('(pointer: coarse)').matches; @@ -82,6 +83,12 @@ function bindSwipePreventer(container) { export function updateOrInsertTableInChat() { setTimeout(() => { + const context = getContext(); + if (!context || !context.chat || context.chat.length < 2) { + removeTableContainer(); + return; + } + const settings = extension_settings[extensionName]; removeTableContainer();