// ====================================================== // API CORE REQUEST // ====================================================== async function apiRequest(method, path, body = null) { if (!Admin.BASE_URL) { console.error("BASE_URL non ancora inizializzato"); throw new Error("BASE_URL non inizializzato"); } const options = { method, headers: { "Authorization": "Bearer " + Admin.token, "Content-Type": "application/json" } }; if (body) { options.body = JSON.stringify(body); } const res = await fetch(`${Admin.BASE_URL}${path}`, options); if (!res.ok) { const text = await res.text(); throw new Error(`Errore API ${res.status}: ${text}`); } return res.json(); } // ====================================================== // API GET // ====================================================== function apiGet(path) { return apiRequest("GET", path); } // ====================================================== // API POST // ====================================================== function apiPost(path, body = null) { return apiRequest("POST", path, body); } // ====================================================== // API DELETE // ====================================================== function apiDelete(path) { return apiRequest("DELETE", path); } // ====================================================== // UTILITY: LEGGI DATA/ORA DAL CAMPO SINCE // ====================================================== function getSinceISO() { const el = document.getElementById("sinceInput"); if (!el || !el.value) return null; return new Date(el.value).toISOString(); } // ====================================================== // GET DB CHANGES (solo modifiche nel DB) // ====================================================== async function getDBChanges(since, user) { return apiGet(`/photos/changes?since=${encodeURIComponent(since)}&user=${encodeURIComponent(user)}`); } // ====================================================== // GET HARD DELETED (solo hard delete) // ====================================================== async function getHardDeleted(since, user) { return apiGet(`/photos/deleted_hard?since=${encodeURIComponent(since)}&user=${encodeURIComponent(user)}`); }