From da0ada925fa3534e6927cc8c9435ef208f534aaa Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Tue, 6 May 2025 12:40:07 -0400 Subject: [PATCH] fix: removed overly complex scrolling logic in channel chat (#612) --- .../PageComponents/Messages/ChannelChat.tsx | 50 +------------------ src/core/subscriptions.ts | 2 - src/pages/Messages.tsx | 4 +- 3 files changed, 3 insertions(+), 53 deletions(-) diff --git a/src/components/PageComponents/Messages/ChannelChat.tsx b/src/components/PageComponents/Messages/ChannelChat.tsx index dde43126..a929e166 100644 --- a/src/components/PageComponents/Messages/ChannelChat.tsx +++ b/src/components/PageComponents/Messages/ChannelChat.tsx @@ -1,6 +1,5 @@ import { MessageItem } from "@components/PageComponents/Messages/MessageItem.tsx"; import { InboxIcon } from "lucide-react"; -import { useCallback, useEffect, useRef } from "react"; import { Message } from "@core/stores/messageStore/types.ts"; export interface ChannelChatProps { @@ -15,69 +14,22 @@ const EmptyState = () => ( ); export const ChannelChat = ({ messages = [] }: ChannelChatProps) => { - const messagesEndRef = useRef(null); - const scrollContainerRef = useRef(null); - const userScrolledUpRef = useRef(false); - - const scrollToBottom = useCallback((behavior: ScrollBehavior = "smooth") => { - requestAnimationFrame(() => { - messagesEndRef.current?.scrollIntoView({ behavior }); - }); - }, []); - - useEffect(() => { - const scrollContainer = scrollContainerRef.current; - if (!scrollContainer) return; - const isScrolledToBottom = - scrollContainer.scrollHeight - scrollContainer.scrollTop - - scrollContainer.clientHeight <= 10; - - if (isScrolledToBottom || !userScrolledUpRef.current) { - scrollToBottom("smooth"); - } - }, [messages, scrollToBottom]); - - useEffect(() => { - const scrollContainer = scrollContainerRef.current; - const handleScroll = () => { - if (!scrollContainer) return; - const isAtBottom = - scrollContainer.scrollHeight - scrollContainer.scrollTop - - scrollContainer.clientHeight <= 10; - userScrolledUpRef.current = !isAtBottom; - }; - scrollContainer?.addEventListener("scroll", handleScroll, { - passive: true, - }); - return () => { - scrollContainer?.removeEventListener("scroll", handleScroll); - }; - }, []); - if (!messages?.length) { return (
-
); } return ( -
    -
    - +
      {messages?.map((message) => ( ))} - -
    ); }; diff --git a/src/core/subscriptions.ts b/src/core/subscriptions.ts index e381a5fd..35bc89e5 100644 --- a/src/core/subscriptions.ts +++ b/src/core/subscriptions.ts @@ -81,8 +81,6 @@ export const subscribeAll = ( connection.events.onMessagePacket.subscribe((messagePacket) => { // incoming and outgoing messages are handled by this event listener - console.log("Message Packet", messagePacket); - const dto = new PacketToMessageDTO(messagePacket, myNodeNum); const message = dto.toMessage(); messageStore.saveMessage(message); diff --git a/src/pages/Messages.tsx b/src/pages/Messages.tsx index 7236e6e5..b22fe2b2 100644 --- a/src/pages/Messages.tsx +++ b/src/pages/Messages.tsx @@ -143,7 +143,7 @@ export const MessagesPage = () => { messages={getMessages({ type: MessageType.Broadcast, channelId: activeChat ?? 0, - })} + }).reverse()} /> ); case MessageType.Direct: @@ -153,7 +153,7 @@ export const MessagesPage = () => { type: MessageType.Direct, nodeA: getMyNodeNum(), nodeB: activeChat, - })} + }).reverse()} /> ); default: