2025-12-05 16:36:17 +01:00
|
|
|
"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) {
|
2026-02-24 15:18:59 +01:00
|
|
|
//console.log("Stale resource cookie detected");
|
2025-12-05 16:36:17 +01:00
|
|
|
// 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();
|
|
|
|
|
}
|
|
|
|
|
}
|