Files
OSGKeyboard/OSGKeyboard/Services/FlowTerminationCoordinator.swift
T
Rocky dcb66a9849 feat: sync force-quit Flow teardown and polish macOS local ASR UX
End Live Activities and release the audio session synchronously on
applicationWillTerminate, and continue macOS local-model install,
onboarding, and settings polish on this branch.
2026-07-09 17:13:07 +08:00

25 lines
928 B
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// FlowTerminationCoordinator.swift
// OSGKeyboard · Main App
//
// 桥接 `UIApplicationDelegate.applicationWillTerminate` 与 `FlowSessionManager`。
// SwiftUI 里 `FlowSessionManager` 是 `@StateObject`AppDelegate 无法直接持有;
// 此处用弱引用在进程退出窗口(约 5 秒)内同步释放麦克风与 Live Activity。
import Foundation
@MainActor
enum FlowTerminationCoordinator {
private static weak var sessionManager: FlowSessionManager?
/// `FlowSessionManager.init()` 注册当前实例。
static func register(_ manager: FlowSessionManager) {
sessionManager = manager
}
/// 强杀 / 系统终止时调用。必须在主线程执行(`applicationWillTerminate` 保证)。
static func performSynchronousTerminationCleanup() {
sessionManager?.prepareForProcessTermination()
FlowLiveActivityController.endAllSynchronouslyOnTerminate()
}
}