diff --git a/src/renderer/features/genres/components/genre-detail-content.tsx b/src/renderer/features/genres/components/genre-detail-content.tsx
index 7f877b6ec..4103895c9 100644
--- a/src/renderer/features/genres/components/genre-detail-content.tsx
+++ b/src/renderer/features/genres/components/genre-detail-content.tsx
@@ -2,22 +2,65 @@ import { Suspense, useMemo } from 'react';
import { useParams } from 'react-router';
import { AlbumListView } from '/@/renderer/features/albums/components/album-list-content';
+import { ListFilters, ListFiltersTitle } from '/@/renderer/features/shared/components/list-filters';
+import { ListWithSidebarContainer } from '/@/renderer/features/shared/components/list-with-sidebar-container';
+import { SaveAsCollectionButton } from '/@/renderer/features/shared/components/save-as-collection-button';
import { SongListView } from '/@/renderer/features/songs/components/song-list-content';
import { GenreTarget, useGenreTarget, useListSettings } from '/@/renderer/store';
+import { ScrollArea } from '/@/shared/components/scroll-area/scroll-area';
import { Spinner } from '/@/shared/components/spinner/spinner';
+import { Stack } from '/@/shared/components/stack/stack';
+import { LibraryItem } from '/@/shared/types/domain-types';
import { ItemListKey } from '/@/shared/types/types';
+const GenreDetailFilters = () => {
+ const genreTarget = useGenreTarget();
+
+ if (genreTarget === GenreTarget.ALBUM) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+
+ if (genreTarget === GenreTarget.TRACK) {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+ );
+ }
+
+ return null;
+};
+
export const GenreDetailContent = () => {
const genreTarget = useGenreTarget();
- switch (genreTarget) {
- case GenreTarget.ALBUM:
- return ;
- case GenreTarget.TRACK:
- return ;
- default:
- return null;
- }
+ return (
+ <>
+
+ {genreTarget === GenreTarget.ALBUM && }
+ {genreTarget === GenreTarget.TRACK && }
+ >
+ );
};
function GenreDetailContentAlbums() {
diff --git a/src/renderer/features/genres/routes/genre-detail-route.tsx b/src/renderer/features/genres/routes/genre-detail-route.tsx
index b6b91ef2f..5f1418e2c 100644
--- a/src/renderer/features/genres/routes/genre-detail-route.tsx
+++ b/src/renderer/features/genres/routes/genre-detail-route.tsx
@@ -6,22 +6,31 @@ import { useGenreList } from '/@/renderer/features/genres/api/genres-api';
import { GenreDetailContent } from '/@/renderer/features/genres/components/genre-detail-content';
import { GenreDetailHeader } from '/@/renderer/features/genres/components/genre-detail-header';
import { AnimatedPage } from '/@/renderer/features/shared/components/animated-page';
+import { ListWithSidebarContainer } from '/@/renderer/features/shared/components/list-with-sidebar-container';
import { PageErrorBoundary } from '/@/renderer/features/shared/components/page-error-boundary';
+import { GenreTarget, useGenreTarget } from '/@/renderer/store';
+import { usePageSidebar } from '/@/renderer/store/app.store';
+import { ItemListKey } from '/@/shared/types/types';
const GenreDetailRoute = () => {
const { genreId } = useParams() as { genreId: string };
- const pageKey = 'genre';
+ const genreTarget = useGenreTarget();
+ const pageKey =
+ genreTarget === GenreTarget.ALBUM ? ItemListKey.GENRE_ALBUM : ItemListKey.GENRE_SONG;
const [itemCount, setItemCount] = useState(undefined);
+ const [isSidebarOpen, setIsSidebarOpen] = usePageSidebar(pageKey);
const providerValue = useMemo(() => {
return {
id: genreId,
+ isSidebarOpen,
itemCount,
pageKey,
+ setIsSidebarOpen,
setItemCount,
};
- }, [genreId, itemCount, pageKey, setItemCount]);
+ }, [genreId, isSidebarOpen, itemCount, pageKey, setIsSidebarOpen, setItemCount]);
const { data: genres } = useGenreList();
@@ -33,7 +42,9 @@ const GenreDetailRoute = () => {
-
+
+
+
);
diff --git a/src/renderer/features/shared/components/list-filters.tsx b/src/renderer/features/shared/components/list-filters.tsx
index a236c2965..a2b34bcfe 100644
--- a/src/renderer/features/shared/components/list-filters.tsx
+++ b/src/renderer/features/shared/components/list-filters.tsx
@@ -62,7 +62,8 @@ export const ListFiltersModal = ({ isActive, itemType }: ListFiltersProps) => {
const canPin = Boolean(setIsSidebarOpen);
const disableArtistFilter = pageKey === ItemListKey.ALBUM_ARTIST_ALBUM;
- const disableGenreFilter = pageKey === ItemListKey.GENRE_ALBUM;
+ const disableGenreFilter =
+ pageKey === ItemListKey.GENRE_ALBUM || pageKey === ItemListKey.GENRE_SONG;
return (
<>
@@ -114,7 +115,8 @@ export const ListFilters = ({ itemType }: ListFiltersProps) => {
const { pageKey } = useListContext();
const disableArtistFilter = pageKey === ItemListKey.ALBUM_ARTIST_ALBUM;
- const disableGenreFilter = pageKey === ItemListKey.GENRE_ALBUM;
+ const disableGenreFilter =
+ pageKey === ItemListKey.GENRE_ALBUM || pageKey === ItemListKey.GENRE_SONG;
return (