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
|
|
|
}
|