import Layout from '~/components/Layout' import Message from '~/components/Message' import MessageInput from '~/components/MessageInput' import { useRouter } from 'next/router' import { useStore, addMessage } from '~/lib/Store' import { useContext, useEffect, useRef } from 'react' import UserContext from '~/lib/UserContext' const ChannelsPage = (props) => { const router = useRouter() const { user, authLoaded, signOut } = useContext(UserContext) const messagesEndRef = useRef(null) // Else load up the page const { id: channelId } = router.query const { messages, channels } = useStore({ channelId }) useEffect(() => { messagesEndRef.current.scrollIntoView({ block: 'start', behavior: 'smooth', }) }, [messages]) // redirect to public channel when current channel is deleted useEffect(() => { if (!channels.some((channel) => channel.id === Number(channelId))) { router.push('/channels/1') } }, [channels, channelId]) // Render the channels and messages return (
{messages.map((x) => ( ))}
addMessage(text, channelId, user.id)} />
) } export default ChannelsPage