import { ref,onBeforeMount} from "vue";
/**
 *  倒计时
 *  @param {Number} second 倒计时秒数
 *  @return {Number} count 倒计时秒数
 *  @return {Function} countDown 倒计时函数
 *  @example
 *  const { count, countDown } = useCountDown()
 *  countDown(60)
 * <div>{{ count }}</div>
 */

export function useCountDown() {
    const count = ref(0)
    const timer = ref(null);
    const countDown = (second = 60, ck = () => { }) => {
        if (count.value === 0 && timer.value === null) {
            ck();
            count.value = second;
            timer.value = setInterval(() => {
                count.value--
                if (count.value === 0) {
                    clearInterval(timer.value)
                    timer.value = null
                }
            }, 1000);
        }
    };
    const cancelCout=()=>{
        clearInterval(timer.value)
        timer.value = null
        count.value = 0
    }
    onBeforeMount(() => {
        timer.value && clearInterval(timer.value)
    });

    return {
        count,
        countDown,
        cancelCout
    };
}
