feat(library): add media library browsing functionality

- Introduced new `library` module in the API routes to handle media library requests.
- Enhanced `AppState` to include a media provider for library interactions.
- Defined new `IMediaProvider` trait methods for listing collections, series, and genres.
- Implemented Jellyfin media provider methods for fetching collections and series.
- Added frontend components for selecting series and displaying filter previews.
- Created hooks for fetching collections, series, and genres from the library.
- Updated media filter to support series name and search term.
- Enhanced API client to handle new library-related endpoints.
This commit is contained in:
2026-03-12 02:54:30 +01:00
parent f069376136
commit bf07a65dcd
14 changed files with 1005 additions and 86 deletions

View File

@@ -72,9 +72,20 @@ async fn main() -> anyhow::Result<()> {
// Build media provider — Jellyfin if configured, no-op fallback otherwise.
let media_provider: Arc<dyn IMediaProvider> = build_media_provider(&config);
let schedule_engine = ScheduleEngineService::new(media_provider, channel_repo, schedule_repo);
let schedule_engine = ScheduleEngineService::new(
Arc::clone(&media_provider),
channel_repo,
schedule_repo,
);
let state = AppState::new(user_service, channel_service, schedule_engine, config.clone()).await?;
let state = AppState::new(
user_service,
channel_service,
schedule_engine,
media_provider,
config.clone(),
)
.await?;
let server_config = ServerConfig {
cors_origins: config.cors_allowed_origins.clone(),