import React, { useEffect, useRef, useState } from 'react'; import { Aside } from '@custom/shared/components/Aside'; import Button from '@custom/shared/components/Button'; import { TextInput } from '@custom/shared/components/Input'; import { useUIState } from '@custom/shared/contexts/UIStateProvider'; import { useChat } from '../contexts/ChatProvider'; import { useMessageSound } from '../hooks/useMessageSound'; export const CHAT_ASIDE = 'chat'; export const ChatAside = () => { const { showAside, setShowAside } = useUIState(); const { sendMessage, chatHistory, hasNewMessages, setHasNewMessages } = useChat(); const [newMessage, setNewMessage] = useState(''); const playMessageSound = useMessageSound(); const chatWindowRef = useRef(); useEffect(() => { // Clear out any new message notifications if we're showing the chat screen if (showAside === CHAT_ASIDE) { setHasNewMessages(false); } }, [showAside, chatHistory.length, setHasNewMessages]); useEffect(() => { if (hasNewMessages && showAside !== CHAT_ASIDE) { playMessageSound(); } }, [playMessageSound, showAside, hasNewMessages]); useEffect(() => { if (chatWindowRef.current) { chatWindowRef.current.scrollTop = chatWindowRef.current.scrollHeight; } }, [chatHistory?.length]); if (!showAside || showAside !== CHAT_ASIDE) { return null; } return ( ); }; export default ChatAside;