package com.base.scanqr.ads
import android.app.Activity
import android.app.Dialog
import java.lang.ref.WeakReference


class AdState<T>() {

    var adDialog: Dialog? = null


    /**
     * 当前缓存的广告
     */
    var currentAd: T? = null

    /**
     * 是否正在缓存加载广告
     */
    var loadingAd: Boolean = false


    /**
     * 是否正在显示广告
     */
    var showingAd: Boolean = false

    /**
     * 用于保存引用现有页面，在此页面显示广告(因为要等待广告加载完毕)
     */
    var activityRef: WeakReference<Activity>? = null

    /**
     * 上一次的缓存成功时间
     */
    var lastLoadTime: Long = 0

    /**
     * 上次展示时间
     */
    var lastShowTime: Long = 0

    fun onAdDisplayed() {
        showingAd = true

        adDialog?.dismiss()
        adDialog = null

        lastShowTime = System.currentTimeMillis()

        currentAd = null
        activityRef = null
    }

    fun onAdHidden() {
        // 广告关闭，清空缓存数据，重新加载
        showingAd = false
    }

    fun onAdDisplayFailed() {
        adDialog?.dismiss()
        adDialog = null

        showingAd = false
        currentAd = null
        activityRef = null
    }

    fun onAdLoaded(ad: T?) {
        //这里可能提前设置,所有可以不设置,max回调的类型可能不同
        if (ad != null) {
            currentAd = ad
        }
        loadingAd = false
        lastLoadTime = System.currentTimeMillis()
    }

    fun onAdLoadFailed() {
        adDialog?.dismiss()
        adDialog = null
        loadingAd = false

    }

}
