mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55:18 +00:00
31 lines
841 B
Dart
31 lines
841 B
Dart
import 'package:fl_query/fl_query.dart';
|
|
import 'package:spotify/spotify.dart';
|
|
|
|
extension FetchAllTracks on InfiniteQuery<List<Track>, dynamic, int> {
|
|
Future<List<Track>> fetchAllTracks({
|
|
required Future<List<Track>> Function() getAllTracks,
|
|
}) async {
|
|
if (pages.isNotEmpty && !hasNextPage) {
|
|
return pages.expand((page) => page).toList();
|
|
}
|
|
final tracks = await getAllTracks();
|
|
final pagedTracks = tracks.fold(
|
|
<int, List<Track>>{},
|
|
(acc, element) {
|
|
final index = acc.length;
|
|
final groupIndex = index ~/ 20;
|
|
final group = acc[groupIndex] ?? [];
|
|
group.add(element);
|
|
acc[groupIndex] = group;
|
|
return acc;
|
|
},
|
|
);
|
|
|
|
for (final group in pagedTracks.entries) {
|
|
setPageData(group.key, group.value);
|
|
}
|
|
|
|
return tracks.toList();
|
|
}
|
|
}
|