fix: sync refresh rate from frontend to backend on SSE connect

When container restarts, backend resets to default 5s interval but
frontend still shows the user's stored preference from localStorage.

Now on SSE connect, frontend pushes its stored refresh rate to the
backend, ensuring they stay in sync after container rebuilds.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-28 05:39:51 +01:00
parent d9cc4f39dd
commit 407ba8224b
2 changed files with 22 additions and 11 deletions

View File

@@ -1,4 +1,5 @@
import { metrics, connected, historyData } from '$lib/stores/metrics';
import { settings } from '$lib/stores/settings';
import { browser } from '$app/environment';
import type { AllMetrics, HistoryData } from '$lib/types/metrics';
@@ -35,6 +36,8 @@ export function connectSSE() {
eventSource.onopen = () => {
connected.set(true);
console.log('SSE connected');
// Sync stored settings to backend (in case container was restarted)
settings.syncToBackend();
};
eventSource.onmessage = (event) => {

View File

@@ -15,21 +15,29 @@ function createSettingsStore() {
const { subscribe, set, update } = writable<Settings>(initial);
// Helper to push refresh rate to backend
async function pushRefreshRate(rate: number) {
try {
await fetch('/api/v1/settings/refresh', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ interval: rate })
});
} catch (e) {
console.error('Failed to update refresh rate:', e);
}
}
return {
subscribe,
setRefreshRate: async (rate: number) => {
update((s) => ({ ...s, refreshRate: rate }));
// Notify backend
try {
await fetch('/api/v1/settings/refresh', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ interval: rate })
});
} catch (e) {
console.error('Failed to update refresh rate:', e);
}
await pushRefreshRate(rate);
},
// Sync stored settings to backend (call on SSE connect)
syncToBackend: async () => {
const current = stored ? JSON.parse(stored) : defaultSettings;
await pushRefreshRate(current.refreshRate);
}
};
}