package com.narutohuo.xindazhou.share.model

import android.content.Context
import android.content.res.Resources

/**
 * 分享服务配置
 * 
 * 用于配置友盟分享和各平台参数
 * 支持从资源文件读取默认配置，也支持自定义配置
 */
data class ShareConfig(
    /**
     * 友盟 AppKey（可选，默认从资源文件读取）
     */
    val umengAppKey: String? = null,
    
    /**
     * 友盟渠道（可选，默认为 "developer-default"）
     */
    val umengChannel: String = "developer-default",
    
    /**
     * 微信平台配置（可选）
     */
    val weChatConfig: WeChatConfig? = null,
    
    /**
     * QQ平台配置（可选）
     */
    val qqConfig: QQConfig? = null,
    
    /**
     * 微博平台配置（可选）
     */
    val weiboConfig: WeiboConfig? = null
) {
    companion object {
        /**
         * 从资源文件读取配置
         * 
         * 需要在 strings.xml 中定义以下资源：
         * - share_umeng_app_key
         * - share_umeng_channel (可选，默认为 "developer-default")
         * - share_wechat_app_id (可选)
         * - share_wechat_app_secret (可选)
         * - share_qq_app_id (可选)
         * - share_qq_app_key (可选)
         * - share_weibo_app_key (可选)
         * - share_weibo_app_secret (可选)
         * - share_weibo_redirect_url (可选)
         */
        @JvmStatic
        fun fromResources(context: Context): ShareConfig {
            val resources = context.resources
            val packageName = context.packageName
            
            fun getStringResource(name: String): String? {
                return try {
                    val resId = resources.getIdentifier(name, "string", packageName)
                    if (resId != 0) resources.getString(resId) else null
                } catch (e: Exception) {
                    null
                }
            }
            
            val umengAppKey = getStringResource("share_umeng_app_key")
            val umengChannel = getStringResource("share_umeng_channel") ?: "developer-default"
            
            val weChatAppId = getStringResource("share_wechat_app_id")
            val weChatAppSecret = getStringResource("share_wechat_app_secret")
            val weChatConfig = if (weChatAppId != null && weChatAppSecret != null) {
                WeChatConfig(appId = weChatAppId, appSecret = weChatAppSecret)
            } else null
            
            val qqAppId = getStringResource("share_qq_app_id")
            val qqAppKey = getStringResource("share_qq_app_key")
            val qqConfig = if (qqAppId != null && qqAppKey != null) {
                QQConfig(appId = qqAppId, appKey = qqAppKey)
            } else null
            
            val weiboAppKey = getStringResource("share_weibo_app_key")
            val weiboAppSecret = getStringResource("share_weibo_app_secret")
            val weiboRedirectUrl = getStringResource("share_weibo_redirect_url")
            val weiboConfig = if (weiboAppKey != null && weiboAppSecret != null && weiboRedirectUrl != null) {
                WeiboConfig(appKey = weiboAppKey, appSecret = weiboAppSecret, redirectUrl = weiboRedirectUrl)
            } else null
            
            return ShareConfig(
                umengAppKey = umengAppKey,
                umengChannel = umengChannel,
                weChatConfig = weChatConfig,
                qqConfig = qqConfig,
                weiboConfig = weiboConfig
            )
        }
    }
}

/**
 * 微信平台配置
 */
data class WeChatConfig(
    /**
     * 微信 AppID
     */
    val appId: String,
    
    /**
     * 微信 AppSecret
     */
    val appSecret: String
)

/**
 * QQ平台配置
 */
data class QQConfig(
    /**
     * QQ AppID
     */
    val appId: String,
    
    /**
     * QQ AppKey
     */
    val appKey: String
)

/**
 * 微博平台配置
 */
data class WeiboConfig(
    /**
     * 微博 AppKey
     */
    val appKey: String,
    
    /**
     * 微博 AppSecret
     */
    val appSecret: String,
    
    /**
     * 微博回调地址
     */
    val redirectUrl: String
)
