|
|
|
|
@ -206,8 +206,11 @@ class Conductor: ObservableObject { |
|
|
|
|
|
|
|
|
|
FileLogger.log("Cancel \(self._timerName(id))") |
|
|
|
|
CountdownScheduler.master.cancelCurrentNotifications(countdownId: id) |
|
|
|
|
self.currentCountdowns.removeValue(forKey: id) |
|
|
|
|
|
|
|
|
|
self.removeLiveTimer(id: id) |
|
|
|
|
self.cancelSoundPlayer(id: id) |
|
|
|
|
self.cancelledCountdowns.append(id) |
|
|
|
|
|
|
|
|
|
self._recordAndRemoveCountdown(countdownId: id, cancel: true) |
|
|
|
|
self.pausedCountdowns.removeValue(forKey: id) |
|
|
|
|
|
|
|
|
|
@ -497,6 +500,22 @@ class Conductor: ObservableObject { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
class func removeLiveActivities() { |
|
|
|
|
print("Ending Live Activities") |
|
|
|
|
let semaphore = DispatchSemaphore(value: 0) |
|
|
|
|
Task.detached(priority: .high) { |
|
|
|
|
print("Task") |
|
|
|
|
for activity in ActivityKit.Activity<LaunchWidgetAttributes>.activities { |
|
|
|
|
print("Ending Live Activity: \(activity.id)") |
|
|
|
|
if #available(iOS 16.2, *) { |
|
|
|
|
await activity.end(nil, dismissalPolicy: .immediate) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
semaphore.signal() |
|
|
|
|
} |
|
|
|
|
semaphore.wait() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fileprivate func _liveActivity(timerId: String) -> [ActivityKit.Activity<LaunchWidgetAttributes>] { |
|
|
|
|
return ActivityKit.Activity<LaunchWidgetAttributes>.activities.filter { $0.attributes.id == timerId } |
|
|
|
|
} |
|
|
|
|
|