package com.narutohuo.xindazhou.wxapi

import android.content.Intent
import android.os.Bundle
import com.alibaba.android.arouter.facade.annotation.Autowired
import com.alibaba.android.arouter.launcher.ARouter
import com.narutohuo.xindazhou.core.log.ILog
import com.narutohuo.xindazhou.core.share.IShareCallback
import com.umeng.socialize.weixin.view.WXCallbackActivity

/**
 * 微信分享回调 Activity
 * 
 * 按照友盟官方文档，需要创建此 Activity 处理微信分享回调
 * 
 * 注意：
 * - 包名必须是应用包名（com.narutohuo.xindazhou.wxapi），不能是模块 namespace
 * - 微信 SDK 要求此 Activity 必须在应用包名的 wxapi 子包下
 * - 虽然文件在 base-core 模块中，但包名使用应用包名，这样 Android 清单合并后能正确识别
 * 
 * 架构说明：
 * - 使用 ARouter 依赖注入获取 IShareCallback 接口实现
 * - share 模块实现 IShareCallback 接口并通过 ARouter 注册
 * - base-core 不直接依赖 share 模块，实现解耦
 * 
 * 工作原理：
 * 1. 用户在微信中完成分享操作后，微信会通过 Intent 回调到此 Activity
 * 2. 友盟的 WXCallbackActivity 会自动处理回调，并触发友盟 SDK 的回调
 * 3. 通过 ARouter 获取 IShareCallback 实现，调用 share 模块的处理方法
 * 4. share 模块处理完成后，通过 ShareProxyActivity 的回调传递给业务层
 */
class WXEntryActivity : WXCallbackActivity() {
    
    /**
     * 通过 ARouter 依赖注入获取分享回调服务
     * 
     * 注意：share 模块需要实现 IShareCallback 接口并通过 @Route 注册
     */
    @Autowired(name = "/share/callback")
    @JvmField
    var shareCallback: IShareCallback? = null
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        
        // ARouter 依赖注入
        ARouter.getInstance().inject(this)
        
        ILog.d("WXEntryActivity", "onCreate: 收到微信回调")
        
        // 调用 share 模块处理回调
        shareCallback?.let {
            ILog.d("WXEntryActivity", "通过 ARouter 获取到 IShareCallback 实现，调用 onWeChatCallback")
            it.onWeChatCallback(intent)
        } ?: run {
            ILog.e("WXEntryActivity", "未找到 IShareCallback 实现，请确保 share 模块已注册")
        }
    }
    
    override fun onNewIntent(intent: Intent?) {
        super.onNewIntent(intent)
        ILog.d("WXEntryActivity", "onNewIntent: 收到新的微信回调 Intent")
        
        // 调用 share 模块处理回调
        intent?.let {
            shareCallback?.onWeChatCallback(it)
        }
    }
}

