feat(genre): show parent genres by default with sub-genre toggle
- Default view shows only parent genres (less cluttered like Qobuz) - When selecting a parent, filtering includes all its sub-genres - Added "Show all sub-genres" toggle for granular control - Store now tracks parent/child relationships for proper filtering - getFilterGenreNames() returns selected + children for filtering
This commit is contained in:
1 parent
d2544dceb9
commit
589e6071c4
4 files changed
+124
-41
No files matched your search
@@ -19,7 +19,7 @@
|
||||
import {
|
||||
getSelectedGenreId,
|
||||
getSelectedGenreIds,
|
||||
getSelectedGenreNames,
|
||||
getFilterGenreNames,
|
||||
hasActiveFilter as hasGenreFilter
|
||||
} from '$lib/stores/genreFilterStore';
|
||||
import { setPlaybackContext } from '$lib/stores/playbackContextStore';
|
||||
@@ -475,11 +475,12 @@
|
||||
}
|
||||
|
||||
function filterAlbumsByGenre(albums: AlbumCardData[]): AlbumCardData[] {
|
||||
const selectedGenreNames = getSelectedGenreNames();
|
||||
if (selectedGenreNames.length === 0) return albums;
|
||||
// Filter albums whose genre matches any of the selected genres (case-insensitive)
|
||||
// getFilterGenreNames returns selected genres + all children of selected parent genres
|
||||
const filterGenreNames = getFilterGenreNames();
|
||||
if (filterGenreNames.length === 0) return albums;
|
||||
// Filter albums whose genre matches any of the filter genres (case-insensitive)
|
||||
return albums.filter(album =>
|
||||
selectedGenreNames.some(genreName =>
|
||||
filterGenreNames.some(genreName =>
|
||||
album.genre.toLowerCase().includes(genreName.toLowerCase())
|
||||
)
|
||||
);
|
||||
|
||||
Reference in new issue
Block a user