'use client' import { useState, useEffect, useCallback } from 'react' import { RefreshCw, Download } from 'lucide-react' const CHECK_INTERVAL = 60_000 // check every 60s export function UpdateBanner() { const [updateAvailable, setUpdateAvailable] = useState(false) const [initialVersion, setInitialVersion] = useState(null) const [updating, setUpdating] = useState(false) const checkVersion = useCallback(async () => { try { const res = await fetch('/api/version', { cache: 'no-store' }) const { version } = await res.json() if (!version) return if (initialVersion === null) { setInitialVersion(version) } else if (version !== initialVersion) { setUpdateAvailable(true) } } catch { // network error, skip } }, [initialVersion]) useEffect(() => { checkVersion() const id = setInterval(checkVersion, CHECK_INTERVAL) return () => clearInterval(id) }, [checkVersion]) // Also check on visibility change (user returns to tab) useEffect(() => { const onVisible = () => { if (document.visibilityState === 'visible') checkVersion() } document.addEventListener('visibilitychange', onVisible) return () => document.removeEventListener('visibilitychange', onVisible) }, [checkVersion]) if (!updateAvailable) return null const handleUpdate = () => { setUpdating(true) window.location.reload() } return (

Update Available

A new version of Jefflix has been deployed

) }