perf(library): lazy-load collections and dispose queries

This commit is contained in:
zarzet
2026-07-15 21:32:43 +07:00
parent 7f1c3e60db
commit 17dbcc1338
11 changed files with 217 additions and 85 deletions
+14 -2
View File
@@ -189,13 +189,13 @@ extension _QueueTabSelectionActions on _QueueTabState {
Future<void> _downloadAllSelectedPlaylists(BuildContext context) async {
final collectionsState = ref.read(libraryCollectionsProvider);
final selectedPlaylists = collectionsState.playlists
var selectedPlaylists = collectionsState.playlists
.where((p) => _selectedPlaylistIds.contains(p.id))
.toList();
final totalTracks = selectedPlaylists.fold<int>(
0,
(sum, p) => sum + p.tracks.length,
(sum, p) => sum + p.trackCount,
);
if (totalTracks == 0) {
@@ -230,6 +230,18 @@ extension _QueueTabSelectionActions on _QueueTabState {
if (confirmed != true || !context.mounted) return;
await ref
.read(libraryCollectionsProvider.notifier)
.ensurePlaylistsLoaded(
selectedPlaylists.map((playlist) => playlist.id),
);
if (!context.mounted) return;
selectedPlaylists = ref
.read(libraryCollectionsProvider)
.playlists
.where((playlist) => _selectedPlaylistIds.contains(playlist.id))
.toList(growable: false);
final settings = ref.read(settingsProvider);
final extensionState = ref.read(extensionProvider);
final queueNotifier = ref.read(downloadQueueProvider.notifier);