package com.simplecleaner.app.business.ads.admob

import android.content.Context
import androidx.annotation.LayoutRes
import com.google.android.gms.ads.nativead.NativeAd
import com.simplecleaner.app.business.ads.NativeParentView
import com.simplecleaner.app.utils.LogEx

/**
 * 原生广告加载显示管理类 - 重构版本
 * 
 * 使用新的组件化架构：
 * - NativeAdManager: 主要管理类
 * - NativeAdCache: 缓存管理
 * - NativeAdLoader: 广告加载
 * - NativeAdRenderer: 广告渲染
 * - NativeAdConfig: 配置管理
 */
class AdNativeMgr {

    private val TAG = "AdNativeMgr"
    
    // 使用新的管理器
    private val nativeAdManager = NativeAdManager()

    /**
     * 加载原生广告
     * @param context 上下文
     * @param admobEvent 广告事件
     * @param showAction 展示回调
     */
    fun loadAd(
        context: Context,
        admobEvent: AdmobEvent,
        showAction: ((ad: NativeAd) -> Unit)? = null
    ) {
        LogEx.logDebug(TAG, "Loading native ad")
        nativeAdManager.loadAd(context, admobEvent, showAction)
    }

    /**
     * 展示原生广告
     * @param admobEvent 广告事件
     * @param parent 父视图
     * @param layout 布局资源ID
     * @param nativeCallBack 回调
     */
    fun show(
        admobEvent: AdmobEvent,
        parent: NativeParentView,
        @LayoutRes layout: Int,
        nativeCallBack: ((Any?) -> Unit)? = null
    ) {
        LogEx.logDebug(TAG, "Showing native ad")
        nativeAdManager.show(admobEvent, parent, layout, nativeCallBack)
    }

    /**
     * 预加载广告
     * @param context 上下文
     */
    fun preloadAd(context: Context) {
        LogEx.logDebug(TAG, "Preloading native ad")
        nativeAdManager.preloadAd(context)
    }

    /**
     * 清空缓存
     */
    fun clearCache() {
        LogEx.logDebug(TAG, "Clearing native ad cache")
        nativeAdManager.clearCache()
    }

    /**
     * 获取缓存统计信息
     */
    fun getCacheStats(): NativeAdCache.CacheStats {
        return nativeAdManager.getCacheStats()
    }

    /**
     * 检查是否有可用广告
     */
    fun hasAvailableAd(): Boolean {
        return nativeAdManager.hasAvailableAd()
    }

    /**
     * 获取缓存大小
     */
    fun getCacheSize(): Int {
        return nativeAdManager.getCacheSize()
    }

    // 兼容性方法 - 保持向后兼容
    @Deprecated("Use hasAvailableAd() instead", ReplaceWith("hasAvailableAd()"))
    private fun adAvailable(): Boolean {
        return hasAvailableAd()
    }
}
