// @flow import { useState, useEffect } from 'react'; export default function useFetchViewCount( shouldFetch: ?boolean, uris: Array, claimsByUri: any, doFetchViewCount: (string) => void ) { const [fetchedUris, setFetchedUris] = useState([]); useEffect(() => { if (shouldFetch && uris && uris.length > 0) { const urisToFetch = uris.filter((uri) => uri && !fetchedUris.includes(uri) && Boolean(claimsByUri[uri])); if (urisToFetch.length > 0) { const claimIds = urisToFetch.map((uri) => claimsByUri[uri].claim_id); doFetchViewCount(claimIds.join(',')); setFetchedUris([...fetchedUris, ...urisToFetch]); } } // eslint-disable-next-line react-hooks/exhaustive-deps }, [uris]); }