admin interface basic functionalities

This commit is contained in:
Quentin Roussel
2024-03-26 01:21:26 +01:00
parent 2478ee32ec
commit b23d2a63e6
24 changed files with 1504 additions and 40 deletions

View File

@@ -0,0 +1,37 @@
"use client";
import { createContext, useContext, useEffect, useState } from "react";
import { useSocket } from "./socketContext";
const adminContext = createContext();
const AdminConnexionProvider = ({ children }) => {
const [loggedIn, setLoggedIn] = useState(false);
const { adminSocket } = useSocket();
function login(password) {
adminSocket.emit("login", password);
}
useEffect(() => {
function updateLoginStatus(status) {
setLoggedIn(status);
}
adminSocket.on("login_response", updateLoginStatus);
return () => {
adminSocket.off("login_response", updateLoginStatus);
};
}, []);
return (
<adminContext.Provider value={{ login, loggedIn }}>
{children}
</adminContext.Provider>
);
}
function useAdminConnexion() {
return useContext(adminContext);
}
export { AdminConnexionProvider, useAdminConnexion};

View File

@@ -0,0 +1,20 @@
"use client";
import { createContext, useContext, useState } from "react";
const adminContext = createContext();
function AdminProvider({children}) {
const [teams, setTeams] = useState([]);
const [started, setStarted] = useState(false);
return (
<adminContext.Provider value={{teams, setTeams, started, setStarted}}>
{children}
</adminContext.Provider>
);
}
function useAdminContext() {
return useContext(adminContext);
}
export { AdminProvider, useAdminContext };

View File

@@ -0,0 +1,22 @@
"use client";
import { createContext, useContext } from "react";
const { io } = require("socket.io-client");
const SOCKET_URL = "http://localhost:3000";
const USER_SOCKET_URL = SOCKET_URL + "/user";
const ADMIN_SOCKET_URL = SOCKET_URL + "/admin";
export const userSocket = io(USER_SOCKET_URL);
export const adminSocket = io(ADMIN_SOCKET_URL);
export const SocketContext = createContext();
export default function SocketProvider({ children }) {
return (
<SocketContext.Provider value={{userSocket, adminSocket}}>{children}</SocketContext.Provider>
);
}
export function useSocket() {
return useContext(SocketContext);
}