package app.dudu.wechat

import kotlinx.coroutines.delay

/** 微信授权抽象：拉起微信，回传 OpenSDK 的 auth code。 */
interface WechatAuth {
    /** @return 微信授权 code（用于 POST /v1/auth/wechat 换 JWT） */
    suspend fun requestCode(): String
}

/**
 * Mock 实现：直接返回假 code。dev server 未配置微信凭证时走 mock 微信，
 * 任意 code 都会建号并签发 JWT，因此登录链路可端到端联调。
 *
 * TODO(wechat-sdk): 用户拿到 2A 凭证（AppID）后替换为微信 OpenSDK 实现：
 *  1. 依赖 com.tencent.mm.opensdk:wechat-sdk-android
 *  2. WXAPIFactory.createWXAPI(context, APP_ID).sendReq(SendAuth.Req().apply {
 *         scope = "snsapi_userinfo"; state = "dudu_login"
 *     })
 *  3. 新建 wxapi/WXEntryActivity，在 onResp 中取 SendAuth.Resp.code 回传
 *     （suspendCancellableCoroutine 桥接回调）
 */
class MockWechatAuth : WechatAuth {
    override suspend fun requestCode(): String {
        delay(400) // 模拟拉起微信授权页往返
        return "mock-code-" + System.currentTimeMillis()
    }
}

/** 装配点：换真实 SDK 时只改这一行。 */
val wechatAuth: WechatAuth = MockWechatAuth()
