Files
homarr/packages/widgets/src/network-controller/network-status/index.ts
T
ajnart a253dcb7d8 fix(widgets): add typed refetchInterval presets to WidgetDefinition
The v1.69.0 caching refactor replaced Redis pub/sub with a global 30s
client polling interval. Live monitoring widgets (health-monitoring,
Dashdot, dns-hole) that previously refreshed every 5s were stuck at 30s.

Adds a typed WidgetRefetchInterval preset (fiveSeconds | never) to
WidgetDefinition. Widgets that need faster polling set fiveSeconds;
widgets that don't need polling set never (fetch on mount only, manual
refresh via context menu). Absence = global 30s default.

 nine widgets get fiveSeconds (live monitoring)
 sixteen widgets get never (slow data, mount-only)
 remaining widgets use the 30s default

Also removes inline refetchInterval from docker widget component.

Fixes #6268
2026-07-15 11:42:47 +02:00

32 lines
1.1 KiB
TypeScript

import { widgetRefetchInterval } from "../../definition";
import { IconServerOff, IconTopologyFull } from "@tabler/icons-react";
import { getIntegrationKindsByCategory } from "@homarr/definitions";
import { createWidgetDefinition } from "../../definition";
import { optionsBuilder } from "../../options";
export const { definition, componentLoader } = createWidgetDefinition("networkControllerStatus", {
icon: IconTopologyFull,
queryKey: [["widget", "networkController"]],
refetchInterval: widgetRefetchInterval.never,
createOptions() {
return optionsBuilder.from((factory) => ({
content: factory.select({
options: (["wifi", "wired"] as const).map((value) => ({
value,
label: (t) => t(`widget.networkControllerStatus.option.content.option.${value}.label`),
})),
defaultValue: "wifi",
}),
}));
},
supportedIntegrations: getIntegrationKindsByCategory("networkController"),
errors: {
INTERNAL_SERVER_ERROR: {
icon: IconServerOff,
message: (t) => t("widget.networkController.error.internalServerError"),
},
},
}).withDynamicImport(() => import("./component"));