newsnow/src/hooks/useOnReload.ts

19 lines
496 B
TypeScript
Raw Normal View History

2024-10-19 13:15:29 +08:00
import { useBeforeUnload, useMount } from "react-use"
2024-09-30 01:51:28 +08:00
export function useOnReload(fn?: () => Promise<void> | void, fallback?: () => Promise<void> | void) {
useBeforeUnload(() => {
localStorage.setItem("quitTime", Date.now().toString())
return false
})
2024-10-19 13:15:29 +08:00
useMount(() => {
2024-09-30 01:51:28 +08:00
const _ = localStorage.getItem("quitTime")
const quitTime = _ ? Number(_) : 0
if (!Number.isNaN(quitTime) && Date.now() - quitTime < 1000) {
fn?.()
} else {
fallback?.()
}
2024-10-19 13:15:29 +08:00
})
2024-09-30 01:51:28 +08:00
}