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>
48 lines
2.3 KiB
TypeScript
48 lines
2.3 KiB
TypeScript
import {useLocation, useNavigate, useParams} from "react-router";
|
|
import React, {useEffect} from "react";
|
|
import LibraryHeader from "Frontend/components/general/covers/LibraryHeader";
|
|
import {Button, Tab, Tabs} from "@heroui/react";
|
|
import {ArrowLeftIcon} from "@phosphor-icons/react";
|
|
import LibraryManagementDetails from "Frontend/components/general/library/LibraryManagementDetails";
|
|
import LibraryManagementGames from "Frontend/components/general/library/LibraryManagementGames";
|
|
import {useSnapshot} from "valtio/react";
|
|
import {libraryState} from "Frontend/state/LibraryState";
|
|
import LibraryManagementIgnoredPaths from "Frontend/components/general/library/LibraryManagementIgnoredPaths";
|
|
import LibraryAdminDto from "Frontend/generated/org/gameyfin/app/libraries/dto/LibraryAdminDto";
|
|
|
|
|
|
export default function LibraryManagementView() {
|
|
const {libraryId} = useParams();
|
|
const {hash} = useLocation();
|
|
const navigate = useNavigate();
|
|
const state = useSnapshot(libraryState);
|
|
|
|
useEffect(() => {
|
|
if (state.isLoaded && (!libraryId || !state.state[parseInt(libraryId)])) {
|
|
navigate("/administration/games");
|
|
}
|
|
}, [state, libraryId]);
|
|
|
|
return libraryId && state.state[parseInt(libraryId)] && <div className="flex flex-col gap-4">
|
|
<div className="flex flex-row gap-4 items-center">
|
|
<Button isIconOnly variant="light" onPress={() => history.back()}>
|
|
<ArrowLeftIcon/>
|
|
</Button>
|
|
<h1 className="text-2xl font-bold">Manage library</h1>
|
|
</div>
|
|
<LibraryHeader library={state.state[parseInt(libraryId)]} className="h-32"/>
|
|
<Tabs color="primary" fullWidth
|
|
selectedKey={hash.length > 0 ? hash : "#details"}
|
|
onSelectionChange={(newKey) => navigate(newKey.toString(), {replace: true})}>
|
|
<Tab key="#details" title="Details">
|
|
<LibraryManagementDetails library={state.state[parseInt(libraryId)] as LibraryAdminDto}/>
|
|
</Tab>
|
|
<Tab key="#games" title="Games">
|
|
<LibraryManagementGames library={state.state[parseInt(libraryId)] as LibraryAdminDto}/>
|
|
</Tab>
|
|
<Tab key="#ignored-paths" title="Ignored paths">
|
|
<LibraryManagementIgnoredPaths library={state.state[parseInt(libraryId)] as LibraryAdminDto}/>
|
|
</Tab>
|
|
</Tabs>
|
|
</div>;
|
|
} |