Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: auto refresh accounts usage list on polling interval
  • Loading branch information
DemosHume committed Apr 16, 2026
commit 2a3a1123de95ce7b03fe2bbb5e69e7f4fa2a7775
22 changes: 22 additions & 0 deletions apps/src/hooks/useAccounts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,19 @@ function formatUsageRefreshErrorMessage(
return message;
}

function getAccountsAutoRefreshIntervalMs(
enabled: boolean,
intervalSecs: number,
): number | false {
if (!enabled) {
return false;
}
if (typeof document !== "undefined" && document.visibilityState !== "visible") {
return false;
}
return Math.max(1, intervalSecs) * 1000;
}

/**
* 函数 `useAccounts`
*
Expand All @@ -112,12 +125,17 @@ export function useAccounts() {
const { t } = useI18n();
const localDayRange = useLocalDayRange();
const serviceStatus = useAppStore((state) => state.serviceStatus);
const backgroundTasks = useAppStore((state) => state.appSettings.backgroundTasks);
const { canAccessManagementRpc } = useRuntimeCapabilities();
const isServiceReady = canAccessManagementRpc && serviceStatus.connected;
const isPageActive = useDesktopPageActive("/accounts/");
const areAccountQueriesEnabled = useDeferredDesktopActivation(
isServiceReady && isPageActive,
);
const accountsAutoRefreshIntervalMs = getAccountsAutoRefreshIntervalMs(
areAccountQueriesEnabled && backgroundTasks.usagePollingEnabled,
backgroundTasks.usagePollIntervalSecs,
);
const startupSnapshot = queryClient.getQueryData<StartupSnapshot>(
buildStartupSnapshotQueryKey(
serviceStatus.addr,
Expand Down Expand Up @@ -155,6 +173,8 @@ export function useAccounts() {
queryFn: () => accountClient.list(),
enabled: areAccountQueriesEnabled,
retry: 1,
refetchInterval: accountsAutoRefreshIntervalMs,
refetchIntervalInBackground: false,
placeholderData: (previousData): AccountListResult | undefined =>
previousData ||
(startupAccounts.length > 0
Expand All @@ -172,6 +192,8 @@ export function useAccounts() {
queryFn: () => accountClient.listUsage(),
enabled: areAccountQueriesEnabled,
retry: 1,
refetchInterval: accountsAutoRefreshIntervalMs,
refetchIntervalInBackground: false,
placeholderData: (previousData) =>
previousData || (startupUsages.length > 0 ? startupUsages : undefined),
});
Expand Down