//
//  BrowserHandler.swift
//  ylgamehall
//
//  H5 → Native handler：browser — 用系统 Safari 打开 URL
//  契约：docs/H5-Native-Contract.md §3.1 ［16］
//

import UIKit

@MainActor
public enum BrowserHandler {

    public static func register(on bridge: any BridgeProtocol) {
        // 【16】browser
        //   入参 data: string（URL，需 URL 编码后传给 UIApplication.openURL）
        //   cb："browser"
        bridge.register("browser") { data, callback in
            defer { callback?(.string("browser")) }
            guard let urlStr = data?.asString,
                  let url = URL(string: urlStr) ?? URL(string: urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "")
            else {
                return
            }
            // UIApplication.open 在 iOS 15+ 是 async；用 Task 异步打开但不
            // await 返回值（H5 已经 cb 完成，不需要等 open 完成）
            Task { @MainActor in
                _ = await UIApplication.shared.open(url)
            }
        }
    }
}
