File tree Expand file tree Collapse file tree 2 files changed +10
-3
lines changed Expand file tree Collapse file tree 2 files changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -33,13 +33,14 @@ export const SyncIndicator = (): JSX.Element => {
33
33
const syncStatus = useAtomValue ( syncStatusAtom ) ;
34
34
const indexerServicesSyncStatus = useAtomValue ( indexerServicesSyncStatusAtom ) ;
35
35
const chainStatus = useAtomValue ( chainStatusAtom ) ;
36
+ const [ blockHeightSync , setBlockHeightSync ] = useState < boolean | null > ( null ) ;
36
37
const [ indexerBlockHeight , setIndexerBlockHeight ] = useState < number | null > (
37
38
null
38
39
) ;
39
40
const { errors } = syncStatus ;
40
41
const { services } = indexerServicesSyncStatus ;
41
42
const isChainStatusError =
42
- ! chainStatus ?. height || ! chainStatus ?. epoch || ! indexerBlockHeight ;
43
+ ! chainStatus ?. height || ! chainStatus ?. epoch || ! blockHeightSync ;
43
44
const api = useAtomValue ( indexerApiAtom ) ;
44
45
45
46
const isError =
@@ -50,7 +51,7 @@ export const SyncIndicator = (): JSX.Element => {
50
51
const isSyncing =
51
52
syncStatus . isSyncing ||
52
53
indexerServicesSyncStatus . isSyncing ||
53
- indexerBlockHeight !== chainStatus ?. height ;
54
+ ! blockHeightSync ;
54
55
55
56
useEffect ( ( ) => {
56
57
( async ( ) => {
@@ -59,6 +60,7 @@ export const SyncIndicator = (): JSX.Element => {
59
60
Date . now ( )
60
61
) ;
61
62
setIndexerBlockHeight ( indexerBlockHeight ) ;
63
+ setBlockHeightSync ( indexerBlockHeight === chainStatus ?. height ) ;
62
64
} ) ( ) ;
63
65
} , [ chainStatus ?. height ] ) ;
64
66
Original file line number Diff line number Diff line change @@ -32,7 +32,12 @@ export const syncStatusAtom = atom((get) => {
32
32
get ( votedProposalsAtom ) ,
33
33
] ;
34
34
35
- const isSyncing = queries . some ( ( q ) => q . isFetching ) ;
35
+ // Change the logic here to only consider a query as "syncing" if:
36
+ // 1. It's fetching AND not yet successful (initial load) OR
37
+ // 2. It's in an error state and fetching (trying to recover)
38
+ const isSyncing = queries . some (
39
+ ( q ) => ( q . isFetching && ! q . isSuccess ) || ( q . isError && q . isFetching )
40
+ ) ;
36
41
const isError = queries . some ( ( q ) => q . isError ) ;
37
42
const errors = queries . filter ( ( q ) => q . isError ) . map ( ( q ) => q . error ) ;
38
43
You can’t perform that action at this time.
0 commit comments