完善新播放逻辑

This commit is contained in:
rang 2025-11-22 15:54:29 +08:00
parent eb1955e5e6
commit 114c9761fd
30 changed files with 658 additions and 683 deletions

View file

@ -1,6 +1,6 @@
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:vaani/features/per_book_settings/providers/book_settings_provider.dart';
import 'package:vaani/features/player/providers/audiobook_player.dart';
import 'package:vaani/features/player/providers/session_provider.dart';
import 'package:vaani/features/skip_start_end/skip_start_end.dart' as core;
part 'skip_start_end_provider.g.dart';
@ -9,23 +9,51 @@ part 'skip_start_end_provider.g.dart';
class SkipStartEnd extends _$SkipStartEnd {
@override
core.SkipStartEnd? build() {
final player = ref.watch(simpleAudiobookPlayerProvider);
final book = ref.watch(audiobookPlayerProvider.select((v) => v.book));
final bookId = book?.libraryItemId ?? '_';
if (bookId == '_') {
final session = ref.watch(sessionProvider);
final bookId = session?.libraryItemId;
if (session == null || bookId == null) {
return null;
}
final player = ref.read(playerProvider);
final bookSettings = ref.watch(bookSettingsProvider(bookId));
final start = bookSettings.playerSettings.skipChapterStart;
final end = bookSettings.playerSettings.skipChapterEnd;
if (start < Duration.zero && end < Duration.zero) {
return null;
}
final skipStartEnd = core.SkipStartEnd(
start: start,
end: end,
player: player,
chapterId: player.currentChapter?.id,
);
ref.onDispose(skipStartEnd.dispose);
return skipStartEnd;
}
}
// @riverpod
// class SkipStartEnd extends _$SkipStartEnd {
// @override
// core.SkipStartEnd? build() {
// final player = ref.watch(simpleAudiobookPlayerProvider);
// final book = ref.watch(audiobookPlayerProvider.select((v) => v.book));
// final bookId = book?.libraryItemId ?? '_';
// if (bookId == '_') {
// return null;
// }
// final bookSettings = ref.watch(bookSettingsProvider(bookId));
// final start = bookSettings.playerSettings.skipChapterStart;
// final end = bookSettings.playerSettings.skipChapterEnd;
// final skipStartEnd = core.SkipStartEnd(
// start: start,
// end: end,
// player: player,
// chapterId: player.currentChapter?.id,
// );
// ref.onDispose(skipStartEnd.dispose);
// return skipStartEnd;
// }
// }