You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

62 lines
1.4 KiB

4 months ago
import { createContext, useState, useEffect, useContext } from "react";
import moment from "moment";
const userContext=createContext();
const SesstionTime={
A:["12:00", "13:30"],
B:["13:30", "15:00"],
C:["15:00", "17:30"],
D:["17:30", "19:00"],
E:["19:00", "20:30"],
F:["20:30", "22:00"]
}
export function UserProvider({children}) {
const [userId, setUserId] = useState(null);
const [sessionId, setSessionId] = useState(null);
function getFileId(){
if(!userId) return `test-${moment().format("YYYYMMDDmmss")}-${sessionId}`;
return `${moment().format("YYYYMMDD").substring(2)}-${sessionId}-${userId}`;
}
useEffect(() => {
let symbol='';
for(const [key, value] of Object.entries(SesstionTime)){
const start=moment(value[0], "HH:mm");
const end=moment(value[1], "HH:mm");
if(moment().isBetween(start, end)){
symbol=key;
break;
}
}
setSessionId(symbol);
}, [userId]);
return (
<userContext.Provider value={{ userId, setUserId, getFileId }}>
{children}
</userContext.Provider>
);
}
export function useUser() {
const context = useContext(userContext);
if (!context) {
throw new Error("useUser must be used within a UserProvider");
}
return context;
}
export { userContext };