fix status and roadmap

This commit is contained in:
larssand
2026-09-08 17:26:55 +02:00
parent 9e6fe2386d
commit 443434d569
14 changed files with 401 additions and 8 deletions

View File

@@ -158,6 +158,7 @@ export async function hydrateFromBackendHelper({ backend, t, getBackendUrl, appl
applyPersistedState(payload.state);
saveState({ skipBackend: true });
backend.lastSyncAt = payload.updatedAt || new Date().toISOString();
backend.lastLoadedAt = new Date().toISOString();
}
backend.available = true;
backend.lastError = "";
@@ -173,6 +174,7 @@ export function scheduleBackendSyncHelper({ getBackendSyncTimer, setBackendSyncT
}
export async function syncStateToBackendHelper({ backend, t, getBackendUrl, buildPersistableState, getLocalStateVersion, getSyncedStateVersion, setSyncedStateVersion, setLocalStateDirty }) {
backend.pendingWrites = (backend.pendingWrites || 0) + 1;
const syncVersion = getLocalStateVersion();
try {
const res = await fetch(`${getBackendUrl()}/api/state`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(buildPersistableState()) });
@@ -180,11 +182,19 @@ export async function syncStateToBackendHelper({ backend, t, getBackendUrl, buil
backend.available = true;
backend.lastError = "";
backend.lastSyncAt = new Date().toISOString();
backend.lastSavedAt = backend.lastSyncAt;
backend.writeError = "";
setSyncedStateVersion(Math.max(getSyncedStateVersion(), syncVersion));
if (syncVersion === getLocalStateVersion()) setLocalStateDirty(false);
if (syncVersion === getLocalStateVersion()) {
setLocalStateDirty(false);
backend.passingError = "";
}
} catch (error) {
backend.available = false;
backend.lastError = t("error.sync_failed", { msg: error instanceof Error ? error.message : String(error) });
backend.writeError = backend.lastError;
} finally {
backend.pendingWrites = Math.max(0, (backend.pendingWrites || 1) - 1);
}
}
@@ -200,11 +210,12 @@ export async function pingBackendHelper({ backend, t, getBackendUrl }) {
}
}
export async function checkAppVersionHelper({ getBackendUrl, getBaselineAppVersion, setBaselineAppVersion, getPendingAppVersion, setPendingAppVersion, getLocalStateDirty, onVersion = () => {} }) {
export async function checkAppVersionHelper({ getBackendUrl, getBaselineAppVersion, setBaselineAppVersion, getPendingAppVersion, setPendingAppVersion, getLocalStateDirty, onVersion = () => {}, onContact = () => {} }) {
try {
const res = await fetch(`${getBackendUrl()}/api/app-version`, { cache: "no-store" });
if (!res.ok) return;
if (!res.ok) { onContact(false); return; }
const payload = await res.json();
onContact(true);
if (typeof payload.version === "string" && payload.version) onVersion(payload.version);
const key = `${payload.revision}:${payload.updatedAt}`;
if (!getBaselineAppVersion()) {
@@ -224,7 +235,7 @@ export async function checkAppVersionHelper({ getBackendUrl, getBaselineAppVersi
return;
}
window.location.reload();
} catch {}
} catch { onContact(false); }
}
export function startAppVersionPollingHelper({ checkAppVersion, getAppVersionPollTimer, setAppVersionPollTimer }) {