Improve history with grouped chapters.

This commit is contained in:
2025-02-20 19:16:26 +08:00
parent 011619340f
commit a63d458707
7 changed files with 79 additions and 38 deletions

View File

@@ -286,8 +286,13 @@ class _GroupedComicChaptersState extends State<_GroupedComicChapters>
}
chapterIndex += chapters.getGroupByIndex(j).length;
}
bool visited =
(history?.readEpisode ?? {}).contains(chapterIndex + 1);
String rawIndex = (chapterIndex + 1).toString();
String groupedIndex = "${index + 1}-${i + 1}";
bool visited = false;
if (history != null) {
visited = history!.readEpisode.contains(groupedIndex) ||
history!.readEpisode.contains(rawIndex);
}
return Padding(
padding: const EdgeInsets.fromLTRB(6, 4, 6, 4),
child: Material(

View File

@@ -167,6 +167,7 @@ class _ComicPageState extends LoadingState<ComicPage, ComicDetails>
chapters: localComic.chapters,
initialPage: history?.page,
initialChapter: history?.ep,
initialChapterGroup: history?.group,
history: history ??
History.fromModel(
model: localComic,
@@ -383,11 +384,19 @@ class _ComicPageState extends LoadingState<ComicPage, ComicDetails>
bool haveChapter = comic.chapters != null;
var page = history!.page;
var ep = history!.ep;
var group = history!.group;
String text;
if (haveChapter) {
var epName = group == null
? comic.chapters!.titles.elementAt(
math.min(ep - 1, comic.chapters!.length - 1),
)
: comic.chapters!
.getGroupByIndex(group - 1)
.values
.elementAt(ep - 1);
text = "Last Reading: @epName Page @page".tlParams({
'epName': comic.chapters!.titles.elementAt(
math.min(ep - 1, comic.chapters!.length - 1)),
'epName': epName,
'page': page,
});
} else {