From 4facf34f447c5682dbbdcab47cb6fead36e7483c Mon Sep 17 00:00:00 2001 From: kodjomoustapha <107993382+kodjodevf@users.noreply.github.com> Date: Thu, 12 Sep 2024 16:53:57 +0100 Subject: [PATCH] fix cancel all in download queue --- .../download_queue/download_queue_screen.dart | 48 +++++++++++-------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/lib/modules/more/download_queue/download_queue_screen.dart b/lib/modules/more/download_queue/download_queue_screen.dart index 77529fb..c5ec40f 100644 --- a/lib/modules/more/download_queue/download_queue_screen.dart +++ b/lib/modules/more/download_queue/download_queue_screen.dart @@ -55,7 +55,8 @@ class DownloadQueueScreen extends ConsumerWidget { ), body: GroupedListView( elements: entries, - groupBy: (element) => element.chapter.value!.manga.value!.source!, + groupBy: (element) => + element.chapter.value?.manga.value?.source ?? "", groupSeparatorBuilder: (String groupByValue) { final sourceQueueLength = entries .where((element) => @@ -150,8 +151,12 @@ class DownloadQueueScreen extends ConsumerWidget { } else if (value.toString() == 'CancelAll') { final chapterIds = entries .where((e) => - e.chapter.value!.name == - element.chapter.value!.name) + e.chapter.value!.manga.value!.name == + element.chapter.value!.manga.value! + .name && + e.chapter.value!.manga.value!.source == + element.chapter.value!.manga.value! + .source) .map((e) => e.chapterId) .toList(); for (var chapterId in chapterIds) { @@ -165,21 +170,24 @@ class DownloadQueueScreen extends ConsumerWidget { []; await FileDownloader() .cancelTasksWithIds(taskIds); - await Future.delayed( - const Duration(milliseconds: 300)); - final chapterD = isar.downloads - .filter() - .chapterIdEqualTo(chapterId) - .findFirstSync(); - if (chapterD != null) { - final verifyId = - isar.downloads.getSync(chapterD.id!); - isar.writeTxnSync(() { - if (verifyId != null) { - isar.downloads.deleteSync(chapterD.id!); + Future.delayed(const Duration(seconds: 2)).then( + (value) { + final chapterD = isar.downloads + .filter() + .chapterIdEqualTo(chapterId) + .findFirstSync(); + if (chapterD != null) { + final verifyId = + isar.downloads.getSync(chapterD.id!); + isar.writeTxnSync(() { + if (verifyId != null) { + isar.downloads + .deleteSync(chapterD.id!); + } + }); } - }); - } + }, + ); } } }, @@ -196,9 +204,9 @@ class DownloadQueueScreen extends ConsumerWidget { ), ); }, - itemComparator: (item1, item2) => item1 - .chapter.value!.manga.value!.source! - .compareTo(item2.chapter.value!.manga.value!.source!), + itemComparator: (item1, item2) => + (item1.chapter.value?.manga.value?.source ?? "").compareTo( + item2.chapter.value?.manga.value?.source ?? ""), order: GroupedListOrder.DESC, ), );