Files
web/packages/common/hooks/usePopStateHandler.ts
2025-10-09 11:34:58 +00:00

33 lines
610 B
TypeScript

"use client"
import { useEffect, useRef } from "react"
const callbacks = new Set<() => void>()
if (typeof window !== "undefined") {
window.addEventListener("popstate", () => {
callbacks.forEach((callback) => callback())
})
}
export default function usePopStateHandler(
callback: () => void,
enabled = true
) {
const callbackRef = useRef(callback)
callbackRef.current = callback
useEffect(() => {
if (!enabled) {
return
}
const handler = () => callbackRef.current()
callbacks.add(handler)
return () => {
callbacks.delete(handler)
}
}, [enabled])
}