You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.3 KiB
50 lines
1.3 KiB
import { ref, nextTick, watch } from 'vue'
|
|
|
|
export const useLogout = () => {
|
|
const logout = ref(false)
|
|
const clickedNumberTotal = ref(0)
|
|
const timer = ref()
|
|
const MAX_NUMBER = 10
|
|
const DELAY_TIME = 10000
|
|
const SAFE_COORDINATES = 200
|
|
|
|
function resetClickNumber() {
|
|
clickedNumberTotal.value = 0
|
|
}
|
|
|
|
function setLogout(flag: boolean) {
|
|
logout.value = flag
|
|
}
|
|
|
|
//点击商场logo 达到最大次数显示退出框
|
|
function addTotalClick(e: TouchEvent) {
|
|
try {
|
|
const { clientX, clientY } = e.changedTouches[0]
|
|
const _clientX = parseInt(String(clientX), 10)
|
|
const _clientY = parseInt(String(clientY), 10)
|
|
if (_clientX >= 0 && _clientX <= SAFE_COORDINATES && _clientY >= 0 && _clientY <= SAFE_COORDINATES) {
|
|
clickedNumberTotal.value++
|
|
}
|
|
nextTick(() => {
|
|
if (clickedNumberTotal.value >= MAX_NUMBER) {
|
|
logout.value = true
|
|
resetClickNumber()
|
|
}
|
|
})
|
|
} catch (error) {
|
|
console.log(error)
|
|
}
|
|
}
|
|
|
|
watch(clickedNumberTotal, newVal => {
|
|
clearTimeout(timer.value)
|
|
timer.value = setTimeout(() => {
|
|
if (newVal !== 0) {
|
|
clearTimeout(timer.value)
|
|
resetClickNumber()
|
|
}
|
|
}, DELAY_TIME)
|
|
})
|
|
|
|
return { resetClickNumber, addTotalClick, setLogout, logout }
|
|
}
|
|
|