84 lines
No EOL
1.9 KiB
JavaScript
84 lines
No EOL
1.9 KiB
JavaScript
// ===============================
|
|
// 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; |