From 8e2f9ebbe52260c71e265ffea98ab5676d26f127 Mon Sep 17 00:00:00 2001 From: glax Date: Sun, 21 Sep 2025 17:09:38 +0200 Subject: [PATCH] WhileDownloading also refresh after all downloads are finished --- API/Tranga.cs | 26 ++++++++++--------- ...DownloadChapterFromMangaconnectorWorker.cs | 7 +++-- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/API/Tranga.cs b/API/Tranga.cs index de6563f..f9561c9 100644 --- a/API/Tranga.cs +++ b/API/Tranga.cs @@ -146,25 +146,27 @@ public static class Tranga private static Action DefaultAfterWork(BaseWorker worker, Action? callback = null) => () => { Log.Debug($"DefaultAfterWork {worker}"); - if (RunningWorkers.TryGetValue(worker, out Task? task)) + try { - Log.Debug($"Waiting for Children to exit {worker}"); - task.Wait(); - if (task.IsCompleted) + if (RunningWorkers.TryGetValue(worker, out Task? task)) { - try + Log.Debug($"Waiting for Children to exit {worker}"); + task.Wait(); + if (task.IsCompleted) { + Log.Debug($"Children done {worker}"); BaseWorker[] newWorkers = task.Result; Log.Debug($"{worker} created {newWorkers.Length} new Workers."); AddWorkers(newWorkers); - } - catch (Exception e) - { - Log.Error(e); - } - }else Log.Warn($"Children failed: {worker}"); + }else + Log.Warn($"Children failed: {worker}"); + } + RunningWorkers.Remove(worker, out _); + } + catch (Exception e) + { + Log.Error(e); } - RunningWorkers.Remove(worker, out _); callback?.Invoke(); }; diff --git a/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs b/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs index 2ab6ab2..f80214f 100644 --- a/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs +++ b/API/Workers/MangaDownloadWorkers/DownloadChapterFromMangaconnectorWorker.cs @@ -139,18 +139,21 @@ public class DownloadChapterFromMangaconnectorWorker(MangaConnectorId c Log.Debug($"Downloaded chapter {chapter}."); bool refreshLibrary = await CheckLibraryRefresh(); + if(refreshLibrary) + Log.Info($"Condition {Tranga.Settings.LibraryRefreshSetting} met."); return refreshLibrary? [new RefreshLibrariesWorker()] : []; } private async Task CheckLibraryRefresh() => Tranga.Settings.LibraryRefreshSetting switch { - LibraryRefreshSetting.AfterAllFinished => (await StartNewChapterDownloadsWorker.GetMissingChapters(DbContext, CancellationToken)).Count == 0, + LibraryRefreshSetting.AfterAllFinished => await AllDownloadsFinished(), LibraryRefreshSetting.AfterMangaFinished => await DbContext.MangaConnectorToChapter.Include(chId => chId.Obj).Where(chId => chId.UseForDownload).AllAsync(chId => chId.Obj.Downloaded, CancellationToken), LibraryRefreshSetting.AfterEveryChapter => true, - LibraryRefreshSetting.WhileDownloading => DateTime.UtcNow.Subtract(RefreshLibrariesWorker.LastRefresh).TotalMinutes > Tranga.Settings.RefreshLibraryWhileDownloadingEveryMinutes, + LibraryRefreshSetting.WhileDownloading => await AllDownloadsFinished() || DateTime.UtcNow.Subtract(RefreshLibrariesWorker.LastRefresh).TotalMinutes > Tranga.Settings.RefreshLibraryWhileDownloadingEveryMinutes, _ => true }; + private async Task AllDownloadsFinished() => (await StartNewChapterDownloadsWorker.GetMissingChapters(DbContext, CancellationToken)).Count == 0; private void ProcessImage(string imagePath) {