import SwiftUI

// cdrop iOS 客户端入口（arch A，见 ios/PLAN.md）。原生 SwiftUI 界面（液态玻璃）+ 离屏
// 无头 WKWebView 跑复用的传输引擎，二者经 EngineController 桥接；登录走扫码（AuthManager）。
@main
struct CDropApp: App
{
    @UIApplicationDelegateAdaptor(AppDelegate.self) private var appDelegate
    @State private var auth = AuthManager()
    @State private var engine = EngineController()

    var body: some Scene
    {
        WindowGroup
        {
            AppRoot(auth: auth, engine: engine)
        }
    }
}

// 登录门：有会话进主界面（引擎以该会话启动），无会话进扫码登录。
struct AppRoot: View
{
    let auth: AuthManager
    let engine: EngineController

    var body: some View
    {
        Group
        {
            if auth.session != nil
            {
                RootView()
                    .environment(engine)
                    .environment(auth)
            }
            else
            {
                LoginView()
                    .environment(auth)
            }
        }
        .onAppear
        {
            engine.auth = auth
            if ProcessInfo.processInfo.environment["CDROP_DEBUG_SESSION"] == "1"
            {
                auth.debugSession()
            }
        }
        // Share Extension 深链：cdrop://share 唤起 → 导入收件箱待发文件（RootView 据此弹选设备）。
        // 放在 AppRoot 以便登录 / 未登录任一界面都接得到；未登录时文件留收件箱，登录后 onAppear 补扫。
        .onOpenURL
        { url in
            guard url.scheme == "cdrop", url.host == "share" else { return }
            engine.loadPendingShares()
        }
    }
}
