From 026a3c9520f9c2bb7239ac284d7c8bb038e7d4ca Mon Sep 17 00:00:00 2001 From: RoyceDa Date: Thu, 19 Feb 2026 20:52:27 +0200 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=D0=B3=D0=B0=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BA=D1=80=D0=BE?= =?UTF-8?q?=D0=BB=D0=BB=D0=B0=20=D0=B2=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=D1=85,=20=D0=B1=D0=BE=D0=BB=D0=B5?= =?UTF-8?q?=D0=B5=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=87=D0=BD=D0=BE=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D1=81=D1=8B=D0=BB=D0=BA?= =?UTF-8?q?=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/Messages/Messages.tsx | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/app/components/Messages/Messages.tsx b/app/components/Messages/Messages.tsx index 44b1a6c..8ee6b21 100644 --- a/app/components/Messages/Messages.tsx +++ b/app/components/Messages/Messages.tsx @@ -7,14 +7,12 @@ import { MessageSkeleton } from "../MessageSkeleton/MessageSkeleton"; import { ScrollArea } from "@mantine/core"; import { MESSAGE_AVATAR_NO_RENDER_TIME_DIFF_S, SCROLL_TOP_IN_MESSAGES_TO_VIEW_AFFIX } from "@/app/constants"; import { DialogAffix } from "../DialogAffix/DialogAffix"; -import { useReplyMessages } from "@/app/providers/DialogProvider/useReplyMessages"; import { useSetting } from "@/app/providers/SettingsProvider/useSetting"; export function Messages() { const colors = useRosettaColors(); const publicKey = usePublicKey(); const { messages, dialog, loadMessagesToTop, loading } = useDialog(); - const { replyMessages, isSelectionStarted } = useReplyMessages(); const viewportRef = useRef(null); const lastMessageRef = useRef(null); @@ -22,6 +20,7 @@ export function Messages() { const shouldAutoScrollRef = useRef(true); const isFirstRenderRef = useRef(true); const previousScrollHeightRef = useRef(0); + const distanceFromButtomRef = useRef(0); const [affix, setAffix] = useState(false); const [wallpaper] = useSetting @@ -121,15 +120,10 @@ export function Messages() { const lastMessage = messages[messages.length - 1]; // Скроллим если пользователь внизу или это его собственное сообщение - if ((shouldAutoScrollRef.current || lastMessage.from_me) && !affix) { - /** - * Скролл только если пользователь не читает сейчас старую переписку - * (!affix)) - */ - //console.info("Scroll because", shouldAutoScrollRef.current); + if ((shouldAutoScrollRef.current || lastMessage.from_me)) { scrollToBottom(true); } - }, [messages.length, loading, affix, scrollToBottom]); + }, [messages.length, loading, scrollToBottom]); // Восстановление позиции после загрузки старых сообщений useEffect(() => { @@ -142,12 +136,6 @@ export function Messages() { } }, [messages.length]); - // Скролл при отправке reply сообщения - useEffect(() => { - if (replyMessages.messages.length === 0 || isSelectionStarted()) return; - scrollToBottom(true); - }, [replyMessages.messages.length]); - const loadMessagesToScrollAreaTop = async () => { if (!viewportRef.current) return; @@ -195,6 +183,7 @@ export function Messages() { // Показываем/скрываем кнопку "вниз" const distanceFromBottom = (viewportRef.current.scrollHeight - viewportRef.current.clientHeight) - scroll.y; + distanceFromButtomRef.current = distanceFromBottom; setAffix(distanceFromBottom > SCROLL_TOP_IN_MESSAGES_TO_VIEW_AFFIX); }}