import Pluggy from 'pluggy-js'; import { Item } from 'pluggy-js/dist/types'; import { useState } from 'react'; import useInterval from './useInterval'; import usePluggy from './usePluggy'; import _isEqual from 'lodash/isEqual'; import _omit from 'lodash/omit'; const usePollItem = (itemId: string, delay: number | null): Item | null => { const pluggy: Pluggy = usePluggy(); const [item, setItem] = useState(null); const fetchStatus = async () => { const itemResponse = await pluggy.fetchItem(itemId); const updated = _omit(itemResponse, ['connector', 'lastUpdatedAt']); const stored = _omit(item, ['connector', 'lastUpdatedAt']); if (!_isEqual(updated, stored)) { setItem(itemResponse); } }; useInterval(() => { fetchStatus(); }, delay); return item; }; export default usePollItem;