mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
33 lines
954 B
Dart
33 lines
954 B
Dart
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|
import 'package:spotube/models/metadata/metadata.dart';
|
|
import 'package:spotube/provider/metadata_plugin/library/tracks.dart';
|
|
|
|
typedef UseTrackToggleLike = ({
|
|
bool isLiked,
|
|
Future<void> Function(SpotubeTrackObject track) toggleTrackLike,
|
|
});
|
|
|
|
UseTrackToggleLike useTrackToggleLike(SpotubeTrackObject track, WidgetRef ref) {
|
|
final savedTracksNotifier =
|
|
ref.watch(metadataPluginSavedTracksProvider.notifier);
|
|
|
|
final isSavedTrack = ref.watch(
|
|
metadataPluginIsSavedTrackProvider(track.id),
|
|
);
|
|
|
|
return (
|
|
isLiked: isSavedTrack.asData?.value ?? false,
|
|
toggleTrackLike: (track) async {
|
|
final isLikedTrack = await ref.read(
|
|
metadataPluginIsSavedTrackProvider(track.id).future,
|
|
);
|
|
|
|
if (isLikedTrack) {
|
|
await savedTracksNotifier.removeFavorite([track]);
|
|
} else {
|
|
await savedTracksNotifier.addFavorite([track]);
|
|
}
|
|
},
|
|
);
|
|
}
|