"use client"; import { createContext, useState } from "react"; import { ChatMessage, Notification } from "@/app/chat/[chatId]/types"; import { ChatContextProps } from "./types"; export const ChatContext = createContext( undefined ); export const ChatProvider = ({ children, }: { children: JSX.Element | JSX.Element[]; }): JSX.Element => { const [messages, setMessages] = useState([]); const [notifications, setNotifications] = useState([]); const [sourcesMessageIndex, setSourcesMessageIndex] = useState< number | undefined >(undefined); const updateStreamingHistory = (streamedChat: ChatMessage): void => { setMessages((prevHistory: ChatMessage[]) => { const updatedHistory = prevHistory.find( (item) => item.message_id === streamedChat.message_id ) ? prevHistory.map((item: ChatMessage) => item.message_id === streamedChat.message_id ? { ...item, assistant: item.assistant + streamedChat.assistant, metadata: streamedChat.metadata, } : item ) : [...prevHistory, streamedChat]; return updatedHistory; }); }; const removeMessage = (id: string): void => { setMessages((prevHistory: ChatMessage[]) => prevHistory.filter((item) => item.message_id !== id) ); }; return ( {children} ); };