import { useState } from 'react' import { useParams } from 'react-router-dom' import Button from '@mui/material/Button' import FormControl from '@mui/material/FormControl' import Typography from '@mui/material/Typography' import TextField from '@mui/material/TextField' import { usePeerRoom, usePeerRoomAction } from 'hooks/usePeerRoom' import { PeerActions } from 'models/network' import { UnsentMessage, ReceivedMessage } from 'models/chat' export function Room() { const { roomId = '' } = useParams() const [textMessage, setTextMessage] = useState('') const [receivedMessages, setReceivedMessages] = useState( [] ) const peerRoom = usePeerRoom({ appId: `${encodeURI(window.location.origin)}_${process.env.REACT_APP_NAME}`, roomId, }) const [sendMessage, receiveMessage] = usePeerRoomAction( peerRoom, PeerActions.MESSAGE ) const handleMessageChange = (event: React.ChangeEvent) => { const { value } = event.target setTextMessage(value) } const handleMessageSubmit = ( event: React.SyntheticEvent ) => { event.preventDefault() sendMessage({ text: textMessage, timeSent: Date.now() }) setTextMessage('') } receiveMessage(message => { setReceivedMessages([ ...receivedMessages, { ...message, timeReceived: Date.now() }, ]) }) return (
Room ID: {roomId} Open this page in another tab and open the console.
{receivedMessages.map((message, idx) => ( {message.text} ))}
) }