From 8183b324a09da2f03d41f4b9a24794338c0db205 Mon Sep 17 00:00:00 2001 From: Flaminel Date: Sat, 28 Mar 2026 00:25:49 +0200 Subject: [PATCH] Fix Seeker being scheduled when disabled (#523) --- .../Controllers/SeekerConfigController.cs | 18 ++++++++++++++++-- .../Jobs/BackgroundJobManager.cs | 5 ++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/code/backend/Cleanuparr.Api/Features/Seeker/Controllers/SeekerConfigController.cs b/code/backend/Cleanuparr.Api/Features/Seeker/Controllers/SeekerConfigController.cs index 562c8e28..d79544a2 100644 --- a/code/backend/Cleanuparr.Api/Features/Seeker/Controllers/SeekerConfigController.cs +++ b/code/backend/Cleanuparr.Api/Features/Seeker/Controllers/SeekerConfigController.cs @@ -140,8 +140,22 @@ public sealed class SeekerConfigController : ControllerBase await _dataContext.SaveChangesAsync(); - // Update Quartz trigger if SearchInterval changed - if (config.SearchInterval != previousInterval) + // Start/stop Seeker based on SearchEnabled toggle + if (config.SearchEnabled != previousSearchEnabled) + { + if (config.SearchEnabled) + { + _logger.LogInformation("SearchEnabled turned on, starting Seeker job"); + await _jobManagementService.StartJob(JobType.Seeker, null, config.ToCronExpression()); + } + else + { + _logger.LogInformation("SearchEnabled turned off, stopping Seeker job"); + await _jobManagementService.StopJob(JobType.Seeker); + } + } + // Update Quartz trigger if SearchInterval changed (only while search is enabled) + else if (config.SearchEnabled && config.SearchInterval != previousInterval) { _logger.LogInformation("Search interval changed from {Old} to {New} minutes, updating Seeker schedule", previousInterval, config.SearchInterval); diff --git a/code/backend/Cleanuparr.Api/Jobs/BackgroundJobManager.cs b/code/backend/Cleanuparr.Api/Jobs/BackgroundJobManager.cs index 7e3cdbef..da0b55df 100644 --- a/code/backend/Cleanuparr.Api/Jobs/BackgroundJobManager.cs +++ b/code/backend/Cleanuparr.Api/Jobs/BackgroundJobManager.cs @@ -185,7 +185,10 @@ public class BackgroundJobManager : IHostedService public async Task RegisterSeekerJob(SeekerConfig config, CancellationToken cancellationToken = default) { await AddJobWithoutTrigger(cancellationToken); - await AddTriggersForJob(config.ToCronExpression(), cancellationToken); + if (config.SearchEnabled) + { + await AddTriggersForJob(config.ToCronExpression(), cancellationToken); + } } ///