From be6949022f13df483a7ce566171583c388bc3183 Mon Sep 17 00:00:00 2001 From: IlyaDoronin Date: Wed, 13 Mar 2024 17:36:47 +0300 Subject: [PATCH] fix: loading messages --- src/components/FloatingSupportChat/Chat.tsx | 19 ++++++++++++++----- src/stores/tickets.ts | 9 ++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/components/FloatingSupportChat/Chat.tsx b/src/components/FloatingSupportChat/Chat.tsx index b87b1fb..80d3645 100644 --- a/src/components/FloatingSupportChat/Chat.tsx +++ b/src/components/FloatingSupportChat/Chat.tsx @@ -17,7 +17,6 @@ import { useTicketMessages, getMessageFromFetchError, useSSESubscription, - useEventListener, createTicket, } from "@frontend/kitui"; import { enqueueSnackbar } from "notistack"; @@ -40,7 +39,7 @@ import { addOrUpdateUnauthMessages, setUnauthTicketMessageFetchState, setUnauthIsPreventAutoscroll, - incrementUnauthMessageApiPage, + incrementUnauthMessage, setIsMessageSending, } from "@root/stores/tickets"; import { useUserStore } from "@root/stores/user"; @@ -49,6 +48,8 @@ import ChatDocument from "./ChatDocument"; import ChatImage from "./ChatImage"; import ChatVideo from "./ChatVideo"; +import type { WheelEvent, TouchEvent } from "react"; + type ModalWarningType = | "errorType" | "errorSize" @@ -171,14 +172,12 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { if (fetchState !== "idle") return; if (chatBox.scrollTop < chatBox.clientHeight) { - incrementUnauthMessageApiPage(); + incrementUnauthMessage(); } }, 200), [fetchState] ); - useEventListener("scroll", throttledScrollHandler, chatBoxRef); - useEffect( function scrollOnNewMessage() { if (!chatBoxRef.current) return; @@ -202,6 +201,14 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { } }, [open, messages]); + const loadNewMessages = ( + event: WheelEvent | TouchEvent + ) => { + event.stopPropagation(); + + throttledScrollHandler(); + }; + async function handleSendMessage() { if (!messageField || isMessageSending) return; @@ -386,6 +393,8 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { }} > ticket.isPreventAutoscroll = isPreventAutoscroll; }); -export const incrementUnauthMessageApiPage = () => { - const state = useTicketStore.getState(); - - useTicketStore.setState({ apiPage: state.apiPage + 1 }); -}; +export const incrementUnauthMessage = () => + updateTicket((ticket) => { + ticket.apiPage++; + }); export const setIsMessageSending = ( isMessageSending: AuthData["isMessageSending"]