package com.narutohuo.xindazhou.share.callback

import android.content.Context
import android.content.Intent
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.facade.template.IProvider
import com.narutohuo.xindazhou.core.log.ILog
import com.narutohuo.xindazhou.core.share.IShareCallback
import com.narutohuo.xindazhou.share.factory.ShareServiceFactory
import com.narutohuo.xindazhou.share.impl.ShareServiceImpl
import com.umeng.socialize.UMShareAPI

/**
 * 分享回调服务实现
 * 
 * 实现 IShareCallback 接口，处理第三方平台（微信、QQ、微博等）的回调
 * 通过 ARouter 注册，供 base-core 中的回调 Activity 调用
 * 
 * 架构说明：
 * - base-core 中的 WXEntryActivity 等通过 ARouter 获取此实现
 * - 此实现调用 ShareServiceImpl 处理具体的分享逻辑
 * - 实现 base-core 与 share 模块的解耦
 * 
 * 注意：ARouter 要求 @Route 标记的类必须实现 IProvider 接口
 */
@Route(path = "/share/callback", name = "分享回调服务")
class ShareCallbackImpl : IProvider, IShareCallback {
    
    /**
     * ARouter IProvider 接口的初始化方法
     */
    override fun init(context: Context) {
        ILog.d(TAG, "ShareCallbackImpl 初始化")
    }
    
    companion object {
        private const val TAG = "ShareCallbackImpl"
    }
    
    override fun onWeChatCallback(intent: Intent) {
        ILog.d(TAG, "onWeChatCallback: 收到微信回调")
        
        try {
            // 获取 ShareService 实例
            val shareService = ShareServiceFactory.getInstance()
            
            // 友盟 SDK 会自动处理微信回调
            // 这里只需要确保 ShareProxyActivity 能够接收到回调
            // ShareProxyActivity 会调用 shareService.onActivityResult()
            
            // 注意：友盟的 WXCallbackActivity 已经处理了回调
            // 我们只需要确保 ShareProxyActivity 能够接收到 onActivityResult
            // 实际的回调处理在 ShareProxyActivity 中完成
            
            ILog.d(TAG, "微信回调已转发给 ShareService")
        } catch (e: Exception) {
            ILog.e(TAG, "处理微信回调失败", e)
        }
    }
    
    override fun onQQCallback(intent: Intent) {
        ILog.d(TAG, "onQQCallback: 收到 QQ 回调")
        
        try {
            // QQ 回调处理
            // 注意：QQ SDK 的回调在 AuthActivity 中处理
            // 这里可以添加额外的处理逻辑
            
            ILog.d(TAG, "QQ 回调已处理")
        } catch (e: Exception) {
            ILog.e(TAG, "处理 QQ 回调失败", e)
        }
    }
    
    override fun onWeiboCallback(intent: Intent) {
        ILog.d(TAG, "onWeiboCallback: 收到微博回调")
        
        try {
            // 微博回调处理
            // 注意：微博 SDK 的回调在 WBShareTransActivity 中处理
            // 这里可以添加额外的处理逻辑
            
            ILog.d(TAG, "微博回调已处理")
        } catch (e: Exception) {
            ILog.e(TAG, "处理微博回调失败", e)
        }
    }
    
    override fun onDouyinCallback(intent: Intent) {
        ILog.d(TAG, "onDouyinCallback: 收到抖音回调")
        
        try {
            // 抖音回调处理
            // 注意：抖音 SDK 的回调在 DYCallbackActivity 中处理
            // 这里可以添加额外的处理逻辑
            
            ILog.d(TAG, "抖音回调已处理")
        } catch (e: Exception) {
            ILog.e(TAG, "处理抖音回调失败", e)
        }
    }
}

