infoalloggi-monorepo/apps/infoalloggi/src/hooks/staleImage.ts

50 lines
1.2 KiB
TypeScript

"use client";
import { deleteCookie } from "cookies-next";
import { useEffect } from "react";
const STALE_KEY = "stale-resource";
const RELOAD_STORAGE_KEY = "stale-img-reload";
const RELOAD_COOLDOWN_MS = 10 * 1000;
export const useStaleImageReload = () => {
useEffect(() => {
// Check for stale resource cookie
const checkStaleCookie = () => {
const hasStale = document.cookie.includes(`${STALE_KEY}=1`);
if (hasStale) {
//console.log("Stale resource cookie detected");
// Clear the cookie
deleteCookie(STALE_KEY);
attemptReload();
}
};
// Check on mount
checkStaleCookie();
// Also check periodically for dynamically loaded images
const interval = setInterval(checkStaleCookie, 1000);
return () => clearInterval(interval);
}, []);
};
function attemptReload() {
const lastAttempt = sessionStorage.getItem(RELOAD_STORAGE_KEY);
const now = Date.now();
if (!lastAttempt) {
sessionStorage.setItem(RELOAD_STORAGE_KEY, now.toString());
window.location.reload();
return;
}
const timeSinceLastAttempt = now - parseInt(lastAttempt, 10);
if (timeSinceLastAttempt > RELOAD_COOLDOWN_MS) {
sessionStorage.setItem(RELOAD_STORAGE_KEY, now.toString());
window.location.reload();
}
}