next-sanity
Version:
Sanity.io toolkit for Next.js
32 lines (31 loc) • 895 B
JavaScript
import { useRouter } from "next/navigation";
import { useEffect } from "react";
const focusThrottleInterval = 5e3;
function RefreshOnFocus() {
const router = useRouter();
useEffect(() => {
const controller = new AbortController();
let nextFocusRevalidatedAt = 0;
const callback = () => {
const now = Date.now();
if (now > nextFocusRevalidatedAt && document.visibilityState !== "hidden") {
router.refresh();
nextFocusRevalidatedAt = now + focusThrottleInterval;
}
};
const { signal } = controller;
document.addEventListener("visibilitychange", callback, {
passive: true,
signal
});
window.addEventListener("focus", callback, {
passive: true,
signal
});
return () => controller.abort();
}, [router]);
return null;
}
RefreshOnFocus.displayName = "RefreshOnFocus";
export { RefreshOnFocus as default };
//# sourceMappingURL=RefreshOnFocus.js.map