Files
mcb-platform-monorepo/packages/shared/lib/useRefetchData/useRefetchData.ts
T
2025-07-21 17:12:41 +03:00

37 lines
1.0 KiB
TypeScript

import { useEffect, useState } from 'react';
import { REFETCH_DELAY } from './constants';
/**
* Хук, для управления состоянием повторного запроса данных.
* @param refetch Функция повторного запроса данных.
* @returns Состояние блокировки кнопки повторного запроса данных.
*/
function useRefetchData(refetch: () => void) {
const [disabledRefetchButton, setDisabled] = useState(false);
const [isAbleToRefetchData, setIsAbleToRefetchData] = useState(true);
const refetchData = () => {
refetch();
setIsAbleToRefetchData(false);
};
useEffect(() => {
if (isAbleToRefetchData) {
return;
}
setDisabled(true);
const timer = setTimeout(() => {
setDisabled(false);
setIsAbleToRefetchData(true);
}, REFETCH_DELAY);
return () => clearTimeout(timer);
}, [isAbleToRefetchData]);
return { disabledRefetchButton, refetchData };
}
export { useRefetchData };