mirror of
https://github.com/gnmyt/LicenseAPI.git
synced 2026-01-11 18:51:47 +00:00
Create common Info context
This commit is contained in:
34
dashboard/src/common/contexts/Info/InfoContext.jsx
Normal file
34
dashboard/src/common/contexts/Info/InfoContext.jsx
Normal file
@ -0,0 +1,34 @@
|
||||
import {createContext, useEffect, useState} from "react";
|
||||
import {request} from "@/common/utils/RequestUtil.js";
|
||||
import Loading from "@/states/Loading";
|
||||
import Error from "@/states/Error";
|
||||
|
||||
export const InfoContext = createContext({});
|
||||
|
||||
export const InfoProvider = (props) => {
|
||||
const [info, setInfo] = useState({status: "loading"});
|
||||
|
||||
const updateInfo = async () => {
|
||||
try {
|
||||
setInfo(await request("/info/status"));
|
||||
} catch (e) {
|
||||
setInfo({status: "offline"});
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
setTimeout(updateInfo, 500);
|
||||
|
||||
const interval = setInterval(() => updateInfo(), 10000);
|
||||
return () => clearInterval(interval);
|
||||
}, []);
|
||||
|
||||
if (info.status === "loading") return (<Loading/>);
|
||||
if (info.status === "offline") return (<Error />);
|
||||
|
||||
return (
|
||||
<InfoContext.Provider value={{info, updateInfo}}>
|
||||
{props.children}
|
||||
</InfoContext.Provider>
|
||||
);
|
||||
}
|
||||
1
dashboard/src/common/contexts/Info/index.js
Normal file
1
dashboard/src/common/contexts/Info/index.js
Normal file
@ -0,0 +1 @@
|
||||
export * from "./InfoContext.jsx";
|
||||
Reference in New Issue
Block a user