Skip to content

Commit 146d318

Browse files
committed
Fix merge conflict for error handling and overrides
1 parent fbfa4c0 commit 146d318

3 files changed

Lines changed: 52 additions & 35 deletions

File tree

‎LoopFollow/Remote/LoopAPNS/LoopAPNSService.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ class LoopAPNSService {
220220
private func getEnvironmentGuidance() -> String {
221221
let currentSetting = storage.productionEnvironment.value ? "ON" : "OFF"
222222
let trySetting = storage.productionEnvironment.value ? "OFF" : "ON"
223-
223+
224224
return "Try changing Production Environment from \(currentSetting) to \(trySetting) in your Loop APNS settings."
225225
}
226226

‎LoopFollow/Remote/LoopAPNS/OverridePresetsView.swift‎

Lines changed: 51 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

‎LoopFollow/Remote/TRC/PushNotificationManager.swift‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,5 +325,4 @@ class PushNotificationManager {
325325
let urlString = "https://\(host)/3/device/\(deviceToken)"
326326
return URL(string: urlString)
327327
}
328-
329328
}

0 commit comments

Comments
 (0)