diff --git a/lib/shared/audio_player.dart b/lib/shared/audio_player.dart new file mode 100644 index 0000000..b2ef502 --- /dev/null +++ b/lib/shared/audio_player.dart @@ -0,0 +1,41 @@ +import 'package:shelfsdk/audiobookshelf_api.dart'; +import 'package:vaani/features/player/core/audiobook_player.dart'; + +abstract class AbsAudioPlayer { + AbsAudioPlayer._(); + + BookExpanded? _book; + + BookExpanded? get book => _book; + + Future play(); + Future pause(); + Future playOrPause(); + Future next(); + Future previous(); + Future seek(Duration position, {int? index}); + Future seekInBook(Duration position); + Future setSpeed(double speed); + Future setVolume(double volume); + Future switchChapter(int chapterId); + + int get currentIndex; + + Duration get position; + + Duration get positionInChapter { + final globalPosition = positionInBook; + return globalPosition - + (book?.findChapterAtTime(globalPosition).start ?? Duration.zero); + } + + Duration get positionInBook => + position + (book?.tracks[currentIndex].startOffset ?? Duration.zero); + + Stream get positionStream; + + Stream get positionInChapterStream; + + Stream get positionInBookStream; + Stream get bufferedPositionInBookStream; +}