diff --git a/lib/foundation/local.dart b/lib/foundation/local.dart index be0efe0..c5f00b6 100644 --- a/lib/foundation/local.dart +++ b/lib/foundation/local.dart @@ -422,12 +422,30 @@ class LocalManager with ChangeNotifier { return files.map((e) => "file://${e.path}").toList(); } - bool isDownloaded(String id, ComicType type, [int? ep]) { + bool isDownloaded(String id, ComicType type, + [int? ep, ComicChapters? chapters]) { var comic = find(id, type); if (comic == null) return false; if (comic.chapters == null || ep == null) return true; + if (chapters != null) { + if (comic.chapters?.length != chapters.length) { + // update + add(LocalComic( + id: comic.id, + title: comic.title, + subtitle: comic.subtitle, + tags: comic.tags, + directory: comic.directory, + chapters: chapters, + cover: comic.cover, + comicType: comic.comicType, + downloadedChapters: comic.downloadedChapters, + createdAt: comic.createdAt, + )); + } + } return comic.downloadedChapters - .contains(comic.chapters!.ids.elementAt(ep - 1)); + .contains((chapters ?? comic.chapters)!.ids.elementAtOrNull(ep - 1)); } List downloadingTasks = []; diff --git a/lib/pages/local_comics_page.dart b/lib/pages/local_comics_page.dart index 409ed1f..2b45c63 100644 --- a/lib/pages/local_comics_page.dart +++ b/lib/pages/local_comics_page.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:venera/components/components.dart'; import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/appdata.dart'; +import 'package:venera/foundation/comic_type.dart'; import 'package:venera/foundation/local.dart'; import 'package:venera/foundation/log.dart'; import 'package:venera/pages/comic_details_page/comic_page.dart'; @@ -304,7 +305,9 @@ class _LocalComicsPageState extends State { } }); } else { - (c as LocalComic).read(); + // prevent dirty data + var comic = LocalManager().find(c.id, ComicType(c.sourceKey.hashCode))!; + comic.read(); } }, menuBuilder: (c) { diff --git a/lib/pages/reader/images.dart b/lib/pages/reader/images.dart index 43932c4..00018f1 100644 --- a/lib/pages/reader/images.dart +++ b/lib/pages/reader/images.dart @@ -26,7 +26,7 @@ class _ReaderImagesState extends State<_ReaderImages> { inProgress = true; if (reader.type == ComicType.local || (LocalManager() - .isDownloaded(reader.cid, reader.type, reader.chapter))) { + .isDownloaded(reader.cid, reader.type, reader.chapter, reader.widget.chapters))) { try { var images = await LocalManager() .getImages(reader.cid, reader.type, reader.chapter); diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index 057e78b..cb75c04 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -115,7 +115,7 @@ class _ReaderState extends State String get cid => widget.cid; - String get eid => widget.chapters?.ids.elementAt(chapter - 1) ?? '0'; + String get eid => widget.chapters?.ids.elementAtOrNull(chapter - 1) ?? '0'; List? images;