Auto-refresh: 5min pagina corrente + 2min lista spesa bg

- Intervallo pagina corrente: 5 minuti (era 10) -> dashboard, inventario,
  scadenze aperte, ricette, log si aggiornano automaticamente
- Intervallo lista spesa: 2 minuti in background anche se non sei sulla
  pagina Shopping -> badge/contatore aggiornato, e se sei sulla pagina
  Shopping vedi i nuovi prodotti aggiunti da Bring! da un altro device
- refreshCurrentPage() ora copre anche 'recipe' e 'log'
- visibilitychange: refresh immediato su qualsiasi pagina (già presente)
This commit is contained in:
dadaloop82
2026-04-09 05:07:16 +00:00
parent 7f0d4d817b
commit f86059cdcd
+22 -11
View File
@@ -942,6 +942,9 @@ function refreshCurrentPage() {
case 'inventory': loadInventory(); break; case 'inventory': loadInventory(); break;
case 'shopping': loadShoppingList(); break; case 'shopping': loadShoppingList(); break;
case 'products': loadAllProducts(); break; case 'products': loadAllProducts(); break;
case 'recipe': loadRecipeArchive(); break;
case 'log': loadLog(); break;
// scan/ai/settings/chat: nessun dato live da ricaricare
} }
} }
@@ -8620,20 +8623,28 @@ document.addEventListener('DOMContentLoaded', () => {
initScreensaverShortcuts(); initScreensaverShortcuts();
startBgShoppingRefresh(); startBgShoppingRefresh();
// ── Auto-refresh dati ogni 10 minuti ────────────────────────────────── // ── Auto-refresh dati ─────────────────────────────────────────────────
// Garantisce che scadenze e contatori si aggiornino anche senza toccare // 1) Ogni 5 minuti: ricarica la pagina corrente (scadenze, inventario, ecc.)
// la schermata (es. pagina aperta tutta la notte).
const DATA_REFRESH_INTERVAL = 10 * 60 * 1000; // 10 minuti
setInterval(() => { setInterval(() => {
if (!_screensaverActive) { if (!_screensaverActive) refreshCurrentPage();
refreshCurrentPage(); }, 5 * 60 * 1000);
// 2) Ogni 2 minuti: aggiorna lista spesa in background (anche se non sei
// sulla pagina Shopping), così i prodotti aggiunti da un altro dispositivo
// su Bring! appaiono subito quando torni sulla schermata.
setInterval(() => {
if (_screensaverActive) return;
if (_currentPageId === 'shopping') {
loadShoppingList(); // già visibile → aggiorna tutto
} else {
// Aggiorna solo il badge/contatore senza cambiare pagina
loadShoppingCount();
} }
}, DATA_REFRESH_INTERVAL); }, 2 * 60 * 1000);
// Aggiorna anche quando la tab torna visibile dopo essere stata in background
// 3) Aggiorna immediatamente quando la tab torna visibile (es. torni da Bring! app)
document.addEventListener('visibilitychange', () => { document.addEventListener('visibilitychange', () => {
if (!document.hidden) { if (!document.hidden) refreshCurrentPage();
refreshCurrentPage();
}
}); });
// ───────────────────────────────────────────────────────────────────── // ─────────────────────────────────────────────────────────────────────