feat(13-02): add library filter dropdown and wire all views to respect active filter

- Add selectedLibraryId state + ByLibrary conditional calls to library-store
- Add library filter pass-through methods to library-controller
- Create library-filter dropdown component in top bar
- Wire genre-details, cover-grid, artists-view, genres-view to use ByLibrary queries
- Update album-selection helper to respect library filter
- Regenerate Wails bindings for new ByLibrary methods
- Search remains client-side (automatically filtered by loaded data)
- Playlists remain unfiltered (use separate playlist store)
This commit is contained in:
2026-03-16 09:41:27 -04:00
parent 5f7de5060a
commit 42b8cf9f52
16 changed files with 492 additions and 51 deletions
@@ -5,9 +5,13 @@ import {
state,
} from 'lit/decorators.js';
import { library } from '@go/models';
import { GetTracksByGenre } from '@go/library/Library';
import {
GetTracksByGenre,
GetTracksByGenreByLibrary,
} from '@go/library/Library';
import { EventsOn } from '@runtime/runtime';
import { Events } from '../../events';
import { libraryStore } from '@store/library-store';
import '@awesome.me/webawesome/dist/components/icon/icon.js';
import '@components/track-list/track-list.js';
import { designTokens } from '../../styles/tokens.css';
@@ -176,9 +180,17 @@ export class GenreDetails extends LitElement {
if (!this.genreName) return;
try {
this.tracks = await GetTracksByGenre(
this.genreName,
);
const libId =
libraryStore.getSelectedLibraryId();
this.tracks = libId !== null
? await GetTracksByGenreByLibrary(
this.genreName,
libId,
)
: await GetTracksByGenre(
this.genreName,
);
} catch (error) {
console.error(
'Error loading genre tracks:',