import React, { useState, useContext, useEffect, useRef } from "react"; import { Button, Form, FormControl, InputGroup } from "react-bootstrap"; import { UserContext } from "../contexts/userContext"; import { useSelector, useDispatch } from "react-redux"; import { chatActions } from "../store/chat-slice"; const ChatWindow = ({ room }) => { const messagesEndRef = useRef(null) const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }) } const [message, setMessage] = useState(""); const { user } = useContext(UserContext); const connection = useSelector((state) => state.chat.connection); const connections = useSelector((state) => state.chat.connections); const activeRoom = useSelector((state) => state.chat.activeRoom); const messages = useSelector((state) => state.chat.messages); const dispatch = useDispatch(); useEffect(() => { dispatch(chatActions.setMessages(room.messages)); }, [dispatch, room.messages]); useEffect(()=>{ scrollToBottom(); },[]) const onSendMessageToGroupHandler = async () => { const userToFetch = connections.filter( (conn) => conn.userId === user.id && conn.roomId === activeRoom.id ); await connection.invoke("SendMessageToGroup", { userId: user.id, message, connId: userToFetch[0].connId, }); setMessage('') }; return (
{/* {n.message} */} {n.content}
{n.username}