// 微信授权抽象（14B）：登录流只依赖"拿到 OpenSDK code"这一步，SDK 可整体替换。
// TODO(wechat-sdk): 等 2A 微信开放平台凭证（AppID + Universal Link）就绪后，
// 新增 WechatOpenSDKAuth 实现：WXApi.registerApp → sendReq(SendAuthReq) →
// onResp 回调取 code；并在 Info.plist 配置 LSApplicationQueriesSchemes: [weixin]。
import Foundation

protocol WechatAuthing {
    /// 拉起微信授权，返回换 token 用的 code（POST /v1/auth/wechat 的 body.code）
    func requestCode() async throws -> String
}

/// 开发期 mock：返回假 code。配合后端开发模式（mock 微信网关）或离线 MockApi 走通登录流。
struct MockWechatAuth: WechatAuthing {
    func requestCode() async throws -> String {
        // 模拟拉起微信再回跳的耗时
        try await Task.sleep(nanoseconds: 600_000_000)
        return "mock-code-ios-" + UUID().uuidString.prefix(8)
    }
}
