From e0a8301595673f2efc1db4729b7fcedab93c839d Mon Sep 17 00:00:00 2001 From: NBA2K1 <78034913+NBA2K1@users.noreply.github.com> Date: Sat, 9 May 2026 00:34:14 +0200 Subject: [PATCH] Use downloadedChapterIdsProvider instead Use the already-existing downloadedChapterIdsProvider and do a simple Set.contains() lookup instead of the synchronous Isar query. Performance improvement --- .../widgets/library_listview_widget.dart | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/lib/modules/library/widgets/library_listview_widget.dart b/lib/modules/library/widgets/library_listview_widget.dart index f7e557f7..006df9b9 100644 --- a/lib/modules/library/widgets/library_listview_widget.dart +++ b/lib/modules/library/widgets/library_listview_widget.dart @@ -1,9 +1,7 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:isar_community/isar.dart'; -import 'package:mangayomi/main.dart'; -import 'package:mangayomi/models/download.dart'; +import 'package:mangayomi/modules/library/providers/library_filter_provider.dart'; import 'package:mangayomi/modules/library/providers/isar_providers.dart'; import 'package:mangayomi/modules/library/providers/library_state_provider.dart'; import 'package:mangayomi/models/manga.dart'; @@ -205,23 +203,24 @@ class LibraryListViewWidget extends StatelessWidget { ), child: Consumer( builder: (context, ref, child) { - final chapterIds = entry.chapters - .toList() - .map((c) => c.id) - .whereType() - .toList(); - List nbrDown = chapterIds.isNotEmpty - ? isar.downloads - .filter() - .anyOf( - chapterIds, - (q, id) => - q.idEqualTo(id), - ) - .isDownloadEqualTo(true) - .findAllSync() - : []; - if (nbrDown.isNotEmpty) { + final downloadedIds = + ref + .watch( + downloadedChapterIdsProvider, + ) + .asData + ?.value ?? + const {}; + final nbrDown = entry.chapters + .where( + (c) => + c.id != null && + downloadedIds.contains( + c.id, + ), + ) + .length; + if (nbrDown > 0) { return Container( decoration: BoxDecoration( borderRadius: @@ -242,7 +241,7 @@ class LibraryListViewWidget extends StatelessWidget { right: 3, ), child: Text( - nbrDown.length.toString(), + nbrDown.toString(), style: const TextStyle( color: Colors.white, ),