"use client"; import { useEffect, useRef, useState } from "react"; export function UpdateChecker() { const [hasUpdate, setHasUpdate] = useState(false); const currentVersionRef = useRef(null); useEffect(() => { if (process.env.NODE_ENV !== "production") return; let intervalId; const fetchVersion = async () => { const res = await fetch(`/version.json?t=${Date.now()}`, { cache: "no-store", }); if (!res.ok) { throw new Error(`Failed to fetch version: ${res.status}`); } const data = await res.json(); return String(data.version); }; const init = async () => { try { currentVersionRef.current = await fetchVersion(); intervalId = setInterval(async () => { try { const latestVersion = await fetchVersion(); if ( currentVersionRef.current && latestVersion !== currentVersionRef.current ) { setHasUpdate(true); clearInterval(intervalId); } } catch (err) { console.error("Update check failed:", err); } }, 30000); } catch (err) { console.error("Initial version fetch failed:", err); } }; init(); return () => { if (intervalId) clearInterval(intervalId); }; }, []); if (!hasUpdate) return null; return (
window.location.reload()} > نسخه جدید سامانه در دسترس است
); }