package com.base.pdfreaderallpdfreader.helper

import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.base.pdfreaderallpdfreader.BuildConfig
import com.base.pdfreaderallpdfreader.fcm.PopupConstObject.timerDelay
import com.base.pdfreaderallpdfreader.fcm.PopupConstObject.timerInterval
import com.base.pdfreaderallpdfreader.fcm.PopupConstObject.timerS
import com.base.pdfreaderallpdfreader.fcm.TimerManager
import com.base.pdfreaderallpdfreader.utils.AppPreferences
import com.base.pdfreaderallpdfreader.utils.LogEx
import org.json.JSONObject

/**
 * call before agree
 */
object InstallHelps {

    private val TAG = "InstallHelps"

    fun init() {

        val referrerClient = InstallReferrerClient.newBuilder(MyApplication.context).build()
        referrerClient.startConnection(object : InstallReferrerStateListener {
            override fun onInstallReferrerSetupFinished(responseCode: Int) {
                try {
                    when (responseCode) {
                        InstallReferrerClient.InstallReferrerResponse.OK -> {
                            val response = referrerClient.installReferrer
                            val installInfo = response.installReferrer
                            val obj = JSONObject()
                            obj.put("referrerUrl", response.installReferrer)
                            obj.put("referrerClickTime", response.referrerClickTimestampSeconds)
                            obj.put("appInstallTime", response.installBeginTimestampSeconds)
                            obj.put("instantExperienceLaunched", installInfo.toString())
                            EventUtils.event("install_referrer", ext = obj, isSingleEvent = true)
                            LogEx.logDebug(TAG, "referrerUrl=${response.installReferrer}")
                            AppPreferences.getInstance().put("referrerUrl", response.installReferrer)
                            if (listOf(
                                    "gclid",
                                    "facebook",
                                    "instagram"
                                ).all { !installInfo.contains(it, true) }
                            ) {
                                //自然用户
                                if (BuildConfig.DEBUG) {
                                    AppPreferences.getInstance().put("install_source", "channel")
                                } else {
                                    AppPreferences.getInstance().put("install_source", "origin")
                                }
                            } else {
                                //渠道用户
                                AppPreferences.getInstance().put("install_source", "channel")
                            }
                            requestCfg()
                        }

                        else -> {
                            EventUtils.event("install_referrer_error")
                            requestCfg()
                        }
                    }
                } catch (_: Exception) {
                    EventUtils.event("install_referrer_error")
                    requestCfg()
                }

            }

            override fun onInstallReferrerServiceDisconnected() {
            }
        })
    }


    private fun requestCfg() {
        NewComUtils.requestCfg {

            val timerStatus: Int = AppPreferences.getInstance().getString(timerS, "1").toIntOrNull() ?: 1
            if (timerStatus == 0) {
                TimerManager.getInstance().stopTaskTimer()
            } else {
                val timerDelay: Int = AppPreferences.getInstance().getString(timerDelay, "1").toIntOrNull() ?: 1
                val timerInterval: Int = AppPreferences.getInstance().getString(timerInterval, "1").toIntOrNull() ?: 1
                if (!TimerManager.getInstance().isTaskTimerActive) {
                    TimerManager.getInstance().scheduleTask(
                        (timerDelay * 60 * 1000).toLong(),
                        (timerInterval * 60 * 1000).toLong()
                    )
                }
            }
        }
    }
}