import { MessageItem } from "@components/PageComponents/Messages/MessageItem.tsx"; import type { Message as Message } from "@core/stores/messageStore.ts"; import { InboxIcon } from "lucide-react"; import { useCallback, useEffect, useRef } from "react"; export interface ChannelChatProps { messages?: Message[]; } const EmptyState = () => (
No Messages
); export const ChannelChat = ({ messages = [], }: ChannelChatProps) => { const messagesEndRef = useRef(null); const scrollContainerRef = useRef(null); const scrollToBottom = useCallback(() => { const scrollContainer = scrollContainerRef.current; if (scrollContainer) { const isNearBottom = scrollContainer.scrollHeight - scrollContainer.scrollTop - scrollContainer.clientHeight < 100; if (isNearBottom) { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); } } }, []); useEffect(() => { scrollToBottom(); }, [scrollToBottom, messages]); if (!messages?.length) { return (
); } return (
{messages?.map((message, index) => ( 0 && messages[index - 1].from === message.from } /> ))}
); };