API mission
This commit is contained in:
@@ -173,7 +173,7 @@
|
||||
};
|
||||
}
|
||||
|
||||
function loadStore() {
|
||||
function loadStoreLocal() {
|
||||
try {
|
||||
const raw = localStorage.getItem(STORAGE_KEY);
|
||||
if (!raw) return;
|
||||
@@ -186,11 +186,49 @@
|
||||
ensureDefaultGroups();
|
||||
}
|
||||
|
||||
async function loadStoreFromBackend() {
|
||||
try {
|
||||
const res = await fetch("/api/missions");
|
||||
if (!res.ok) return false;
|
||||
const data = await res.json();
|
||||
if (Array.isArray(data.missions)) store.missions = data.missions;
|
||||
if (Array.isArray(data.groups)) store.groups = data.groups;
|
||||
ensureDefaultGroups();
|
||||
localStorage.setItem(
|
||||
STORAGE_KEY,
|
||||
JSON.stringify({ missions: store.missions, groups: store.groups })
|
||||
);
|
||||
return true;
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
let persistTimer = null;
|
||||
|
||||
async function syncStoreToBackend() {
|
||||
try {
|
||||
await fetch("/api/missions", {
|
||||
method: "PUT",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ missions: store.missions, groups: store.groups }),
|
||||
});
|
||||
} catch {
|
||||
/* ignore */
|
||||
}
|
||||
}
|
||||
|
||||
function loadStore() {
|
||||
loadStoreLocal();
|
||||
}
|
||||
|
||||
function persistStore() {
|
||||
localStorage.setItem(
|
||||
STORAGE_KEY,
|
||||
JSON.stringify({ missions: store.missions, groups: store.groups })
|
||||
);
|
||||
clearTimeout(persistTimer);
|
||||
persistTimer = setTimeout(syncStoreToBackend, 400);
|
||||
}
|
||||
|
||||
function ensureDefaultGroups() {
|
||||
@@ -1253,8 +1291,9 @@
|
||||
el("missionQueueForm")?.addEventListener("submit", submitQueueDialog);
|
||||
}
|
||||
|
||||
function init() {
|
||||
async function init() {
|
||||
loadStore();
|
||||
await loadStoreFromBackend();
|
||||
bindEvents();
|
||||
renderMissionList();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user