Edit map button in chat

Took 13 minutes
This commit is contained in:
Lucàs
2023-05-21 20:31:05 +02:00
parent 70974c4f0e
commit 1624109337
2 changed files with 30 additions and 18 deletions
@@ -59,26 +59,22 @@ export default function LeftPanel(props) {
direction={"column"} direction={"column"}
mt={"1vh"} mt={"1vh"}
spacing={3.5} spacing={3.5}
alignContent={"bottom"} alignContent={"bottom"}>
>
<LeftPanelButton <LeftPanelButton
leftIcon={<FaMapMarkedAlt />} leftIcon={<FaMapMarkedAlt />}
onClickHandler={() => router.push("/map")} onClickHandler={() => router.push("/map")}>
>
Carte Carte
</LeftPanelButton> </LeftPanelButton>
<LeftPanelButton <LeftPanelButton
leftIcon={<BsFillPersonFill />} leftIcon={<BsFillPersonFill />}
onClickHandler={() => router.push("/profile")} onClickHandler={() => router.push("/profile")}>
>
Profil Profil
</LeftPanelButton> </LeftPanelButton>
<LeftPanelButton <LeftPanelButton
variant={"outline"} variant={"outline"}
leftIcon={<BiLogOut />} leftIcon={<BiLogOut />}
onClickHandler={() => signOut({ callbackUrl: "/" })} onClickHandler={() => signOut({ callbackUrl: "/" })}>
>
Déconnexion Déconnexion
</LeftPanelButton> </LeftPanelButton>
</Flex> </Flex>
+26 -10
View File
@@ -5,6 +5,7 @@ import {
FormControl, FormControl,
IconButton, IconButton,
Input, Input,
Text
} from '@chakra-ui/react'; } from '@chakra-ui/react';
import Head from 'next/head'; import Head from 'next/head';
import {websiteName} from '@/lib/constants'; import {websiteName} from '@/lib/constants';
@@ -15,22 +16,36 @@ import {useEffect, useRef, useState} from 'react';
import MessageList from '@/components/chat/MessageList'; import MessageList from '@/components/chat/MessageList';
import {io, Socket} from 'socket.io-client'; import {io, Socket} from 'socket.io-client';
import {Message, User} from '@prisma/client'; import {Chat, Message, User} from '@prisma/client';
import LoadingPage from '@/components/LoadingPage'; import LoadingPage from '@/components/LoadingPage';
import Navbar from '@/components/Navbar'; import Navbar from '@/components/Navbar';
import {ArrowForwardIcon, CalendarIcon} from '@chakra-ui/icons'; import {ArrowForwardIcon, CalendarIcon} from '@chakra-ui/icons';
import {FaMapMarkedAlt} from 'react-icons/fa';
export default function ChatId() { export default function ChatId() {
const router = useRouter(); const router = useRouter();
const {data: session, status} = useSession({required: true}); const {data: session, status} = useSession({required: true});
const {id: chatId} = router.query; const {id: chatId} = router.query;
const [chatInfo, setChatInfo] = useState<Chat & { User: User[] }>();
const [otherUser, setOtherUser] = useState<User>()
const [messages, setMessages] = useState<Message[]>([]); const [messages, setMessages] = useState<Message[]>([]);
const [text, setText] = useState(''); const [text, setText] = useState('');
const [socket, setSocket] = useState<Socket>(); const [socket, setSocket] = useState<Socket>();
useEffect(() => { useEffect(() => {
if (status === 'authenticated') socketInitializer(); if (status === 'authenticated' && session) {
const user = session.user as User
socketInitializer();
fetch(`/api/chats/${chatId}?include=User`)
.then(res => res.json())
.then((chat: Chat & { User: User[] }) => {
setChatInfo(chat);
const other = chat.User.find(u => u.id !== user.id);
setOtherUser(other)
});
}
}, [status]); }, [status]);
const socketInitializer = () => { const socketInitializer = () => {
@@ -49,7 +64,7 @@ export default function ChatId() {
}; };
const handleSubmit = (evt) => { const handleSubmit = (evt) => {
evt.preventDefault() evt.preventDefault();
if (text !== '' && socket && session?.user) { if (text !== '' && socket && session?.user) {
socket.emit('createdMessage', {text, sender: session.user.id}); socket.emit('createdMessage', {text, sender: session.user.id});
setText(''); setText('');
@@ -69,19 +84,20 @@ export default function ChatId() {
<Navbar/> <Navbar/>
<Container pt={20} bgColor={"white"}> <Container pt={20} bgColor={'white'}>
<MessageList user={session.user as User} messages={messages}/> <MessageList user={session.user as User} messages={messages}/>
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<FormControl> <FormControl>
<Flex gap={2} py={5} width={"100%"}> <Flex gap={2} py={5} width={'100%'}>
<Input type={'text'} value={text} flexGrow={"grow"} <Input placeholder={`Écrivez à ${otherUser?.firstName} ${otherUser?.lastName}...`} type={'text'} value={text} flexGrow={'grow'}
onChange={evt => setText(evt.target.value)}/> onChange={evt => setText(evt.target.value)}/>
<IconButton aria-label={"Map"} onClick={evt => { <IconButton aria-label={'Map'} onClick={evt => {
evt.preventDefault(); evt.preventDefault();
router.push("/map"); router.push('/map');
}} icon={<CalendarIcon/>} variant={"outline"}/> }} icon={<FaMapMarkedAlt />} variant={'outline'}/>
<IconButton aria-label={"Envoyer"} variant={"outline"} icon={<ArrowForwardIcon/>} type={"submit"}/> <IconButton aria-label={'Envoyer'} variant={'outline'}
icon={<ArrowForwardIcon/>} type={'submit'}/>
</Flex> </Flex>
</FormControl> </FormControl>
</form> </form>