diff --git a/web/app/_components/ChatBody/renderChatMessage.tsx b/web/app/_components/ChatBody/renderChatMessage.tsx index 8c487f15a..7d797b6cc 100644 --- a/web/app/_components/ChatBody/renderChatMessage.tsx +++ b/web/app/_components/ChatBody/renderChatMessage.tsx @@ -13,8 +13,8 @@ export default function renderChatMessage({ senderName, createdAt, imageUrls, + htmlText, text, - status, }: ChatMessage): React.ReactNode { // eslint-disable-next-line react-hooks/rules-of-hooks const message = useAtomValue(currentStreamingMessageAtom); @@ -48,7 +48,7 @@ export default function renderChatMessage({ avatarUrl={senderAvatarUrl} senderName={senderName} createdAt={createdAt} - text={text} + text={htmlText ?? text} /> ) : ( ); default: diff --git a/web/app/_hooks/useSendChatMessage.ts b/web/app/_hooks/useSendChatMessage.ts index 9096dc986..7bde91cb1 100644 --- a/web/app/_hooks/useSendChatMessage.ts +++ b/web/app/_hooks/useSendChatMessage.ts @@ -41,7 +41,12 @@ export default function useSendChatMessage() { const newChatMessage = await toChatMessage(newMessage); addNewMessage(newChatMessage); - const recentMessages = [...chatMessagesHistory, newChatMessage] + const recentMessages = [ + ...chatMessagesHistory.toSorted( + (a, b) => parseInt(a.id) - parseInt(b.id) + ), + newChatMessage, + ] .slice(-10) .map((message) => { return { diff --git a/web/app/_models/ChatMessage.ts b/web/app/_models/ChatMessage.ts index 40bbbb6ec..ad8784c2c 100644 --- a/web/app/_models/ChatMessage.ts +++ b/web/app/_models/ChatMessage.ts @@ -26,6 +26,7 @@ export interface ChatMessage { senderUid: string; senderName: string; senderAvatarUrl: string; + htmlText?: string | undefined; text: string | undefined; imageUrls?: string[] | undefined; createdAt: number; @@ -45,18 +46,13 @@ export const toChatMessage = async (m: RawMessage): Promise => { const createdAt = new Date(m.created_at ?? "").getTime(); const imageUrls: string[] = []; const imageUrl = undefined; - // m.message_medias.length > 0 ? m.message_medias[0].media_url : null; if (imageUrl) { imageUrls.push(imageUrl); } const messageType = MessageType.Text; - // m.message_type ? MessageType[m.message_type as keyof typeof MessageType] : MessageType.Text; const messageSenderType = m.user === "user" ? MessageSenderType.User : MessageSenderType.Ai; - // m.message_sender_type - // ? MessageSenderType[m.message_sender_type as keyof typeof MessageSenderType] - // : MessageSenderType.Ai; const content = m.message ?? ""; const processedContent = await remark().use(html).process(content); @@ -68,15 +64,13 @@ export const toChatMessage = async (m: RawMessage): Promise => { messageType: messageType, messageSenderType: messageSenderType, senderUid: m.user?.toString() || "0", - senderName: m.user === "user" ? "You" : "LLaMA", // m.sender_name ?? "", + senderName: m.user === "user" ? "You" : "Assistant", senderAvatarUrl: - m.user === "user" - ? "icons/avatar.svg" - : "https://huggingface.co/front/assets/huggingface_logo-noborder.svg", // m.sender_avatar_url ?? "icons/app_icon.svg", - text: contentHtml, + m.user === "user" ? "icons/avatar.svg" : "icons/app_icon.svg", + text: content, + htmlText: contentHtml, imageUrls: imageUrls, createdAt: createdAt, status: MessageStatus.Ready, - // status: m.status as MessageStatus, }; };