import { type MessageWithState, useDevice } from "@core/stores/deviceStore.ts"; import { Message } from "@components/PageComponents/Messages/Message.tsx"; import { InboxIcon } from "lucide-react"; import { useCallback, useEffect, useRef } from "react"; export interface ChannelChatProps { messages?: MessageWithState[]; } const EmptyState = () => (
No Messages
); export const ChannelChat = ({ messages, }: ChannelChatProps) => { const { nodes } = useDevice(); 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 } /> ))}
); };