photo_server_json_con_aves22/public/js/api.js
2026-04-18 20:14:42 +02:00

66 lines
1.9 KiB
JavaScript

window.AppConfig = window.AppConfig || { ready: false };
// ===============================================
// WAIT FOR CONFIG
// ===============================================
function waitForConfig() {
return new Promise(resolve => {
if (!window.AppConfig) {
window.AppConfig = { ready: false };
}
if (window.AppConfig.ready) {
return resolve();
}
window.addEventListener("config:ready", resolve, { once: true });
});
}
// ===============================================
// API WRAPPER
// ===============================================
async function apiGet(url) {
const token = localStorage.getItem("token");
const res = await fetch(url, {
headers: { "Authorization": "Bearer " + token }
});
const text = await res.text();
try {
return JSON.parse(text);
} catch {
console.error("❌ Risposta non JSON:", text);
throw new Error("Risposta non valida dal server");
}
}
// ===============================================
// GET ALL PHOTOS (FULL LOAD)
// ===============================================
async function getAllPhotos(user) {
await waitForConfig();
return apiGet(`/photos?user=${encodeURIComponent(user)}`);
}
// ===============================================
// GET PHOTO BY ID
// ===============================================
async function getPhotoById(id) {
await waitForConfig();
const payload = parseJwt(localStorage.getItem("token"));
const user = payload?.name || "Common";
return apiGet(`/photos/byIds?id=${encodeURIComponent(id)}&user=${encodeURIComponent(user)}`);
}
// ===============================================
// GET CHANGES (INCREMENTAL SYNC)
// ===============================================
async function getChanges(since, user) {
await waitForConfig();
return apiGet(`/photos/changes?since=${encodeURIComponent(since)}&user=${encodeURIComponent(user)}`);
}