diff --git a/lib/foundation/favorites.dart b/lib/foundation/favorites.dart index d4fee6f..f7ac7a4 100644 --- a/lib/foundation/favorites.dart +++ b/lib/foundation/favorites.dart @@ -797,7 +797,7 @@ class LocalFavoritesManager with ChangeNotifier { } } - void updateInfo(String folder, FavoriteItem comic) { + void updateInfo(String folder, FavoriteItem comic, [bool notify = true]) { _db.execute(""" update "$folder" set name = ?, author = ?, cover_path = ?, tags = ? @@ -810,7 +810,9 @@ class LocalFavoritesManager with ChangeNotifier { comic.id, comic.type.value ]); - notifyListeners(); + if (notify) { + notifyListeners(); + } } String folderToJson(String folder) { @@ -900,6 +902,18 @@ class LocalFavoritesManager with ChangeNotifier { ]); } + void updateCheckTime( + String folder, + String id, + ComicType type, + ) { + _db.execute(""" + update "$folder" + set last_check_time = ? + where id == ? and type == ?; + """, [DateTime.now().millisecondsSinceEpoch, id, type.value]); + } + int countUpdates(String folder) { return _db.select(""" select count(*) as c from "$folder" @@ -961,4 +975,8 @@ class LocalFavoritesManager with ChangeNotifier { void close() { _db.dispose(); } + + void notifyChanges() { + notifyListeners(); + } } diff --git a/lib/pages/follow_updates_page.dart b/lib/pages/follow_updates_page.dart index 23eb0dd..7b56868 100644 --- a/lib/pages/follow_updates_page.dart +++ b/lib/pages/follow_updates_page.dart @@ -603,7 +603,7 @@ void _updateFolderBase( tags: newTags, ); - LocalFavoritesManager().updateInfo(folder, item); + LocalFavoritesManager().updateInfo(folder, item, false); var updateTime = newInfo.findUpdateTime(); if (updateTime != null && updateTime != c.updateTime) { @@ -613,6 +613,8 @@ void _updateFolderBase( c.type, updateTime, ); + } else { + LocalFavoritesManager().updateCheckTime(folder, c.id, c.type); } updated++; return; @@ -639,6 +641,10 @@ void _updateFolderBase( await Future.wait(futures); + if (updated > 0) { + LocalFavoritesManager().notifyChanges(); + } + stream.close(); }