2024-01-26 23:29:46 +01:00
|
|
|
import "./utils/Requests";
|
2024-01-24 01:35:47 +01:00
|
|
|
import { useState } from "react";
|
2024-01-20 23:32:53 +01:00
|
|
|
import { ToastContainer } from "react-toastify";
|
|
|
|
import { BaseStyles, ThemeProvider, theme } from "@primer/react";
|
|
|
|
import { SiteHeader } from "./components/SiteHeader";
|
2024-01-22 00:41:59 +01:00
|
|
|
import { VerifyAdmin } from "./components/VerifyAdmin";
|
2024-01-31 00:27:53 +01:00
|
|
|
import { VerifyRole } from "./components/VerifyRole";
|
|
|
|
import { UserPermissions } from "./utils/Extensions";
|
2024-01-20 23:32:53 +01:00
|
|
|
import { BrowserRouter, Route, Routes } from "react-router-dom";
|
|
|
|
import { CookiesProvider } from "react-cookie";
|
|
|
|
import { Home } from "./routes/Home";
|
2024-01-22 00:41:59 +01:00
|
|
|
import { Download } from "./routes/Download";
|
2024-01-22 23:04:46 +01:00
|
|
|
import { Tracks } from "./routes/Tracks";
|
2024-01-28 16:54:32 +01:00
|
|
|
import { TrackSubmission } from "./routes/TrackSubmission";
|
2024-01-22 00:41:59 +01:00
|
|
|
import { Profile } from "./routes/Profile";
|
2024-01-26 23:29:46 +01:00
|
|
|
import { NotFound } from "./routes/404";
|
|
|
|
import { AdminHome } from "./routes/AdminHome";
|
|
|
|
import { AdminTrackList } from "./routes/AdminTrackList";
|
2024-01-31 00:27:53 +01:00
|
|
|
import { AdminSubmissions } from "./routes/AdminSubmissions";
|
2024-01-26 23:29:46 +01:00
|
|
|
import { AdminFeaturedTab } from "./routes/AdminFeaturedTab";
|
2024-01-22 00:41:59 +01:00
|
|
|
import { SiteContext, SiteState } from "./utils/State";
|
2024-01-20 23:32:53 +01:00
|
|
|
import merge from "deepmerge";
|
|
|
|
|
|
|
|
import "react-toastify/dist/ReactToastify.css";
|
|
|
|
import "./css/index.css";
|
|
|
|
|
|
|
|
const DefaultTheme = merge(theme, {}); // we'll use this!! eventually!!!
|
|
|
|
|
|
|
|
function App() {
|
2024-01-22 00:41:59 +01:00
|
|
|
const [reactState, setReactState] = useState<SiteState>({} as SiteState);
|
|
|
|
|
2024-01-20 23:32:53 +01:00
|
|
|
return (
|
|
|
|
<ThemeProvider colorMode="dark" theme={DefaultTheme}>
|
|
|
|
<BaseStyles>
|
|
|
|
<div>
|
|
|
|
<CookiesProvider />
|
|
|
|
<ToastContainer theme="dark" position="bottom-right" draggable={false} pauseOnHover={false} pauseOnFocusLoss={false} />
|
|
|
|
<BrowserRouter>
|
2024-01-22 00:41:59 +01:00
|
|
|
<SiteContext.Provider value={{ state: reactState, setState: setReactState }}>
|
|
|
|
<SiteHeader />
|
|
|
|
<div className="content">
|
|
|
|
<Routes>
|
|
|
|
{/* User-accessible routes */}
|
|
|
|
<Route path="/" element={<Home />} />
|
|
|
|
<Route path="/download" element={<Download />} />
|
2024-01-22 23:04:46 +01:00
|
|
|
<Route path="/tracks" element={<Tracks />} />
|
2024-01-28 16:54:32 +01:00
|
|
|
<Route path="/submissions" element={<TrackSubmission />} />
|
2024-01-22 00:41:59 +01:00
|
|
|
<Route path="/profile" element={<Profile />} />
|
2024-01-26 23:29:46 +01:00
|
|
|
<Route path="*" element={<NotFound />} />
|
2024-01-20 23:32:53 +01:00
|
|
|
|
2024-01-31 00:27:53 +01:00
|
|
|
{/* Staff routes */}
|
|
|
|
<Route path="/mod/submissions" element={<VerifyRole role={UserPermissions.TrackVerifier}><AdminSubmissions /></VerifyRole>} />
|
|
|
|
|
2024-01-22 00:41:59 +01:00
|
|
|
{/* Admin routes */}
|
|
|
|
<Route path="/admin" element={<VerifyAdmin><AdminHome /></VerifyAdmin>} />
|
|
|
|
<Route path="/admin/tracks" element={<VerifyAdmin><AdminTrackList /></VerifyAdmin>} />
|
2024-01-26 23:29:46 +01:00
|
|
|
<Route path="/admin/featured" element={<VerifyAdmin><AdminFeaturedTab /></VerifyAdmin>} />
|
2024-01-22 00:41:59 +01:00
|
|
|
</Routes>
|
|
|
|
</div>
|
|
|
|
</SiteContext.Provider>
|
2024-01-20 23:32:53 +01:00
|
|
|
</BrowserRouter>
|
|
|
|
</div>
|
|
|
|
</BaseStyles>
|
|
|
|
</ThemeProvider>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default App;
|