2021-06-23 09:52:33 -04:00
|
|
|
import { BrowserRouter as Router } from "react-router-dom";
|
2021-06-18 12:57:08 -04:00
|
|
|
|
2021-12-23 21:05:18 -05:00
|
|
|
import { useEffect, useState } from "preact/hooks";
|
|
|
|
|
|
|
|
import { hydrateState } from "../mobx/State";
|
|
|
|
|
|
|
|
import Preloader from "../components/ui/Preloader";
|
|
|
|
|
2021-07-05 06:23:23 -04:00
|
|
|
import { Children } from "../types/Preact";
|
2021-06-18 12:57:08 -04:00
|
|
|
import Locale from "./Locale";
|
|
|
|
import Theme from "./Theme";
|
2021-07-05 06:23:23 -04:00
|
|
|
import Intermediate from "./intermediate/Intermediate";
|
|
|
|
import Client from "./revoltjs/RevoltClient";
|
2021-06-18 12:57:08 -04:00
|
|
|
|
2021-12-10 07:53:41 -05:00
|
|
|
/**
|
|
|
|
* This component provides all of the application's context layers.
|
|
|
|
* @param param0 Provided children
|
|
|
|
*/
|
2021-06-18 12:57:08 -04:00
|
|
|
export default function Context({ children }: { children: Children }) {
|
2021-12-23 21:05:18 -05:00
|
|
|
const [ready, setReady] = useState(false);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
hydrateState().then(() => setReady(true));
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
if (!ready) return <Preloader type="spinner" />;
|
|
|
|
|
2021-07-05 06:25:20 -04:00
|
|
|
return (
|
2021-09-10 18:03:06 -04:00
|
|
|
<Router basename={import.meta.env.BASE_URL}>
|
2021-12-23 16:43:11 -05:00
|
|
|
<Locale>
|
|
|
|
<Intermediate>
|
|
|
|
<Client>{children}</Client>
|
|
|
|
</Intermediate>
|
|
|
|
</Locale>
|
|
|
|
<Theme />
|
2021-07-05 06:25:20 -04:00
|
|
|
</Router>
|
|
|
|
);
|
2021-06-18 12:57:08 -04:00
|
|
|
}
|