mirror of
https://github.com/BrenBroZAYT/gameyfin.git
synced 2026-06-13 16:40:01 +00:00
8d8dca32d8
* chore: bump version to v2.3.0-preview * Customize start page (#803) * Update ConfigService to support complex Objects Implemented tests for ConfigService * Added DB migration for config table * Fixed version in banner.txt not being displayed * Implement Library ordering Implement "Show recently added games on homepage" * Fix build.gradle.kts * FIx bug when creating libraries * Fix TypeScript errors Fix library sorting * Bump actions/checkout from 5 to 6 (#811) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Added automatic scanning using file system watchers (#813) * Implement collections (#814) * Backend implementation for collections * Fix database schema and migration script * Refactor some config values Fix ArrayInput not being deactivatable * Remove "AutoRegisterNewUsers" config option * Fix bug when removing ignored paths * Add UI for collections (WIP) * Fix table actions not synced with state Fix tests * Finish implementation of collection feature * Fix tests * Bump actions/checkout from 5 to 6 (#815) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Fix "allow guests to create game requests" not being enabled when guest access is activated * Fix: Disable loading of EditGameMetadataModal and MatchGameModal in GameView when user is not admin * WIP: Update start page layout * Performance improvements (lazy loading and virtualized grids/lists) Fix various smaller issues * Implement use of blurhash for all images in backend and covers in frontend * Fix bugs and test * Fix code analysis issues * Remove "UI settings" since they have been made obsolete --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
84 lines
3.1 KiB
TypeScript
84 lines
3.1 KiB
TypeScript
import {Outlet, useHref, useNavigate} from 'react-router';
|
|
import "./main.css";
|
|
import {HeroUIProvider} from "@heroui/react";
|
|
import {ThemeProvider as NextThemesProvider} from "next-themes";
|
|
import {themeNames} from "Frontend/theming/themes";
|
|
import {AuthProvider, useAuth} from "Frontend/util/auth";
|
|
import {IconContext, XIcon} from "@phosphor-icons/react";
|
|
import client from "Frontend/generated/connect-client.default";
|
|
import {ErrorHandlingMiddleware} from "Frontend/util/middleware";
|
|
import {initializeLibraryState} from "Frontend/state/LibraryState";
|
|
import {initializeGameState} from "Frontend/state/GameState";
|
|
import {initializeScanState} from "Frontend/state/ScanState";
|
|
import {ToastProvider} from "@heroui/toast";
|
|
import {initializePluginState} from "Frontend/state/PluginState";
|
|
import {isAdmin} from "Frontend/util/utils";
|
|
import {useRouteMetadata} from "Frontend/util/routing";
|
|
import {useEffect} from "react";
|
|
import {initializeGameRequestState} from "Frontend/state/GameRequestState";
|
|
import {initializePlatformState} from "Frontend/state/PlatformState";
|
|
import {initializeDownloadSessionState} from "Frontend/state/DownloadSessionState";
|
|
import {initializeUserState} from "Frontend/state/UserState";
|
|
import {initializeCollectionState} from "Frontend/state/CollectionState";
|
|
|
|
export default function App() {
|
|
client.middlewares = [ErrorHandlingMiddleware];
|
|
|
|
const navigate = useNavigate();
|
|
const routeMetadata = useRouteMetadata();
|
|
|
|
useEffect(() => {
|
|
document.title = routeMetadata?.title ?? "Gameyfin";
|
|
}, [routeMetadata, window.location.href]);
|
|
|
|
return (
|
|
<HeroUIProvider className="size-full" navigate={navigate} useHref={useHref}>
|
|
<NextThemesProvider attribute="class" themes={themeNames()} defaultTheme="gameyfin-violet-dark">
|
|
<AuthProvider>
|
|
<ViewWithAuth/>
|
|
</AuthProvider>
|
|
</NextThemesProvider>
|
|
</HeroUIProvider>
|
|
);
|
|
}
|
|
|
|
function ViewWithAuth() {
|
|
const auth = useAuth();
|
|
|
|
useEffect(() => {
|
|
if (auth.state.initializing || auth.state.loading) return;
|
|
|
|
initializeLibraryState();
|
|
initializeCollectionState();
|
|
initializePlatformState();
|
|
initializeGameRequestState();
|
|
initializePluginState();
|
|
initializeGameState();
|
|
|
|
if (isAdmin(auth)) {
|
|
initializeScanState();
|
|
initializeDownloadSessionState();
|
|
initializeUserState();
|
|
}
|
|
}, [auth]);
|
|
|
|
return <>
|
|
<IconContext.Provider value={{size: 20}}>
|
|
<Outlet/>
|
|
<ToastProvider
|
|
toastProps={{
|
|
shouldShowTimeoutProgress: true,
|
|
radius: "sm",
|
|
variant: "flat",
|
|
hideIcon: true,
|
|
closeIcon: <XIcon/>,
|
|
classNames: {
|
|
closeButton: "opacity-100 absolute right-4 top-1/2 -translate-y-1/2",
|
|
progressTrack: "h-1",
|
|
}
|
|
}}
|
|
toastOffset={64}
|
|
/>
|
|
</IconContext.Provider>
|
|
</>;
|
|
} |