fix(m9): clear printTask without defer for Swift 5.7 (#113) #114

Merged
gronod merged 1 commits from feat/113-printtask-defer-swift57 into milestone/m9-monterey 2026-09-12 09:01:39 +01:00
@@ -110,7 +110,8 @@ final class PrintSessionViewModel: ObservableObject {
isPrinting = true isPrinting = true
let task = Task { @MainActor [weak self] in let task = Task { @MainActor [weak self] in
guard let self else { return } guard let self else { return }
defer { self.printTask = nil } // `defer` cannot mutate isolated state under Swift 5.7
// (Xcode 14.2 / macOS 12 runner), so clear explicitly (#113).
var printed = 0 var printed = 0
for page in result.pages { for page in result.pages {
do { do {
@@ -123,6 +124,7 @@ final class PrintSessionViewModel: ObservableObject {
+ error.localizedDescription + error.localizedDescription
) )
isPrinting = false isPrinting = false
self.printTask = nil
return return
} }
} }
@@ -132,6 +134,7 @@ final class PrintSessionViewModel: ObservableObject {
autoHideAfter: nil autoHideAfter: nil
) )
isPrinting = false isPrinting = false
self.printTask = nil
} }
printTask = task printTask = task
} }
@@ -141,7 +144,6 @@ final class PrintSessionViewModel: ObservableObject {
isPrinting = true isPrinting = true
let task = Task { @MainActor [weak self] in let task = Task { @MainActor [weak self] in
guard let self else { return } guard let self else { return }
defer { self.printTask = nil }
do { do {
try await spool(page, index: page.index, pageSize: pageSize) try await spool(page, index: page.index, pageSize: pageSize)
printNotice = Notice( printNotice = Notice(
@@ -156,6 +158,7 @@ final class PrintSessionViewModel: ObservableObject {
) )
} }
isPrinting = false isPrinting = false
self.printTask = nil
} }
printTask = task printTask = task
} }