mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-07-12 23:56:07 +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:
@@ -213,7 +213,8 @@ export function useClients() {
|
||||
const total = listQuery.data?.total ?? 0;
|
||||
const filtered = listQuery.data?.filtered ?? 0;
|
||||
const allGroups = listQuery.data?.groups ?? [];
|
||||
const fetched = listQuery.data !== undefined;
|
||||
const fetched = listQuery.data !== undefined || listQuery.isError;
|
||||
const fetchError = listQuery.error ? (listQuery.error as Error).message : '';
|
||||
const loading = listQuery.isFetching;
|
||||
|
||||
const inbounds = inboundOptionsQuery.data ?? [];
|
||||
@@ -532,6 +533,7 @@ export function useClients() {
|
||||
onlines,
|
||||
loading,
|
||||
fetched,
|
||||
fetchError,
|
||||
subSettings,
|
||||
ipLimitEnable,
|
||||
tgBotEnable,
|
||||
|
||||
Reference in New Issue
Block a user