From a187179221447e82c018f842d7d58da994d8dd05 Mon Sep 17 00:00:00 2001 From: thelinuxguy-ssh Date: Mon, 3 Aug 2026 15:42:49 +0530 Subject: [PATCH] Refresh button Fix, UI Improvements --- duskmeter-dev.sqlite-wal | Bin 2991152 -> 3386672 bytes src/lib/components/Header.svelte | 2 +- src/lib/stores/sites.ts | 43 +++++++++++++-------------- src/routes/(app)/alerts/+page.svelte | 36 ++++------------------ 4 files changed, 26 insertions(+), 55 deletions(-) diff --git a/duskmeter-dev.sqlite-wal b/duskmeter-dev.sqlite-wal index 2e78c0a2442dc7bcfe3e6ff793822f227372be37..02707f6868104467c6461736d8fbb69df89a9519 100644 GIT binary patch delta 5674 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 delta 101 zcmV~$*%84|006*wi2FX{j+=-XCHmM>6p#<2244zLjotkB4f*FC9)g0Rl1N!aRZU$( oQ%hS%S5M!-(8$ diff --git a/src/lib/stores/sites.ts b/src/lib/stores/sites.ts index 7628c9f..ed2db98 100644 --- a/src/lib/stores/sites.ts +++ b/src/lib/stores/sites.ts @@ -289,32 +289,29 @@ export async function acknowledgeAlert(id: number) { export async function refreshData(force: boolean = false) { refreshing.set(true); clearError(); - const collectedErrors: string[] = []; - try { - const res = await fetch(`/api/sync${force ? "?force=true" : ""}`, { method: "POST" }); - if (!res.ok) throw new Error(`API returned ${res.status}`); - const data = await res.json(); - const sources = new Set(); - for (const r of data.results ?? []) { - sources.add(r.viirsSource ?? "unknown"); - for (const e of r.errors ?? []) collectedErrors.push(`${r.name}: ${e}`); + + if (force) { + try { + const res = await fetch(`/api/sync?force=true`, { method: "POST" }); + if (!res.ok) throw new Error(`API returned ${res.status}`); + const data = await res.json(); + const sources = new Set(); + for (const r of data.results ?? []) { + sources.add(r.viirsSource ?? "unknown"); + } + syncInfo.set({ synced: data.synced ?? 0, total: data.total ?? 0, startedAt: data.startedAt, sources: [...sources], errors: [] }); + } catch (e) { + reportError("Full refresh failed", e, "Background refresh failed"); + } + try { + await fetch("/api/assess-all", { method: "POST" }); + } catch (e) { + reportError("Bulk assessment failed", e, "Scheduled assessment failed"); } - syncInfo.set({ - synced: data.synced ?? 0, - total: data.total ?? 0, - startedAt: data.startedAt, - sources: [...sources], - errors: collectedErrors, - }); - } catch (e) { - reportError("Full refresh failed", e, "Background refresh failed"); - } - try { - await fetch("/api/assess-all", { method: "POST" }); - } catch (e) { - reportError("Bulk assessment failed", e, "Scheduled assessment failed"); } + await fetchSites(); + await fetchAlerts(); refreshing.set(false); } export function getGlobalStats() { diff --git a/src/routes/(app)/alerts/+page.svelte b/src/routes/(app)/alerts/+page.svelte index 8e8ee3e..1168a0c 100644 --- a/src/routes/(app)/alerts/+page.svelte +++ b/src/routes/(app)/alerts/+page.svelte @@ -1,20 +1,6 @@ Alerts — Duskmeter @@ -33,30 +19,18 @@ {:else}
{#each $allAlerts as alert (alert.id)} -
+
-
+
{alert.severity} {alert.alertType.replace(/_/g, ' ')} + {new Date(alert.triggeredAt).toLocaleDateString()}

{alert.message}

-
{/each}