fix(beszel): don't clear live data on transient connection errors

Keep showing existing charts during brief WebSocket reconnections
instead of flashing the error UI. The error state only shows when
no data was ever received (genuine initial connection failure).
This commit is contained in:
Thomas Camlong committed 2026-06-15 16:57:35 +02:00
1 parent 4857b72804
commit 4a65d2ae87
2 files changed
+40 -41

No files matched your search

+40 -40
View File
@@ -51,47 +51,47 @@ type BeszelAreaChartProps = Omit<AreaChartProps, "dataKey" | "curveType" | "with
yAxisDomain?: [number, string];
};
const BeszelAreaChart = memo(
({
yAxisFormatter,
yAxisDomain,
yAxisProps: yAxisPropsOverride,
type = "default",
...props
}: BeszelAreaChartProps) => {
const mergedYAxis = useMemo(
() => ({
...yAxisBase,
width: 32,
tickMargin: 2,
...(yAxisDomain ? { domain: yAxisDomain } : {}),
tickFormatter: yAxisFormatter,
...yAxisPropsOverride,
}),
[yAxisFormatter, yAxisDomain, yAxisPropsOverride],
);
const BeszelAreaChart = memo(({
yAxisFormatter,
yAxisDomain,
yAxisProps: yAxisPropsOverride,
type = "default",
...props
}: BeszelAreaChartProps) => {
const mergedYAxis = useMemo(
() => ({
...yAxisBase,
width: 48,
tickMargin: 2,
...(yAxisDomain ? { domain: yAxisDomain } : {}),
tickFormatter: yAxisFormatter,
...yAxisPropsOverride,
}),
[yAxisFormatter, yAxisDomain, yAxisPropsOverride],
);
return (
<AreaChart
dataKey="time"
curveType="monotone"
withGradient={false}
connectNulls
withDots={false}
type={type}
strokeWidth={1}
fillOpacity={0.2}
areaChartProps={noAnimation}
withXAxis
withYAxis
w="100%"
style={chartStyle}
yAxisProps={mergedYAxis}
{...props}
/>
);
},
);
return (
<AreaChart
dataKey="time"
curveType="monotone"
withGradient={false}
connectNulls
withDots={false}
type={type}
strokeWidth={1}
fillOpacity={0.2}
areaChartProps={{
// margin: { top: 0, right: 0, bottom: 0, left: 10 },
}}
withXAxis
withYAxis
w="100%"
style={chartStyle}
yAxisProps={mergedYAxis}
{...props}
/>
);
});
export const useSystemChartData = (
systemStats: BeszelSystemStatsRecord[] | undefined,
@@ -37,7 +37,6 @@ export const useLiveStats = (integrationIds: string[], systemId: string, enabled
);
const onError = useCallback((err: unknown) => {
setData(null);
setError(err instanceof Error ? err : new Error(String(err)));
}, []);