diff --git a/packages/api/src/router/widgets/beszel.ts b/packages/api/src/router/widgets/beszel.ts index 423c750a1..f20da7530 100644 --- a/packages/api/src/router/widgets/beszel.ts +++ b/packages/api/src/router/widgets/beszel.ts @@ -162,7 +162,10 @@ export const beszelRouter = createTRPCRouter({ containerStats: BeszelContainerStatsRecord | null; }>((emit) => { const integration = ctx.integrations[0]; - if (!integration) return () => {}; + if (!integration) { + emit.error(new Error("No Beszel integration configured")); + return () => {}; + } const abortController = new AbortController(); diff --git a/packages/translation/src/lang/en.json b/packages/translation/src/lang/en.json index 7f04d6b06..db654f202 100644 --- a/packages/translation/src/lang/en.json +++ b/packages/translation/src/lang/en.json @@ -3669,7 +3669,8 @@ "configureIntegrationFirst": "Configure a Beszel integration first", "loading": "Loading systems...", "placeholder": "Select a system", - "noSystems": "No systems found" + "noSystems": "No systems found", + "loadError": "Failed to load systems" }, "timePeriod": { "label": "Time period" diff --git a/packages/widgets/src/_inputs/widget-beszel-system-input.tsx b/packages/widgets/src/_inputs/widget-beszel-system-input.tsx index 4b5604c28..94b45351d 100644 --- a/packages/widgets/src/_inputs/widget-beszel-system-input.tsx +++ b/packages/widgets/src/_inputs/widget-beszel-system-input.tsx @@ -16,7 +16,7 @@ export const WidgetBeszelSystemInput = ({ property, kind }: CommonWidgetInputPro const integrationIds = form.values.integrationIds; - const { data: systemsResult = [], isPending } = clientApi.widget.beszel.getSystems.useQuery( + const { data: systemsResult = [], isPending, isError } = clientApi.widget.beszel.getSystems.useQuery( { integrationIds }, { enabled: integrationIds.length > 0, staleTime: 30_000 }, ); @@ -40,6 +40,8 @@ export const WidgetBeszelSystemInput = ({ property, kind }: CommonWidgetInputPro searchable nothingFoundMessage={t("noSystems")} data={systems} + disabled={isError} + error={isError ? t("loadError") : undefined} {...form.getInputProps(`options.${property}`)} /> ); diff --git a/packages/widgets/src/beszel-system-stats/component.tsx b/packages/widgets/src/beszel-system-stats/component.tsx index 0f5e0df59..1f242e070 100644 --- a/packages/widgets/src/beszel-system-stats/component.tsx +++ b/packages/widgets/src/beszel-system-stats/component.tsx @@ -71,7 +71,7 @@ export default function BeszelSystemStatsWidget({ { integrationIds, systemId: selectedSystem, - timePeriod: options.timePeriod, + timePeriod: options.timePeriod as "1m" | "1h" | "12h" | "24h" | "1w" | "30d", includeDocker: showDocker, }, { staleTime: 30 * 1000, enabled: !isLive && systemReady && selectedSystem !== "" }, diff --git a/packages/widgets/src/beszel/_shared/use-live-stats.ts b/packages/widgets/src/beszel/_shared/use-live-stats.ts index 1f1326e8a..7cd103254 100644 --- a/packages/widgets/src/beszel/_shared/use-live-stats.ts +++ b/packages/widgets/src/beszel/_shared/use-live-stats.ts @@ -37,6 +37,7 @@ export const useLiveStats = (integrationIds: string[], systemId: string, enabled ); const onError = useCallback((err: unknown) => { + setData(null); setError(err instanceof Error ? err : new Error(String(err))); }, []);