@@ -396,45 +396,48 @@ class OverridePresetsViewModel: ObservableObject {
396396 }
397397 }
398398
399- func activateOverride( preset: OverridePreset , duration: TimeInterval ? ) {
400- isActivating = true
399+ func activateOverride( preset: OverridePreset , duration: TimeInterval ? ) async {
400+ await MainActor . run {
401+ isActivating = true
402+ }
401403
402- sendOverrideNotification ( preset: preset, duration: duration) { success, errorMessage in
403- DispatchQueue . main. async {
404+ do {
405+ try await sendOverrideNotification ( preset: preset, duration: duration)
406+ await MainActor . run {
404407 self . isActivating = false
405- if success {
406- self . statusMessage = " \( preset. name) override activated successfully. "
407- self . alertType = . statusSuccess
408- } else {
409- self . statusMessage = errorMessage ?? " Failed to activate override. "
410- self . alertType = . statusFailure
411- }
408+ self . statusMessage = " \( preset. name) override activated successfully. "
409+ self . alertType = . statusSuccess
410+ self . showAlert = true
411+ }
412+ } catch {
413+ await MainActor . run {
414+ self . isActivating = false
415+ self . statusMessage = " Failed to activate override: \( error. localizedDescription) "
416+ self . alertType = . statusFailure
412417 self . showAlert = true
413418 }
414419 }
415420 }
416421
417- func cancelOverride( ) {
418- isActivating = true
422+ func cancelOverride( ) async {
423+ await MainActor . run {
424+ isActivating = true
425+ }
419426
420- sendCancelOverrideNotification { success, errorMessage in
421- DispatchQueue . main. async {
427+ do {
428+ try await sendCancelOverrideNotification ( )
429+ await MainActor . run {
422430 self . isActivating = false
423- if success {
424- self . statusMessage = " Active override cancelled successfully. "
425- self . alertType = . statusSuccess
426- } else {
427- self . statusMessage = errorMessage ?? " Failed to cancel override. "
428- self . alertType = . statusFailure
429- }
431+ self . statusMessage = " Active override cancelled successfully. "
432+ self . alertType = . statusSuccess
430433 self . showAlert = true
431434 }
432435 } catch {
433436 await MainActor . run {
437+ self . isActivating = false
434438 self . statusMessage = " Failed to cancel override: \( error. localizedDescription) "
435439 self . alertType = . statusFailure
436440 self . showAlert = true
437- self . isActivating = false
438441 }
439442 }
440443 }
@@ -462,18 +465,33 @@ class OverridePresetsViewModel: ObservableObject {
462465 }
463466 }
464467
465- private func sendOverrideNotification( preset: OverridePreset , duration: TimeInterval ? , completion: @escaping ( Bool , String ? ) -> Void ) {
466- let apnsService = LoopAPNSService ( )
467- apnsService. sendOverrideNotification (
468- presetName: preset. name,
469- duration: duration,
470- completion: completion
471- )
468+ private func sendOverrideNotification( preset: OverridePreset , duration: TimeInterval ? ) async throws {
469+ return try await withCheckedThrowingContinuation { continuation in
470+ let apnsService = LoopAPNSService ( )
471+ apnsService. sendOverrideNotification (
472+ presetName: preset. name,
473+ duration: duration
474+ ) { success, errorMessage in
475+ if success {
476+ continuation. resume ( )
477+ } else {
478+ continuation. resume ( throwing: NSError ( domain: " OverrideError " , code: 0 , userInfo: [ NSLocalizedDescriptionKey: errorMessage ?? " Unknown error " ] ) )
479+ }
480+ }
481+ }
472482 }
473483
474- private func sendCancelOverrideNotification( completion: @escaping ( Bool , String ? ) -> Void ) {
475- let apnsService = LoopAPNSService ( )
476- apnsService. sendCancelOverrideNotification ( completion: completion)
484+ private func sendCancelOverrideNotification( ) async throws {
485+ return try await withCheckedThrowingContinuation { continuation in
486+ let apnsService = LoopAPNSService ( )
487+ apnsService. sendCancelOverrideNotification { success, errorMessage in
488+ if success {
489+ continuation. resume ( )
490+ } else {
491+ continuation. resume ( throwing: NSError ( domain: " OverrideError " , code: 0 , userInfo: [ NSLocalizedDescriptionKey: errorMessage ?? " Unknown error " ] ) )
492+ }
493+ }
494+ }
477495 }
478496}
479497
0 commit comments