From 19c6a26ef59b5f1348fcb2bedbd91ffd15ec1ce7 Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 28 Nov 2024 13:23:03 +0700 Subject: [PATCH] fix: proper error message display --- .../ThreadCenterPanel/ChatBody/index.tsx | 16 ++++----- .../ThreadCenterPanel/ChatItem/index.tsx | 33 ++++++++++++++++--- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx b/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx index d226c7e6f..ee001bcb1 100644 --- a/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx +++ b/web/screens/Thread/ThreadCenterPanel/ChatBody/index.tsx @@ -61,16 +61,12 @@ const ChatBody = memo( {messages.map((message, index) => (
- {message.status !== MessageStatus.Error && ( - - )} - - {!loadModelError && - index === messages.length - 1 && - message.status !== MessageStatus.Pending && - message.status !== MessageStatus.Ready && ( - - )} +
))} diff --git a/web/screens/Thread/ThreadCenterPanel/ChatItem/index.tsx b/web/screens/Thread/ThreadCenterPanel/ChatItem/index.tsx index 913333c6b..192c6f82a 100644 --- a/web/screens/Thread/ThreadCenterPanel/ChatItem/index.tsx +++ b/web/screens/Thread/ThreadCenterPanel/ChatItem/index.tsx @@ -8,21 +8,39 @@ import { ThreadMessage, } from '@janhq/core' +import ErrorMessage from '@/containers/ErrorMessage' + import SimpleTextMessage from '../SimpleTextMessage' type Ref = HTMLDivElement -const ChatItem = forwardRef((message, ref) => { +type Props = { + loadModelError?: string + isCurrentMessage?: boolean +} & ThreadMessage + +const ChatItem = forwardRef((message, ref) => { const [content, setContent] = useState(message.content) const [status, setStatus] = useState(message.status) + const [errorMessage, setErrorMessage] = useState( + message.isCurrentMessage && message.status === MessageStatus.Error + ? message + : undefined + ) function onMessageUpdate(data: ThreadMessage) { if (data.id === message.id) { setContent(data.content) if (data.status !== status) setStatus(data.status) + if (data.status === MessageStatus.Error && message.isCurrentMessage) + setErrorMessage(data) } } + useEffect(() => { + if (!message.isCurrentMessage && errorMessage) setErrorMessage(undefined) + }, [message, errorMessage]) + useEffect(() => { if (message.status === MessageStatus.Pending) events.on(MessageEvent.OnMessageUpdate, onMessageUpdate) @@ -33,9 +51,16 @@ const ChatItem = forwardRef((message, ref) => { }, []) return ( -
- -
+ <> + {status !== MessageStatus.Error && content.length > 0 && ( +
+ +
+ )} + {errorMessage && !message.loadModelError && ( + + )} + ) })