// ============================================================
// WXEntryActivity — 微信 OAuth 授权回调 Activity
//
// ── 作用 ─────────────────────────────────────────────────
// 微信 SDK 规范：用户在微信 App 完成授权后，微信会通过 Intent 唤起
// 宿主 App 中固定路径的 WXEntryActivity，将授权结果（code / errCode）
// 回传给宿主 App。
//
// ── 路径规范（必须严格遵守，否则微信无法回调）───────────────
// 包名路径: {applicationId}.wxapi.WXEntryActivity
// 本应用:   cn.gogenex.consumer.wxapi.WXEntryActivity
//
// 注意: applicationId 与 namespace 可能不同：
//   namespace    = "cn.gogenex.genex_consumer"（Kotlin 源码包名）
//   applicationId = "cn.gogenex.consumer"（build.gradle 中定义的 App ID）
// 微信按 applicationId 查找 WXEntryActivity，因此此文件放在
// cn/gogenex/consumer/wxapi/ 目录，package 声明也必须是 cn.gogenex.consumer.wxapi
//
// ── fluwx 5.x 集成方式（Relay 模式）─────────────────────
// fluwx 5.x 不再提供 WXEntryActivity 基类（旧包名 com.jarvanmo.fluwx
// 已改为 com.jarvan.fluwx，且基类已移除）。
//
// fluwx 5.x 的 FluwxPlugin 实现了 PluginRegistry.NewIntentListener，
// 通过 MainActivity.onNewIntent() 监听并处理微信回调 Intent。
//
// 因此此 Activity 采用「中继（relay）」模式：
//   1. 微信唤起 WXEntryActivity，传入携带授权结果的 Intent
//   2. WXEntryActivity 将 Intent extras 转发给 MainActivity
//   3. Flutter Engine 的 onNewIntent 触发 FluwxPlugin.onNewIntent()
//   4. FluwxPlugin 调用 WXAPiHandler 解析回调并通知 Dart 层
//
// ── AndroidManifest 配置要求 ──────────────────────────────
//   android:exported="true"     — 允许微信 App 从外部唤起
//   android:launchMode="singleTask" — 微信规范要求，防止多实例
//   android:taskAffinity="${applicationId}" — 确保在正确任务栈
//
// ── 调试常见问题 ──────────────────────────────────────────
// 1. 微信授权后 App 没有收到回调：
//    - 检查 applicationId 是否与微信开放平台填写的包名一致
//    - 检查签名 MD5 是否与开放平台填写的一致（debug/release 签名不同）
//    - debug 构建的 applicationId 为 cn.gogenex.consumer.debug，
//      开放平台通常只填 release 包名，需要单独添加 debug 包名
//    - 可安装「微信开放平台助手」App 验证签名是否正确
//
// 2. 获取 Android 签名 MD5 的方法：
//    keytool -exportcert -keystore release.jks -alias release \
//      -storepass <密码> | md5sum
//    输出的 32 位小写 hex 即为需要填写到微信开放平台的「应用签名」
// ============================================================

package cn.gogenex.consumer.wxapi

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import cn.gogenex.genex_consumer.MainActivity

/**
 * 微信回调中继 Activity。
 *
 * 微信 SDK 将授权结果 Intent 发到此 Activity，
 * 此处立即转发给 MainActivity，由 fluwx 5.x 的
 * FluwxPlugin（NewIntentListener）处理。
 */
class WXEntryActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 完整复制微信回调 Intent（含 action / data / extras），转发给 MainActivity
        // 使用 Intent(intent) 拷贝构造保留所有字段，再替换目标 Activity
        val relayIntent = Intent(intent).apply {
            setClass(this@WXEntryActivity, MainActivity::class.java)
            addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP)
        }
        startActivity(relayIntent)
        finish()
    }
}
