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 (