package com.base.locationsharewhite.fcm

import android.content.Context
import android.os.Handler
import android.os.HandlerThread
import com.base.locationsharewhite.fcm.PopupConstObject.popupConfigBean
import com.base.locationsharewhite.helper.MyApplication
import com.base.locationsharewhite.utils.LogEx

object NotificationHoverUtils {

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

    /**
     * 发送悬停通知
     */
    fun sendHoverNotification(context: Context, where: String = "") {

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

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

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

        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 {
                    LogEx.logDebug(TAG, "handler send notification")
                    NotificationUiUtil.setActionNotification(context, NotificationUiUtil.hoverActionId, where)
                }
            }, time)
        }
    }

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