fix: harden download workflows

This commit is contained in:
nimbold
2026-06-04 15:41:38 +03:30
parent 0040c23050
commit 0cbb982f5b
18 changed files with 283 additions and 62 deletions
+12 -3
View File
@@ -35,7 +35,7 @@ struct SchedulerSettings: Codable, Equatable {
var isEveryday: Bool = true
var selectedDays: Set<SchedulerDay> = Set(SchedulerDay.allCases)
var postQueueAction: PostQueueAction = .doNothing
var targetQueueIDs: Set<UUID> = []
var targetQueueIDs: Set<UUID> = [DownloadQueue.mainQueueID]
}
@MainActor
@@ -62,6 +62,9 @@ final class SchedulerController: ObservableObject {
} else {
self.settings = SchedulerSettings()
}
if self.settings.targetQueueIDs.isEmpty {
self.settings.targetQueueIDs = [DownloadQueue.mainQueueID]
}
checkAutomationPermission()
startTimer()
@@ -131,7 +134,8 @@ final class SchedulerController: ObservableObject {
}
private func triggerQueues() {
let runnableQueueIDs = settings.targetQueueIDs.filter { queueID in
let targetQueueIDs = effectiveTargetQueueIDs()
let runnableQueueIDs = targetQueueIDs.filter { queueID in
downloadController.queues.contains(where: { $0.id == queueID }) &&
downloadController.queueItems(for: queueID).contains(where: { $0.status == .queued })
}
@@ -150,7 +154,8 @@ final class SchedulerController: ObservableObject {
private func checkIfRunningFinished() {
guard isRunning else { return }
let hasActiveItems = settings.targetQueueIDs.contains { queueID in
let targetQueueIDs = effectiveTargetQueueIDs()
let hasActiveItems = targetQueueIDs.contains { queueID in
downloadController.queueItems(for: queueID).contains {
$0.status == .queued || $0.status == .downloading
}
@@ -162,6 +167,10 @@ final class SchedulerController: ObservableObject {
}
}
private func effectiveTargetQueueIDs() -> Set<UUID> {
settings.targetQueueIDs.isEmpty ? [DownloadQueue.mainQueueID] : settings.targetQueueIDs
}
private func performPostAction() {
guard settings.postQueueAction != .doNothing else { return }