mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-12-06 07:29:42 +00:00
Compare commits
6 Commits
9483a7b605
...
e30b6cfa93
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e30b6cfa93 | ||
|
|
bd4cd22e4e | ||
|
|
42e954428b | ||
|
|
8c1337d1fc | ||
|
|
94e704087f | ||
|
|
8e287ab1e5 |
@ -9,7 +9,7 @@ import 'package:spotube/provider/history/recent.dart';
|
||||
|
||||
class HomeRecentlyPlayedSection extends HookConsumerWidget {
|
||||
const HomeRecentlyPlayedSection({super.key});
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, ref) {
|
||||
final history = ref.watch(recentlyPlayedItems);
|
||||
@ -20,17 +20,20 @@ class HomeRecentlyPlayedSection extends HookConsumerWidget {
|
||||
return const SizedBox();
|
||||
}
|
||||
|
||||
final uniqueItems = <dynamic>{};
|
||||
final filteredItems = [
|
||||
for (final item in historyData)
|
||||
if (item.playlist != null && item.playlist?.id != null && uniqueItems.add(item.playlist!.id!))
|
||||
item.playlist
|
||||
else if (item.album != null && item.album?.id != null && uniqueItems.add(item.album?.id))
|
||||
item.album
|
||||
];
|
||||
|
||||
return Skeletonizer(
|
||||
enabled: history.isLoading,
|
||||
child: HorizontalPlaybuttonCardView(
|
||||
title: Text(context.l10n.recently_played),
|
||||
items: [
|
||||
for (final item in historyData)
|
||||
if (item.playlist != null)
|
||||
item.playlist
|
||||
else if (item.album != null)
|
||||
item.album
|
||||
],
|
||||
items: filteredItems,
|
||||
hasNextPage: false,
|
||||
isLoadingNextPage: false,
|
||||
onFetchMore: () {},
|
||||
|
||||
@ -101,11 +101,17 @@ class PlaylistCreateDialog extends HookConsumerWidget {
|
||||
} else {
|
||||
await playlistNotifier.create(payload, onError);
|
||||
}
|
||||
|
||||
if (trackIds.isNotEmpty) {
|
||||
await playlistNotifier.addTracks(trackIds, onError);
|
||||
}
|
||||
} finally {
|
||||
isSubmitting.value = false;
|
||||
if (context.mounted &&
|
||||
!ref.read(playlistProvider(playlistId ?? "")).hasError) {
|
||||
context.router.maybePop();
|
||||
context.router.maybePop<Playlist>(
|
||||
await ref.read(playlistProvider(playlistId ?? "").future),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,6 +98,23 @@ class PlaylistNotifier extends FamilyAsyncNotifier<Playlist, String> {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> addTracks(List<String> trackIds, [ValueChanged? onError]) async {
|
||||
try {
|
||||
if (state.value == null) return;
|
||||
|
||||
final spotify = ref.read(spotifyProvider);
|
||||
|
||||
await spotify.playlists.addTracks(
|
||||
trackIds.map((id) => "spotify:track:$id").toList(),
|
||||
state.value!.id!,
|
||||
);
|
||||
} catch (e, stack) {
|
||||
onError?.call(e);
|
||||
AppLogger.reportError(e, stack);
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final playlistProvider =
|
||||
|
||||
Loading…
Reference in New Issue
Block a user