Refactor chapter list provider and improve TTS functionality
- Removed the constant chapterPageSize and refactored ChapterListQuery to use a simpler approach for fetching chapters. - Updated the chapter list provider to handle fetching all chapters in a single request with pagination. - Enhanced error handling for fetching chapters by resolving canonical IDs when necessary. - Modified TTS functionality to ensure proper handling of Android fallback reading and improved error management. - Added a new setting to enable/disable TTS on sentence tap. - Updated UI components in the reader screen for better user experience and added navigation buttons for chapters. - Bumped version to 1.0.3+4 in pubspec.yaml.
This commit is contained in:
@@ -44,6 +44,22 @@ class BookshelfNotifier extends StateNotifier<AsyncValue<List<BookmarkModel>>> {
|
||||
bool isBookmarked(String novelId) {
|
||||
return (state.valueOrNull ?? []).any((b) => b.novelId == novelId);
|
||||
}
|
||||
|
||||
Future<void> removeFromShelf(String novelId, BookmarkType type) async {
|
||||
try {
|
||||
final client = _ref.read(apiClientProvider);
|
||||
await client.dio.delete(
|
||||
'/api/user/bookmarks/$novelId',
|
||||
queryParameters: {'type': type.value},
|
||||
);
|
||||
final current = state.valueOrNull ?? [];
|
||||
state = AsyncValue.data(
|
||||
current.where((b) => b.novelId != novelId || b.type != type).toList(),
|
||||
);
|
||||
} catch (e, st) {
|
||||
state = AsyncValue.error(e, st);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final bookshelfProvider =
|
||||
@@ -51,6 +67,16 @@ final bookshelfProvider =
|
||||
return BookshelfNotifier(ref);
|
||||
});
|
||||
|
||||
final readingBookmarksProvider = Provider<List<BookmarkModel>>((ref) {
|
||||
final bookmarks = ref.watch(bookshelfProvider).valueOrNull ?? [];
|
||||
return bookmarks.where((b) => b.type == BookmarkType.reading).toList();
|
||||
});
|
||||
|
||||
final savedBookmarksProvider = Provider<List<BookmarkModel>>((ref) {
|
||||
final bookmarks = ref.watch(bookshelfProvider).valueOrNull ?? [];
|
||||
return bookmarks.where((b) => b.type == BookmarkType.bookmarked).toList();
|
||||
});
|
||||
|
||||
final isBookmarkedProvider = Provider.family<bool, String>((ref, novelId) {
|
||||
final bookshelf = ref.watch(bookshelfProvider);
|
||||
return bookshelf.valueOrNull?.any((b) => b.novelId == novelId) ?? false;
|
||||
|
||||
Reference in New Issue
Block a user