mtcute/packages/web/src/exit-hook.ts

25 lines
485 B
TypeScript
Raw Normal View History

const callbacks = new Set<() => void>()
let registered = false
export function beforeExit(fn: () => void): () => void {
2024-03-04 06:32:54 +03:00
if (typeof window === 'undefined') {
return () => {}
}
if (!registered) {
registered = true
window.addEventListener('beforeunload', () => {
for (const callback of callbacks) {
callback()
}
})
}
callbacks.add(fn)
return () => {
callbacks.delete(fn)
}
}