package com.base.appzxhy.push.notification

import android.os.Handler
import android.os.HandlerThread
import com.base.appzxhy.MyApplication
import com.base.appzxhy.bean.push.NotificationSendBean
import com.base.appzxhy.bean.config.PopupConfigBean.Companion.popupConfigBean

/**
 * 通知悬停
 */
object NotificationHoverUtils {

    private val TAG = "NotificationHoverUtils"
    private var handlerThread: HandlerThread? = null
    private var handler: Handler? = null

    /**
     * 发送悬停通知
     */
    fun sendHoverNotification(sendBean: NotificationSendBean) {

        val hoverStatus = popupConfigBean.popupHoverStatus
        val hoverCount = popupConfigBean.popupHoverCount
        val hoverDelay = popupConfigBean.popupHoverDelay.toLong()
        if (!hoverStatus) return
        stopNotificationHandler()

        if (handlerThread == null) {
            handlerThread = HandlerThread("NotificationHandlerThread")
            handlerThread?.start()
        }

        // 创建 Handler
        if (handler == null) {
            handlerThread?.let {
                val looper = it.getLooper() ?: return
                handler = Handler(looper)
            }
        }

        for (i in 1..hoverCount) {
            val time = i * hoverDelay
            handler?.postDelayed(Runnable {
//                LogEx.logDebug(TAG, "handler ${MyApplication.PAUSED_VALUE}")
                if (MyApplication.PAUSED_VALUE == 1) {
                    handler?.removeCallbacksAndMessages(null)
                } else {
                    NotificationUiUtil.sendCustomNotification(sendBean)
                }
            }, time)
        }
    }

    private fun stopNotificationHandler() {
        // 停止 HandlerThread
        if (handler != null) {
            handler?.removeCallbacksAndMessages(null)
        }
        if (handlerThread != null) {
            handlerThread?.quit()
            handlerThread = null
        }
        handler = null
    }
}