From 7f9bea00a479c0db5f7e1ba9999f34c8678afc82 Mon Sep 17 00:00:00 2001 From: glax Date: Mon, 8 Sep 2025 18:52:41 +0200 Subject: [PATCH] Fix BaseWorker unnecessary nesting of Tasks Fix MangaDex Oneshots have no Chapternumber --- API/MangaConnectors/MangaDex.cs | 2 +- API/Workers/BaseWorker.cs | 13 ++++++------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/API/MangaConnectors/MangaDex.cs b/API/MangaConnectors/MangaDex.cs index 47c30d5..01e0d88 100644 --- a/API/MangaConnectors/MangaDex.cs +++ b/API/MangaConnectors/MangaDex.cs @@ -324,7 +324,7 @@ public class MangaDex : MangaConnector { string? id = jToken.Value("id"); JToken? attributes = jToken["attributes"]; - string? chapterStr = attributes?.Value("chapter"); + string? chapterStr = attributes?.Value("chapter") ?? "0"; string? volumeStr = attributes?.Value("volume"); int? volumeNumber = null; string? title = attributes?.Value("title"); diff --git a/API/Workers/BaseWorker.cs b/API/Workers/BaseWorker.cs index b75d23b..58a2d5b 100644 --- a/API/Workers/BaseWorker.cs +++ b/API/Workers/BaseWorker.cs @@ -73,24 +73,23 @@ public abstract class BaseWorker : Identifiable { // Start the worker Log.Debug($"Checking {this}"); - this._cancellationTokenSource = new(TimeSpan.FromMinutes(10)); - this.State = WorkerExecutionState.Waiting; + _cancellationTokenSource = new(TimeSpan.FromMinutes(10)); + State = WorkerExecutionState.Waiting; // Wait for dependencies, start them if necessary BaseWorker[] missingDependenciesThatNeedStarting = MissingDependencies.Where(d => d.State < WorkerExecutionState.Waiting).ToArray(); if(missingDependenciesThatNeedStarting.Any()) - return new Task(() => missingDependenciesThatNeedStarting); + return new (() => missingDependenciesThatNeedStarting); if (MissingDependencies.Any()) - return new Task(WaitForDependencies); + return new (WaitForDependencies); // Run the actual work Log.Info($"Running {this}"); DateTime startTime = DateTime.UtcNow; - Task task = new Task(() => DoWorkInternal().Result); + State = WorkerExecutionState.Running; + Task task = DoWorkInternal(); task.GetAwaiter().OnCompleted(Finish(startTime, callback)); - this.State = WorkerExecutionState.Running; - task.Start(); return task; }