From 481bb97301a5942d8e0411978d4c1d6b57712bde Mon Sep 17 00:00:00 2001 From: nyne Date: Sat, 18 Jan 2025 12:26:20 +0800 Subject: [PATCH] fix #143 --- lib/foundation/favorites.dart | 5 ++- lib/pages/favorites/local_favorites_page.dart | 37 ++++++++++++++++++- lib/pages/reader/reader.dart | 4 ++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/lib/foundation/favorites.dart b/lib/foundation/favorites.dart index 6671aba..48c76d8 100644 --- a/lib/foundation/favorites.dart +++ b/lib/foundation/favorites.dart @@ -594,7 +594,10 @@ class LocalFavoritesManager with ChangeNotifier { notifyListeners(); } - void onReadEnd(String id, ComicType type) async { + void onRead(String id, ComicType type) async { + if (appdata.settings['moveFavoriteAfterRead'] == "none") { + return; + } _modifiedAfterLastCache = true; for (final folder in folderNames) { var rows = _db.select(""" diff --git a/lib/pages/favorites/local_favorites_page.dart b/lib/pages/favorites/local_favorites_page.dart index 6b08e14..7be3e27 100644 --- a/lib/pages/favorites/local_favorites_page.dart +++ b/lib/pages/favorites/local_favorites_page.dart @@ -50,9 +50,16 @@ class _LocalFavoritesPageState extends State<_LocalFavoritesPage> { var (a, b) = LocalFavoritesManager().findLinked(widget.folder); networkSource = a; networkFolder = b; + LocalFavoritesManager().addListener(updateComics); super.initState(); } + @override + void dispose() { + super.dispose(); + LocalFavoritesManager().removeListener(updateComics); + } + void selectAll() { setState(() { selectedComics = comics.asMap().map((k, v) => MapEntry(v, true)); @@ -382,6 +389,35 @@ class _LocalFavoritesPageState extends State<_LocalFavoritesPage> { selections: selectedComics, menuBuilder: (c) { return [ + MenuEntry( + icon: Icons.delete, + text: "Delete".tl, + onClick: () { + LocalFavoritesManager().deleteComicWithId( + widget.folder, + c.id, + (c as FavoriteItem).type, + ); + }, + ), + MenuEntry( + icon: Icons.check, + text: "Select".tl, + onClick: () { + setState(() { + if (!multiSelectMode) { + multiSelectMode = true; + } + if (selectedComics.containsKey(c as FavoriteItem)) { + selectedComics.remove(c); + _checkExitSelectMode(); + } else { + selectedComics[c] = true; + } + lastSelectedIndex = comics.indexOf(c); + }); + }, + ), MenuEntry( icon: Icons.download, text: "Download".tl, @@ -657,7 +693,6 @@ class _LocalFavoritesPageState extends State<_LocalFavoritesPage> { (c as FavoriteItem).type, ); } - updateComics(); _cancel(); } } diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index 37018ac..c897f70 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -21,6 +21,7 @@ import 'package:venera/foundation/cache_manager.dart'; import 'package:venera/foundation/comic_source/comic_source.dart'; import 'package:venera/foundation/comic_type.dart'; import 'package:venera/foundation/consts.dart'; +import 'package:venera/foundation/favorites.dart'; import 'package:venera/foundation/history.dart'; import 'package:venera/foundation/image_provider/reader_image.dart'; import 'package:venera/foundation/local.dart'; @@ -165,6 +166,9 @@ class _ReaderState extends State with _ReaderLocation, _ReaderWindow { handleVolumeEvent(); } setImageCacheSize(); + Future.delayed(const Duration(milliseconds: 200), () { + LocalFavoritesManager().onRead(cid, type); + }); super.initState(); }