Generateurv2/frontend/components/room/WaitingRoom.jsx
2022-06-24 13:42:16 +02:00

76 lines
1.8 KiB
JavaScript

import { useRouter } from "next/router";
import { useEffect, useState } from "react";
import { useWebsocketContext } from "../../context/websocket.context.js";
import { checkRoom } from "../../requests/requests.room.js";
import { isBrowser } from "../../utils/utils.js";
import Layout from "../Layout.js";
export default function WaitingRoom() {
const router = useRouter();
const {
isConnected,
send,
connect,
addMessageHandler,
removeMessageHandler,
disconnect,
} = useWebsocketContext();
useEffect(() => {
if (isBrowser && (sessionStorage.getItem('waiter') == null || sessionStorage.getItem('waiter_nick') == null)) {
router.push({ pathname: `/room/join${router.query.mode[1]}` });
}
if (isConnected == false && isBrowser) {
checkRoom(router.query.mode[1])
.then(() => {
console.log('CONNECT HERE TO')
connect(`ws://192.168.1.18:8000/ws/room/${router.query.mode[1]}`);
send({
data: {
type: "login",
nick: sessionStorage.getItem("waiter_nick"),
},
});
})
.catch(() => {
router.push({ pathname: "/room/join" });
});
}
}, [isConnected]);
useEffect(() => {
let handler = (e) => {
let data = JSON.parse(e.data);
let type = data.type;
switch (type) {
case "refused":
sessionStorage.clear();
{
router.push({ pathname: "/room/join" });
}
default:
return;
}
};
addMessageHandler(handler);
return () => {
removeMessageHandler(handler);
};
}, []);
useEffect(() => {
return () => {
disconnect();
};
}, []);
return (
<Layout page="En attente...">
<p>Waiting Room</p>
</Layout>
);
}