@@ -77,47 +77,49 @@ interface FiltersProps {
7777 }
7878 onFilterChange : ( filters : Partial < FiltersProps [ 'filters' ] > ) => void
7979 refetch ?: ( options ?: RefetchOptions ) => Promise < unknown >
80+ autoRefetch ?: ( options ?: RefetchOptions ) => Promise < unknown >
8081 advanceSearchOnOpen : ( status : boolean ) => void
8182 onClearAdvanceSearch ?: ( ) => void
8283 handleSort ?: ( column : string , fromDropdown ?: boolean ) => void
8384}
8485
85- export const Filters = ( { filters, onFilterChange, refetch, advanceSearchOnOpen, onClearAdvanceSearch, handleSort } : FiltersProps ) => {
86+ export const Filters = ( { filters, onFilterChange, refetch, autoRefetch , advanceSearchOnOpen, onClearAdvanceSearch, handleSort } : FiltersProps ) => {
8687 const { t } = useTranslation ( )
8788 const dir = useDirDetection ( )
8889 const [ search , setSearch ] = useState ( filters . search || '' )
8990 const [ isRefreshing , setIsRefreshing ] = useState ( false )
9091 const [ autoRefreshInterval , setAutoRefreshInterval ] = useState < number > ( ( ) => getUsersAutoRefreshIntervalSeconds ( ) )
9192 const { refetch : queryRefetch } = useGetUsers ( filters )
92- const refetchUsers = useCallback ( async ( showLoading = false ) => {
93+ const refetchUsers = useCallback ( async ( showLoading = false , isAutoRefresh = false ) => {
9394 if ( showLoading ) {
9495 setIsRefreshing ( true )
9596 }
9697 try {
97- const refetchFn = refetch ?? queryRefetch
98+ // Use autoRefetch for auto refresh, otherwise use manual refetch
99+ const refetchFn = isAutoRefresh ? ( autoRefetch ?? queryRefetch ) : ( refetch ?? queryRefetch )
98100 await refetchFn ( )
99101 } finally {
100102 if ( showLoading ) {
101103 setIsRefreshing ( false )
102104 }
103105 }
104- } , [ refetch , queryRefetch ] )
106+ } , [ refetch , autoRefetch , queryRefetch ] )
105107 useEffect ( ( ) => {
106108 const persistedValue = getUsersAutoRefreshIntervalSeconds ( )
107109 setAutoRefreshInterval ( prev => ( prev === persistedValue ? prev : persistedValue ) )
108110 } , [ ] )
109111 useEffect ( ( ) => {
110112 if ( ! autoRefreshInterval ) return
111113 const intervalId = setInterval ( ( ) => {
112- refetchUsers ( true ) // Show loading spinner on auto refresh
114+ refetchUsers ( true , true ) // Show loading spinner on auto refresh, mark as auto refresh
113115 } , autoRefreshInterval * 1000 )
114116 return ( ) => clearInterval ( intervalId )
115117 } , [ autoRefreshInterval , refetchUsers ] )
116118 useEffect ( ( ) => {
117119 if ( typeof document === 'undefined' ) return
118120 const handleVisibilityChange = ( ) => {
119121 if ( document . visibilityState === 'visible' && autoRefreshInterval > 0 ) {
120- refetchUsers ( true ) // Show loading spinner on visibility change refresh
122+ refetchUsers ( true , true ) // Show loading spinner on visibility change refresh, mark as auto refresh
121123 }
122124 }
123125 document . addEventListener ( 'visibilitychange' , handleVisibilityChange )
@@ -174,7 +176,7 @@ export const Filters = ({ filters, onFilterChange, refetch, advanceSearchOnOpen,
174176
175177 // Handle refresh with loading state
176178 const handleRefreshClick = async ( ) => {
177- await refetchUsers ( true ) // Show loading spinner on manual refresh
179+ await refetchUsers ( true , false ) // Show loading spinner on manual refresh, mark as manual refresh
178180 }
179181
180182 const handleAutoRefreshChange = ( seconds : number ) => {
0 commit comments