Vaani/lib/features/player/providers/currently_playing_provider.dart

38 lines
1.1 KiB
Dart
Raw Normal View History

2024-05-14 10:11:25 -04:00
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:shelfsdk/audiobookshelf_api.dart';
2024-08-23 04:21:46 -04:00
import 'package:vaani/features/player/providers/audiobook_player.dart';
import 'package:vaani/shared/extensions/model_conversions.dart';
2024-05-14 10:11:25 -04:00
part 'currently_playing_provider.g.dart';
@riverpod
BookExpanded? currentlyPlayingBook(CurrentlyPlayingBookRef ref) {
final player = ref.watch(audiobookPlayerProvider);
return player.book;
}
2024-05-19 08:53:21 -04:00
/// provided the current chapter of the book being played
@riverpod
BookChapter? currentPlayingChapter(CurrentPlayingChapterRef ref) {
final player = ref.watch(audiobookPlayerProvider);
player.slowPositionStream.listen((_) {
ref.invalidateSelf();
});
2024-05-19 09:45:41 -04:00
return player.currentChapter;
2024-05-19 08:53:21 -04:00
}
/// provides the book metadata of the currently playing book
@riverpod
BookMetadataExpanded? currentBookMetadata(CurrentBookMetadataRef ref) {
final player = ref.watch(audiobookPlayerProvider);
if (player.book == null) return null;
2024-06-16 22:24:32 -04:00
return player.book!.metadata.asBookMetadataExpanded;
2024-05-19 08:53:21 -04:00
}
// /// volume of the player [0, 1]
// @riverpod
// double currentVolume(CurrentVolumeRef ref) {
// return 1;
// }