//
//  AppDelegate.swift
//  suixinkan
//
//  Created by Codex on 2026/6/26.
//

import UIKit

/// AppDelegate 承接 APNs 系统回调，SwiftUI App 入口通过 adaptor 注入。
final class AppDelegate: NSObject, UIApplicationDelegate {
    func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
    ) {
        Task { @MainActor in
            PushNotificationManager.shared.handleDeviceToken(deviceToken)
        }
    }

    func application(
        _ application: UIApplication,
        didFailToRegisterForRemoteNotificationsWithError error: Error
    ) {
        Task { @MainActor in
            PushNotificationManager.shared.handleRegistrationError(error)
        }
    }

    func application(
        _ application: UIApplication,
        didReceiveRemoteNotification userInfo: [AnyHashable: Any],
        fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
    ) {
        let payload = PushPayload(userInfo: userInfo)
        Task { @MainActor in
            PushNotificationManager.shared.handleRemoteNotification(payload)
            completionHandler(.newData)
        }
    }
}
