/**
 * 隐藏式退出应用 Hook
 * @param max 最大点击次数
 * @returns 退出函数
 */
export function useConcealedExit(max = 10) {
    const maxTapCount = max
    const count = ref(0)

    let loop: NodeJS.Timeout

    // 隐藏退出功能计数
    function exit() {
        // #ifdef APP-PLUS
        count.value++
        // #endif
    }

    // 退出或过期时清理计数
    function reset() {
        count.value = 0
        if (loop) {
            clearTimeout(loop)
            loop = null
        }
    }

    // #ifdef APP-PLUS
    watch(
        () => count.value,
        () => {
            if (count.value >= maxTapCount - 3) {
                Message.toast(`再点击 ${maxTapCount - count.value} 次将退出应用`)

                // 达到最大点击次数时退出
                if (count.value >= maxTapCount) {
                    reset()
                    plus.runtime.quit()
                }
            }

            if (!loop && count.value > 0) {
                // 15 秒内未点击则清空计数
                loop = setTimeout(reset, 15 * 1000)
            }
        },
    )
    // #endif

    return {
        exit,
        reset,
    }
}
