// App entry. Notification setup and APNs registration go through the WatchKit app delegate. import SwiftUI import WatchKit @main struct WristCodeApp: App { @WKApplicationDelegateAdaptor(AppDelegate.self) private var delegate @State private var model = AppModel.shared var body: some Scene { WindowGroup { RootView() .environment(model) } } } struct RootView: View { @Environment(AppModel.self) private var model var body: some View { @Bindable var model = model Group { if model.mode == .unpaired { PairView() } else { NavigationStack(path: $model.path) { FeedView() .navigationDestination(for: Route.self) { route in switch route { case let .thread(hostId, threadId): ThreadView(hostId: hostId, threadId: threadId) case .newThread: NewThreadView() } } } } } .fontDesign(.rounded) .tint(Theme.work) } } final class AppDelegate: NSObject, WKApplicationDelegate { func applicationDidFinishLaunching() { NotificationHandler.shared.install() Task { await AppModel.shared.enableNotifications() } } func didRegisterForRemoteNotifications(withDeviceToken deviceToken: Data) { AppModel.shared.didRegister(apnsToken: deviceToken) } func didFailToRegisterForRemoteNotificationsWithError(_ error: any Error) { print("APNs registration failed: \(error.localizedDescription)") } }