@@ -1,5 +1,5 @@ import { useAppSelector } from '#/app/store/store' -import { getImagesBySlug, Message, MessageEventStreamResponse, useChatBotMessages } from '#/entities/message' +import { getImagesBySlug, Message, useChatBotMessages } from '#/entities/message' import { Device } from '#/shared/lib/types/entities' import { getImagesGalery } from '#/widgets/messages' import { useMediaQuery } from '@mui/material' @@ -13,7 +13,6 @@ import { getMessagesBySlug } from '#/entities/message' import { makePrivateRequest } from '#/shared/api' import { useCurrentChat } from '#/features/chats' import { CommonScrollbarRef } from '#/shared/ui/scrollbar' -import { useEventSource } from '#/shared/lib/event-source' // import { ScrollBarRef } from '#/shared/ui/scrollbar' export function useChatBotPagination() { @@ -70,24 +69,6 @@ export function useChatBotPagination() { }, } - const { event } = useEventSource() - - // function makeEventStream(name: string = 'chat-bot') { - // event(name, `api/chats/${currentChat}/messages/stream`, (obj) => { - // const messages = useChatBotMessages.getState().messages - - // const message = messages.find((m) => m.uid === obj.id) - - // if (!message) return - - // if (!message.content) message.content = '' - - // message.content += obj.content - - // return setMessages([...messages]) - // }) - // } - const fetchMessages = makePrivateRequest(async (count?: number) => { if (!data) return @@ -107,7 +88,8 @@ export function useChatBotPagination() { setLoaded(true) - if (response.status >= 400 || !Array.isArray(answer)) return showMessage('Ошибка загрузки чата') + if (response.status >= 400 || !Array.isArray(answer)) + return showMessage('Ошибка загрузки чата') const { messages } = useChatBotMessages.getState() @@ -159,7 +141,7 @@ export function useChatBotPagination() { setMessages, fetchMessages, scrollContainer, - messagesWithRefs, + messagesWithRefs, refScroll, loaded, } @@ -34,7 +34,7 @@ export function useChatMessageActions() { const { event, addOpenCallback } = useEventSource() - // const { makeEventStream } = useChatBotPagination() + // const { makeEventStream } = useChatBotPagination() function getFileLink(file: File) { return URL.createObjectURL(file) + '?type=.' + file.name.split('.')[1] @@ -102,7 +102,19 @@ export function useChatMessageActions() { setMessages([...initialMessages, ...(result as Message[])]) - // makeEventStream('chat') + event('chat', `api/chats/${currentChat}/messages/stream`, (obj) => { + const messages = useChatBotMessages.getState().messages + + const message = messages.find((m) => m.uid === obj.id) + + if (!message) return + + if (!message.content) message.content = '' + + message.content += obj.content + + return setMessages([...messages]) + }) addOpenCallback('chat', () => { ;(result as Message[])[1].content = '' @@ -28,14 +28,27 @@ const Page: NextPageWithLayout = () => { const { event } = useEventSource() - // const { makeEventStream } = useChatBotPagination() + const { setMessages } = useChatBotPagination() const { currentChat } = useCurrentChat() useEffect(() => { if (!currentChat) return - // makeEventStream() - }, [currentChat]) + + event('chat-bot', `api/chats/${currentChat}/messages/stream`, (obj) => { + const messages = useChatBotMessages.getState().messages + + const message = messages.find((m) => m.uid === obj.id) + + if (!message) return + + if (!message.content) message.content = '' + + message.content += obj.content + + return setMessages([...messages]) + }) + }, []) useEffect(() => { fetchBotParams()