add version

This commit is contained in:
larssand
2026-09-05 13:39:50 +02:00
parent 78c650bde7
commit 9c74c1f256
9 changed files with 57 additions and 3 deletions

View File

@@ -140,7 +140,10 @@ const hydrateFromBackend = () => hydrateFromBackendHelper({ backend, t, getBacke
const scheduleBackendSync = () => scheduleBackendSyncHelper({ getBackendSyncTimer: () => backendSyncTimer, setBackendSyncTimer: (value) => { backendSyncTimer = value; }, syncStateToBackend });
const syncStateToBackend = () => syncStateToBackendHelper({ backend, t, getBackendUrl, buildPersistableState, getLocalStateVersion: () => localStateVersion, getSyncedStateVersion: () => syncedStateVersion, setSyncedStateVersion: (value) => { syncedStateVersion = value; }, getLocalStateDirty: () => localStateDirty, setLocalStateDirty: (value) => { localStateDirty = value; } });
const pingBackend = () => pingBackendHelper({ backend, t, getBackendUrl });
const checkAppVersion = () => checkAppVersionHelper({ getBackendUrl, getBaselineAppVersion: () => baselineAppVersion, setBaselineAppVersion: (value) => { baselineAppVersion = value; }, getPendingAppVersion: () => pendingAppVersion, setPendingAppVersion: (value) => { pendingAppVersion = value; }, getLocalStateDirty: () => localStateDirty });
const checkAppVersion = () => checkAppVersionHelper({ onVersion: (version) => {
const label = document.getElementById("appVersionLabel");
if (label) { label.textContent = `RC RaceCore v${version}`; label.hidden = false; }
}, getBackendUrl, getBaselineAppVersion: () => baselineAppVersion, setBaselineAppVersion: (value) => { baselineAppVersion = value; }, getPendingAppVersion: () => pendingAppVersion, setPendingAppVersion: (value) => { pendingAppVersion = value; }, getLocalStateDirty: () => localStateDirty });
const startAppVersionPolling = () => startAppVersionPollingHelper({ checkAppVersion, getAppVersionPollTimer: () => appVersionPollTimer, setAppVersionPollTimer: (value) => { appVersionPollTimer = value; } });
const startOverlaySync = () => startOverlaySyncHelper({ getOverlaySyncTimer: () => overlaySyncTimer, setOverlaySyncTimer: (value) => { overlaySyncTimer = value; }, getLocalStateDirty: () => localStateDirty, hydrateFromBackend, getCurrentView: () => currentView, renderView });
const startOverlayRotation = () => startOverlayRotationHelper({ getOverlayRotationTimer: () => overlayRotationTimer, setOverlayRotationTimer: (value) => { overlayRotationTimer = value; }, getOverlayRotationIndex: () => overlayRotationIndex, setOverlayRotationIndex: (value) => { overlayRotationIndex = value; }, getCurrentView: () => currentView, getOverlayViewMode: () => overlayViewMode, renderView });

View File

@@ -200,11 +200,12 @@ export async function pingBackendHelper({ backend, t, getBackendUrl }) {
}
}
export async function checkAppVersionHelper({ getBackendUrl, getBaselineAppVersion, setBaselineAppVersion, getPendingAppVersion, setPendingAppVersion, getLocalStateDirty }) {
export async function checkAppVersionHelper({ getBackendUrl, getBaselineAppVersion, setBaselineAppVersion, getPendingAppVersion, setPendingAppVersion, getLocalStateDirty, onVersion = () => {} }) {
try {
const res = await fetch(`${getBackendUrl()}/api/app-version`, { cache: "no-store" });
if (!res.ok) return;
const payload = await res.json();
if (typeof payload.version === "string" && payload.version) onVersion(payload.version);
const key = `${payload.revision}:${payload.updatedAt}`;
if (!getBaselineAppVersion()) {
setBaselineAppVersion(key);

View File

@@ -203,6 +203,15 @@ body {
);
}
.app-version {
display: block;
margin-top: 8px;
font-size: 0.72rem;
color: var(--muted);
}
.app-version[hidden] { display: none; }
.sidebar-footer {
position: static;
margin-top: 14px;