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:
@@ -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) => {
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user