The v1.69.0 caching refactor (f19033e0d) replaced the old Redis pub/sub
push mechanism with a global 30s client-side polling interval. This
caused widgets that previously refreshed every 5s (e.g. health-monitoring,
Dashdot, dns-hole) to only refresh every 30s.
Adds a widgetRefetchIntervalOverrides map in query-cache.ts that maps
tRPC path prefixes to refetch intervals matching the pre-v1.69.0
server-side cacheDuration values. The TRPC provider applies these
overrides via setQueryDefaults after the global default.
Also restores server-side cacheTtlMs on all request handlers to prevent
duplicate upstream API calls between client polls, and adds cacheTtlMs
support to createWidgetRequestHandler.
Beszel handlers are left untouched as they have their own cache handling.
Fixes #6268
18 lines
696 B
TypeScript
18 lines
696 B
TypeScript
import type { IntegrationKindByCategory } from "@homarr/definitions";
|
|
import { createIntegrationAsync } from "@homarr/integrations";
|
|
import type { NetworkControllerSummary } from "@homarr/integrations/types";
|
|
|
|
import { createIntegrationRequestHandler } from "./lib/integration-request-handler";
|
|
|
|
export const networkControllerRequestHandler = createIntegrationRequestHandler<
|
|
NetworkControllerSummary,
|
|
IntegrationKindByCategory<"networkController">,
|
|
Record<string, never>
|
|
>({
|
|
async requestAsync(integration, _input) {
|
|
const integrationInstance = await createIntegrationAsync(integration);
|
|
return await integrationInstance.getNetworkSummaryAsync();
|
|
},
|
|
cacheTtlMs: 300_000,
|
|
});
|