// =============================== // state.js — Stato condiviso // =============================== // ---- STATO FOTO ---- let localPhotos = []; // ---- LAST SYNC ---- function getLastSync() { return localStorage.getItem("lastSync"); } function setLastSync(ts) { if (ts) localStorage.setItem("lastSync", ts); } // ---- FOTO: GET / SET ---- function getLocalPhotos() { return localPhotos; } function setLocalPhotos(photos) { localPhotos = Array.isArray(photos) ? photos : []; saveLocalState(); } // ---- FOTO: ADD / REMOVE ---- function addPhotoLocal(photo) { if (!photo || !photo.id) return; // Evita duplicati localPhotos = localPhotos.filter(p => p.id !== photo.id); // Aggiungi la versione nuova localPhotos.push(photo); saveLocalState(); } function removePhotoLocal(id) { const before = localPhotos.length; localPhotos = localPhotos.filter(p => p.id !== id); const after = localPhotos.length; console.log("[removePhotoLocal] id:", id, "prima:", before, "dopo:", after); saveLocalState(); } // ---- LOCAL STORAGE CACHE ---- function saveLocalState() { try { localStorage.setItem("photosCache", JSON.stringify(localPhotos)); } catch (e) { console.warn("saveLocalState error:", e); } } function loadLocalState() { try { const raw = localStorage.getItem("photosCache"); if (!raw) return []; const arr = JSON.parse(raw); if (Array.isArray(arr)) { // Filtra eventuali soft delete rimaste localPhotos = arr.filter(p => !p.deleted_at); return localPhotos; } } catch (e) { console.warn("loadLocalState error:", e); } return []; } // ---- EXPORT ---- window.getLastSync = getLastSync; window.setLastSync = setLastSync; window.getLocalPhotos = getLocalPhotos; window.setLocalPhotos = setLocalPhotos; window.addPhotoLocal = addPhotoLocal; window.removePhotoLocal = removePhotoLocal; window.saveLocalState = saveLocalState; window.loadLocalState = loadLocalState;