import {useState, useEffect} from 'react' import * as apilib from 'lib/api/index' import {getLinkMeta} from 'lib/link-meta/link-meta' import {ComposerOpts} from 'state/shell/composer' import {getAgent} from '#/state/session' export function useExternalLinkFetch({}: { setQuote: (opts: ComposerOpts['quote']) => void }) { const [extLink, setExtLink] = useState( undefined, ) useEffect(() => { let aborted = false const cleanup = () => { aborted = true } if (!extLink) { return cleanup } if (!extLink.meta) { getLinkMeta(getAgent(), extLink.uri).then(meta => { if (aborted) { return } setExtLink({ uri: extLink.uri, isLoading: !!meta.image, meta, }) }) return cleanup } if (extLink.isLoading) { setExtLink({ ...extLink, isLoading: false, // done }) } return cleanup }, [extLink]) return {extLink, setExtLink} }