/* eslint-disable @typescript-eslint/no-explicit-any */ /* eslint-disable react-hooks/exhaustive-deps */ import { useCallback, useEffect, useState } from 'react'; export const useRefreshLazyQuery = ({ time, skip, refreshSkip, stopRefresh, fetchRequest, dependStates = [], }: { time: number; skip?: boolean; refreshSkip?: boolean; stopRefresh?: boolean; fetchRequest: () => any; dependStates?: any[]; }) => { const [refreshTime, setRefreshTime] = useState(null); const refresh = useCallback(() => { if (refreshTime) { clearInterval(refreshTime); } if (skip || refreshSkip || stopRefresh) { return false; } setRefreshTime( setInterval(() => { fetchRequest(); }, time), ); return () => { if (refreshTime) { clearInterval(refreshTime); } }; }, [fetchRequest, skip, time, refreshSkip]); useEffect(() => { refresh(); return () => { if (refreshTime) { clearInterval(refreshTime); } }; }, [refresh, ...dependStates]); return { refresh, }; };