From 584fa6bbc26f42a43644a3ca3df68e9a0979fd53 Mon Sep 17 00:00:00 2001 From: RT15548 Date: Thu, 1 Jan 2026 17:43:53 +0800 Subject: [PATCH] Add files via upload --- modules/immersive-mode.js | 62 ++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/modules/immersive-mode.js b/modules/immersive-mode.js index e2500af..1aa9133 100644 --- a/modules/immersive-mode.js +++ b/modules/immersive-mode.js @@ -157,23 +157,32 @@ function toggleImmersiveMode() { setImmersiveMode(!getSettings().enabled); } -function bindMessageEvents() { - if (state.messageEventsBound) return; - - const refreshOnAI = () => state.isActive && updateMessageDisplay(); - - messageEvents.on(event_types.MESSAGE_SENT, () => {}); - messageEvents.on(event_types.MESSAGE_RECEIVED, refreshOnAI); - messageEvents.on(event_types.MESSAGE_DELETED, refreshOnAI); - messageEvents.on(event_types.MESSAGE_UPDATED, refreshOnAI); - messageEvents.on(event_types.MESSAGE_SWIPED, refreshOnAI); - if (event_types.GENERATION_STARTED) { - messageEvents.on(event_types.GENERATION_STARTED, () => {}); - } - messageEvents.on(event_types.GENERATION_ENDED, refreshOnAI); - - state.messageEventsBound = true; -} +function bindMessageEvents() { + if (state.messageEventsBound) return; + const onUserMessage = () => { + if (!state.isActive) return; + updateMessageDisplay(); + scrollToBottom(); + }; + const onAIMessage = () => { + if (!state.isActive) return; + updateMessageDisplay(); + if (getSettings().autoJumpOnAI) { + scrollToBottom(); + } + }; + const onMessageChange = () => { + if (!state.isActive) return; + updateMessageDisplay(); + }; + messageEvents.on(event_types.MESSAGE_SENT, onUserMessage); + messageEvents.on(event_types.MESSAGE_RECEIVED, onAIMessage); + messageEvents.on(event_types.MESSAGE_DELETED, onMessageChange); + messageEvents.on(event_types.MESSAGE_UPDATED, onMessageChange); + messageEvents.on(event_types.MESSAGE_SWIPED, onMessageChange); + messageEvents.on(event_types.GENERATION_ENDED, onAIMessage); + state.messageEventsBound = true; +} function unbindMessageEvents() { if (!state.messageEventsBound) return; @@ -269,7 +278,11 @@ function showSingleModeMessages() { const $prevMessage = $targetAI.prevAll('.mes').first(); if ($prevMessage.length) { - $prevMessage.show(); + + const isUserMessage = $prevMessage.attr('is_user') === 'true'; + if (isUserMessage) { + $prevMessage.show(); + } } $targetAI.nextAll('.mes').show(); @@ -377,13 +390,14 @@ function updateSwipesCounter($targetMes) { } $swipesCounter.html('1​/​1'); } - function scrollToBottom() { +function scrollToBottom() { const chatContainer = document.getElementById('chat'); - if (chatContainer) { - requestAnimationFrame(() => { - chatContainer.scrollTop = chatContainer.scrollHeight; - }); - } + if (!chatContainer) return; + + chatContainer.scrollTop = chatContainer.scrollHeight; + requestAnimationFrame(() => { + chatContainer.scrollTop = chatContainer.scrollHeight; + }); } function toggleDisplayMode() { if (!state.isActive) return;