diff --git a/package-lock.json b/package-lock.json index 4b42f7b..d827aa2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9692,6 +9692,9 @@ "sherpa-onnx-win-x64": "^1.12.23" } }, + "node_modules/sherpa-onnx-node/node_modules/sherpa-onnx-darwin-x64": { + "optional": true + }, "node_modules/sherpa-onnx-win-ia32": { "version": "1.12.23", "resolved": "https://registry.npmmirror.com/sherpa-onnx-win-ia32/-/sherpa-onnx-win-ia32-1.12.23.tgz", diff --git a/package.json b/package.json index 7925741..4a784bf 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "dist-electron/main.js", "author": { "name": "cc", - "email": "hicccc77@github.com" + "email": "yccccccy@proton.me" }, "repository": { "type": "git", diff --git a/src/pages/ChatPage.tsx b/src/pages/ChatPage.tsx index 4672d7a..9a49bdc 100644 --- a/src/pages/ChatPage.tsx +++ b/src/pages/ChatPage.tsx @@ -3028,18 +3028,19 @@ function ChatPage(props: ChatPageProps) { return } if (result.success && result.messages) { + const resultMessages = result.messages if (offset === 0) { - setMessages(result.messages) - persistSessionPreviewCache(sessionId, result.messages) - if (result.messages.length === 0) { + setMessages(resultMessages) + persistSessionPreviewCache(sessionId, resultMessages) + if (resultMessages.length === 0) { setNoMessageTable(true) setHasMoreMessages(false) } // 群聊发送者信息补齐改为非阻塞执行,避免影响首屏切换 const isGroup = sessionId.includes('@chatroom') - if (isGroup && result.messages.length > 0) { - const unknownSenders = [...new Set(result.messages + if (isGroup && resultMessages.length > 0) { + const unknownSenders = [...new Set(resultMessages .filter(m => m.isSend !== 1 && m.senderUsername && !senderAvatarCache.has(m.senderUsername)) .map(m => m.senderUsername as string) )] @@ -3052,7 +3053,7 @@ function ChatPage(props: ChatPageProps) { const loadedMessages = result.messages requestAnimationFrame(() => { if (isDateJumpRef.current) { - if (messageVirtuosoRef.current && loadedMessages.length > 0) { + if (messageVirtuosoRef.current && resultMessages.length > 0) { messageVirtuosoRef.current.scrollToIndex({ index: 0, align: 'start', behavior: 'auto' }) } else if (messageListRef.current) { messageListRef.current.scrollTop = 0 @@ -3061,7 +3062,7 @@ function ChatPage(props: ChatPageProps) { return } - const lastIndex = loadedMessages.length - 1 + const lastIndex = resultMessages.length - 1 if (lastIndex >= 0 && messageVirtuosoRef.current) { messageVirtuosoRef.current.scrollToIndex({ index: lastIndex, align: 'end', behavior: 'auto' }) } else if (messageListRef.current) { @@ -3069,12 +3070,12 @@ function ChatPage(props: ChatPageProps) { } }) } else { - appendMessages(result.messages, true) + appendMessages(resultMessages, true) // 加载更多也同样处理发送者信息预取 const isGroup = sessionId.includes('@chatroom') if (isGroup) { - const unknownSenders = [...new Set(result.messages + const unknownSenders = [...new Set(resultMessages .filter(m => m.isSend !== 1 && m.senderUsername && !senderAvatarCache.has(m.senderUsername)) .map(m => m.senderUsername as string) )] @@ -3095,8 +3096,8 @@ function ChatPage(props: ChatPageProps) { return } } - if (appendedMessages.length > 0) { - messageVirtuosoRef.current.scrollToIndex({ index: appendedMessages.length, align: 'start', behavior: 'auto' }) + if (resultMessages.length > 0) { + messageVirtuosoRef.current.scrollToIndex({ index: resultMessages.length, align: 'start', behavior: 'auto' }) } return } @@ -3122,7 +3123,7 @@ function ChatPage(props: ChatPageProps) { } const nextOffset = typeof result.nextOffset === 'number' ? result.nextOffset - : offset + result.messages.length + : offset + resultMessages.length setCurrentOffset(nextOffset) } else if (!result.success) { setNoMessageTable(true) @@ -5637,6 +5638,8 @@ function ChatPage(props: ChatPageProps) { }), [hasMoreMessages, hasMoreLater, isLoadingMore]) const renderMessageListItem = useCallback((index: number, msg: Message) => { + if (!currentSession) return null + const prevMsg = index > 0 ? messages[index - 1] : undefined const showDateDivider = shouldShowDateDivider(msg, prevMsg) const showTime = !prevMsg || (msg.createTime - prevMsg.createTime > 300)