Update ChatWindow.tsx
This commit is contained in:
parent
1b44361b6a
commit
24948f8e9b
1 changed files with 45 additions and 8 deletions
|
@ -8,7 +8,7 @@ import EmptyChat from './EmptyChat';
|
||||||
import crypto from 'crypto';
|
import crypto from 'crypto';
|
||||||
import { toast } from 'sonner';
|
import { toast } from 'sonner';
|
||||||
import { useSearchParams } from 'next/navigation';
|
import { useSearchParams } from 'next/navigation';
|
||||||
import { getSuggestions } from '@/lib/actions';
|
import { getSuggestions, Expert } from '@/lib/actions';
|
||||||
import Error from 'next/error';
|
import Error from 'next/error';
|
||||||
|
|
||||||
export type Message = {
|
export type Message = {
|
||||||
|
@ -18,6 +18,7 @@ export type Message = {
|
||||||
content: string;
|
content: string;
|
||||||
role: 'user' | 'assistant';
|
role: 'user' | 'assistant';
|
||||||
suggestions?: string[];
|
suggestions?: string[];
|
||||||
|
suggestedExperts?: Expert[];
|
||||||
sources?: Document[];
|
sources?: Document[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -277,7 +278,7 @@ const loadMessages = async (
|
||||||
setIsMessagesLoaded(true);
|
setIsMessagesLoaded(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
const ChatWindow = ({ id }: { id?: string }) => {
|
const ChatWindow = ({ id, defaultFocusMode }: { id?: string; defaultFocusMode?: string }) => {
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const initialMessage = searchParams.get('q');
|
const initialMessage = searchParams.get('q');
|
||||||
|
|
||||||
|
@ -303,7 +304,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
|
||||||
const [files, setFiles] = useState<File[]>([]);
|
const [files, setFiles] = useState<File[]>([]);
|
||||||
const [fileIds, setFileIds] = useState<string[]>([]);
|
const [fileIds, setFileIds] = useState<string[]>([]);
|
||||||
|
|
||||||
const [focusMode, setFocusMode] = useState('webSearch');
|
const [focusMode, setFocusMode] = useState(defaultFocusMode || 'default');
|
||||||
const [optimizationMode, setOptimizationMode] = useState('speed');
|
const [optimizationMode, setOptimizationMode] = useState('speed');
|
||||||
|
|
||||||
const [isMessagesLoaded, setIsMessagesLoaded] = useState(false);
|
const [isMessagesLoaded, setIsMessagesLoaded] = useState(false);
|
||||||
|
@ -405,8 +406,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.type === 'sources') {
|
if (data.type === 'images') {
|
||||||
sources = data.data;
|
|
||||||
if (!added) {
|
if (!added) {
|
||||||
setMessages((prevMessages) => [
|
setMessages((prevMessages) => [
|
||||||
...prevMessages,
|
...prevMessages,
|
||||||
|
@ -415,7 +415,13 @@ const ChatWindow = ({ id }: { id?: string }) => {
|
||||||
messageId: data.messageId,
|
messageId: data.messageId,
|
||||||
chatId: chatId!,
|
chatId: chatId!,
|
||||||
role: 'assistant',
|
role: 'assistant',
|
||||||
sources: sources,
|
sources: [{
|
||||||
|
pageContent: '',
|
||||||
|
metadata: {
|
||||||
|
illustrationImage: data.data[0]?.src,
|
||||||
|
title: data.data[0]?.title
|
||||||
|
}
|
||||||
|
}],
|
||||||
createdAt: new Date(),
|
createdAt: new Date(),
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
@ -424,6 +430,33 @@ const ChatWindow = ({ id }: { id?: string }) => {
|
||||||
setMessageAppeared(true);
|
setMessageAppeared(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data.type === 'sources') {
|
||||||
|
if (!added) {
|
||||||
|
setMessages((prevMessages) => [
|
||||||
|
...prevMessages,
|
||||||
|
{
|
||||||
|
content: '',
|
||||||
|
messageId: data.messageId,
|
||||||
|
chatId: chatId!,
|
||||||
|
role: 'assistant',
|
||||||
|
sources: data.data,
|
||||||
|
createdAt: new Date(),
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
added = true;
|
||||||
|
} else {
|
||||||
|
setMessages((prev) =>
|
||||||
|
prev.map((message) => {
|
||||||
|
if (message.messageId === data.messageId) {
|
||||||
|
return { ...message, sources: data.data };
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
setMessageAppeared(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (data.type === 'message') {
|
if (data.type === 'message') {
|
||||||
if (!added) {
|
if (!added) {
|
||||||
setMessages((prevMessages) => [
|
setMessages((prevMessages) => [
|
||||||
|
@ -472,11 +505,15 @@ const ChatWindow = ({ id }: { id?: string }) => {
|
||||||
lastMsg.sources.length > 0 &&
|
lastMsg.sources.length > 0 &&
|
||||||
!lastMsg.suggestions
|
!lastMsg.suggestions
|
||||||
) {
|
) {
|
||||||
const suggestions = await getSuggestions(messagesRef.current);
|
const { suggestions, suggestedExperts } = await getSuggestions(messagesRef.current);
|
||||||
setMessages((prev) =>
|
setMessages((prev) =>
|
||||||
prev.map((msg) => {
|
prev.map((msg) => {
|
||||||
if (msg.messageId === lastMsg.messageId) {
|
if (msg.messageId === lastMsg.messageId) {
|
||||||
return { ...msg, suggestions: suggestions };
|
return {
|
||||||
|
...msg,
|
||||||
|
suggestions: suggestions,
|
||||||
|
suggestedExperts: suggestedExperts
|
||||||
|
};
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}),
|
}),
|
||||||
|
|
Loading…
Add table
Reference in a new issue