Load certain states only as admin

This commit is contained in:
grimsi
2025-06-13 18:53:46 +02:00
parent c74a7e9bf1
commit 5a0beeae17
+23 -9
View File
@@ -4,7 +4,7 @@ import "Frontend/util/custom-validators";
import {HeroUIProvider} from "@heroui/react"; import {HeroUIProvider} from "@heroui/react";
import {ThemeProvider as NextThemesProvider} from "next-themes"; import {ThemeProvider as NextThemesProvider} from "next-themes";
import {themeNames} from "Frontend/theming/themes"; import {themeNames} from "Frontend/theming/themes";
import {AuthProvider} from "Frontend/util/auth"; import {AuthProvider, useAuth} from "Frontend/util/auth";
import {IconContext, X} from "@phosphor-icons/react"; import {IconContext, X} from "@phosphor-icons/react";
import client from "Frontend/generated/connect-client.default"; import client from "Frontend/generated/connect-client.default";
import {ErrorHandlingMiddleware} from "Frontend/util/middleware"; import {ErrorHandlingMiddleware} from "Frontend/util/middleware";
@@ -12,18 +12,35 @@ import {initializeLibraryState} from "Frontend/state/LibraryState";
import {initializeGameState} from "Frontend/state/GameState"; import {initializeGameState} from "Frontend/state/GameState";
import {initializeScanState} from "Frontend/state/ScanState"; import {initializeScanState} from "Frontend/state/ScanState";
import {ToastProvider} from "@heroui/toast"; import {ToastProvider} from "@heroui/toast";
import {initializePluginState} from "Frontend/state/PluginState";
import {isAdmin} from "Frontend/util/utils";
export default function App() { export default function App() {
client.middlewares = [ErrorHandlingMiddleware]; client.middlewares = [ErrorHandlingMiddleware];
initializeLibraryState();
initializeGameState();
initializeScanState();
return ( return (
<HeroUIProvider className="size-full" navigate={useNavigate} useHref={useHref}> <HeroUIProvider className="size-full" navigate={useNavigate} useHref={useHref}>
<NextThemesProvider attribute="class" themes={themeNames()} defaultTheme="gameyfin-violet-dark"> <NextThemesProvider attribute="class" themes={themeNames()} defaultTheme="gameyfin-violet-dark">
<AuthProvider> <AuthProvider>
<ViewWithAuth/>
</AuthProvider>
</NextThemesProvider>
</HeroUIProvider>
);
}
function ViewWithAuth() {
const auth = useAuth();
initializeLibraryState();
initializeGameState();
if (isAdmin(auth)) {
initializeScanState();
initializePluginState();
}
return <>
<IconContext.Provider value={{size: 20}}> <IconContext.Provider value={{size: 20}}>
<Outlet/> <Outlet/>
<ToastProvider <ToastProvider
@@ -41,8 +58,5 @@ export default function App() {
toastOffset={64} toastOffset={64}
/> />
</IconContext.Provider> </IconContext.Provider>
</AuthProvider> </>;
</NextThemesProvider>
</HeroUIProvider>
);
} }