When adding a favorite, also add the update time.

This commit is contained in:
2025-02-15 16:32:51 +08:00
parent 5c162d2800
commit 3ff2f6aa36
3 changed files with 36 additions and 12 deletions

View File

@@ -462,7 +462,8 @@ class LocalFavoritesManager with ChangeNotifier {
/// add comic to a folder. /// add comic to a folder.
/// return true if success, false if already exists /// return true if success, false if already exists
bool addComic(String folder, FavoriteItem comic, [int? order]) { bool addComic(String folder, FavoriteItem comic,
[int? order, String? updateTime]) {
_modifiedAfterLastCache = true; _modifiedAfterLastCache = true;
if (!existsFolder(folder)) { if (!existsFolder(folder)) {
throw Exception("Folder does not exists"); throw Exception("Folder does not exists");
@@ -501,6 +502,18 @@ class LocalFavoritesManager with ChangeNotifier {
values (?, ?, ?, ?, ?, ?, ?, ?, ?); values (?, ?, ?, ?, ?, ?, ?, ?, ?);
""", [...params, minValue(folder) - 1]); """, [...params, minValue(folder) - 1]);
} }
if (updateTime != null) {
var columns = _db.select("""
pragma table_info("$folder");
""");
if (columns.any((element) => element["name"] == "last_update_time")) {
_db.execute("""
update "$folder"
set last_update_time = ?
where id == ? and type == ?;
""", [updateTime, comic.id, comic.type.value]);
}
}
notifyListeners(); notifyListeners();
return true; return true;
} }

View File

@@ -61,6 +61,7 @@ abstract mixin class _ComicPageActions {
update(); update();
}, },
favoriteItem: _toFavoriteItem(), favoriteItem: _toFavoriteItem(),
updateTime: comic.findUpdateTime(),
), ),
); );
} }
@@ -73,6 +74,8 @@ abstract mixin class _ComicPageActions {
LocalFavoritesManager().addComic( LocalFavoritesManager().addComic(
folder, folder,
_toFavoriteItem(), _toFavoriteItem(),
null,
comic.findUpdateTime(),
); );
isAddToLocalFav = true; isAddToLocalFav = true;
update(); update();

View File

@@ -7,6 +7,7 @@ class _FavoritePanel extends StatefulWidget {
required this.isFavorite, required this.isFavorite,
required this.onFavorite, required this.onFavorite,
required this.favoriteItem, required this.favoriteItem,
this.updateTime,
}); });
final String cid; final String cid;
@@ -22,6 +23,8 @@ class _FavoritePanel extends StatefulWidget {
final FavoriteItem favoriteItem; final FavoriteItem favoriteItem;
final String? updateTime;
@override @override
State<_FavoritePanel> createState() => _FavoritePanelState(); State<_FavoritePanel> createState() => _FavoritePanelState();
} }
@@ -164,14 +167,14 @@ class _FavoritePanelState extends State<_FavoritePanel>
onChanged: disabled onChanged: disabled
? null ? null
: (v) { : (v) {
setState(() { setState(() {
if (v!) { if (v!) {
selectedLocalFolders.add(folder); selectedLocalFolders.add(folder);
} else { } else {
selectedLocalFolders.remove(folder); selectedLocalFolders.remove(folder);
} }
}); });
}, },
); );
}, },
), ),
@@ -190,7 +193,12 @@ class _FavoritePanelState extends State<_FavoritePanel>
widget.onFavorite(false, null); widget.onFavorite(false, null);
} else { } else {
for (var folder in selectedLocalFolders) { for (var folder in selectedLocalFolders) {
LocalFavoritesManager().addComic(folder, widget.favoriteItem); LocalFavoritesManager().addComic(
folder,
widget.favoriteItem,
null,
widget.updateTime,
);
} }
widget.onFavorite(true, null); widget.onFavorite(true, null);
} }
@@ -396,7 +404,7 @@ class _NetworkFavoritesState extends State<_NetworkFavorites> {
isLoading = true; isLoading = true;
}); });
var res = var res =
await widget.comicSource.favoriteData!.addOrDelFavorite!( await widget.comicSource.favoriteData!.addOrDelFavorite!(
widget.cid, widget.cid,
selected!, selected!,
!addedFolders.contains(selected!), !addedFolders.contains(selected!),