mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-06-04 19:39:35 +00:00
fix(ui): exit infinite spinner with a retry card on failed initial load
List pages wrapped content in <Spin spinning={!fetched}> where 'fetched' only flipped true once data arrived. With staleTime: Infinity + retry: 1, a transient network error on first load left the query in a permanent error state and the spinner stuck forever.
Now 'fetched' also settles on query.isError, and a failed load shows a Result error card with a Refresh button that self-heals when the backend returns, mirroring the existing XrayPage pattern. Applied to clients, inbounds, groups, nodes, and the dashboard.
Fixes #4723
This commit is contained in:
@@ -76,6 +76,8 @@ export function useNodesQuery() {
|
||||
nodes,
|
||||
totals,
|
||||
loading: query.isFetching,
|
||||
fetched: query.data !== undefined,
|
||||
fetched: query.data !== undefined || query.isError,
|
||||
fetchError: query.error ? (query.error as Error).message : '',
|
||||
refetch: query.refetch,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -30,7 +30,8 @@ export function useStatusQuery() {
|
||||
|
||||
return {
|
||||
status,
|
||||
fetched: query.data !== undefined,
|
||||
fetched: query.data !== undefined || query.isError,
|
||||
fetchError: query.error ? (query.error as Error).message : '',
|
||||
refresh,
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user