// src/components/IndicadorActualizacion.jsx // Indicador (arriba-derecha) con la hora de la última actualización + botón de // recarga. Al pulsar: re-lee las bases para la vista actual y recachea el resto. import { useState, useEffect, useCallback } from "react"; import { api } from "../lib/api"; import { getVistaActual, emitirRefresco } from "../lib/vistaActual"; function formatearHora(iso) { if (!iso) return "—"; try { const d = new Date(iso); return d.toLocaleString("es-PE", { day: "2-digit", month: "2-digit", hour: "2-digit", minute: "2-digit", }); } catch { return "—"; } } export default function IndicadorActualizacion() { const [hora, setHora] = useState(null); const [cargando, setCargando] = useState(false); const consultar = useCallback(async () => { try { const r = await api.ultimaActualizacion(); setHora(r?.hora || null); } catch { /* silencioso */ } }, []); useEffect(() => { consultar(); const id = setInterval(consultar, 60000); return () => clearInterval(id); }, [consultar]); async function recargar() { if (cargando) return; setCargando(true); try { const r = await api.cacheRefreshManual(getVistaActual()); setHora(r?.hora || null); emitirRefresco(); } catch { /* silencioso */ } finally { setCargando(false); } } return ( <>