diff options
author | Samuel Newman <mozzius@protonmail.com> | 2024-03-20 15:37:14 +0000 |
---|---|---|
committer | Samuel Newman <mozzius@protonmail.com> | 2024-03-20 15:37:14 +0000 |
commit | d24ffba01d7aa5a505b4e3d319dfecffc3d039ca (patch) | |
tree | 4e860ca6a6dd038f41bba1839d180177b70c877b /src/view/com/composer/useExternalLinkFetch.e2e.ts | |
parent | 2fa26ceedc1c7f6f3c4a1bdeab621b34c24bcb17 (diff) | |
parent | 023e12bb4ec1dade373c810a13d8bba6d96a22be (diff) | |
download | voidsky-d24ffba01d7aa5a505b4e3d319dfecffc3d039ca.tar.zst |
Merge remote-tracking branch 'origin/main' into samuel/alf-login
Diffstat (limited to 'src/view/com/composer/useExternalLinkFetch.e2e.ts')
-rw-r--r-- | src/view/com/composer/useExternalLinkFetch.e2e.ts | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/view/com/composer/useExternalLinkFetch.e2e.ts b/src/view/com/composer/useExternalLinkFetch.e2e.ts new file mode 100644 index 000000000..ccf619db3 --- /dev/null +++ b/src/view/com/composer/useExternalLinkFetch.e2e.ts @@ -0,0 +1,45 @@ +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<apilib.ExternalEmbedDraft | undefined>( + 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} +} |