From d70075c4264da7258969ef478b2d7b28e951b7dd Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Sat, 9 May 2026 12:54:05 -0400 Subject: [PATCH] feat(flutter/player): albumCoverCacheProvider + pass cache through configure Adds the Riverpod provider (constructed with dioFactory pulling from the authenticated dioProvider) and extends PlayerActions.playTracks to forward the cache to audio_handler.configure(). The handler signature change lands in the next commit. Intentional intermediate-broken state: audio_handler.configure doesn't yet accept coverCache. Resolved by the next task in the same push. Co-Authored-By: Claude Opus 4.7 (1M context) --- flutter_client/lib/player/player_provider.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/flutter_client/lib/player/player_provider.dart b/flutter_client/lib/player/player_provider.dart index 5e11bda0..43107b63 100644 --- a/flutter_client/lib/player/player_provider.dart +++ b/flutter_client/lib/player/player_provider.dart @@ -2,13 +2,21 @@ import 'package:audio_service/audio_service.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../auth/auth_provider.dart'; +import '../library/library_providers.dart' show dioProvider; import '../models/track.dart'; +import 'album_cover_cache.dart'; import 'audio_handler.dart'; final audioHandlerProvider = Provider((ref) { throw UnimplementedError('overridden in main()'); }); +final albumCoverCacheProvider = Provider((ref) { + return AlbumCoverCache( + dioFactory: () => ref.read(dioProvider.future), + ); +}); + final playbackStateProvider = StreamProvider( (ref) => ref.watch(audioHandlerProvider).playbackState, ); @@ -28,7 +36,9 @@ class PlayerActions { Future playTracks(List tracks, {int initialIndex = 0}) async { final url = await _ref.read(serverUrlProvider.future); final token = await _ref.read(secureStorageProvider).read(key: 'session_token'); - final h = _ref.read(audioHandlerProvider)..configure(baseUrl: url ?? '', token: token); + final cache = _ref.read(albumCoverCacheProvider); + final h = _ref.read(audioHandlerProvider) + ..configure(baseUrl: url ?? '', token: token, coverCache: cache); await h.setQueueFromTracks(tracks, initialIndex: initialIndex); await h.play(); }