about summary refs log tree commit diff
path: root/src/view/com/composer/useExternalLinkFetch.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/composer/useExternalLinkFetch.ts')
-rw-r--r--src/view/com/composer/useExternalLinkFetch.ts187
1 files changed, 0 insertions, 187 deletions
diff --git a/src/view/com/composer/useExternalLinkFetch.ts b/src/view/com/composer/useExternalLinkFetch.ts
deleted file mode 100644
index 60afadefe..000000000
--- a/src/view/com/composer/useExternalLinkFetch.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-import {useEffect, useState} from 'react'
-import {msg} from '@lingui/macro'
-import {useLingui} from '@lingui/react'
-
-import * as apilib from '#/lib/api/index'
-import {POST_IMG_MAX} from '#/lib/constants'
-import {
-  EmbeddingDisabledError,
-  getFeedAsEmbed,
-  getListAsEmbed,
-  getPostAsQuote,
-  getStarterPackAsEmbed,
-} from '#/lib/link-meta/bsky'
-import {getLinkMeta} from '#/lib/link-meta/link-meta'
-import {resolveShortLink} from '#/lib/link-meta/resolve-short-link'
-import {downloadAndResize} from '#/lib/media/manip'
-import {
-  isBskyCustomFeedUrl,
-  isBskyListUrl,
-  isBskyPostUrl,
-  isBskyStarterPackUrl,
-  isBskyStartUrl,
-  isShortLink,
-} from '#/lib/strings/url-helpers'
-import {logger} from '#/logger'
-import {createComposerImage} from '#/state/gallery'
-import {useFetchDid} from '#/state/queries/handle'
-import {useGetPost} from '#/state/queries/post'
-import {useAgent} from '#/state/session'
-import {ComposerOpts} from '#/state/shell/composer'
-
-export function useExternalLinkFetch({
-  setQuote,
-  setError,
-}: {
-  setQuote: (opts: ComposerOpts['quote']) => void
-  setError: (err: string) => void
-}) {
-  const {_} = useLingui()
-  const [extLink, setExtLink] = useState<apilib.ExternalEmbedDraft | undefined>(
-    undefined,
-  )
-  const getPost = useGetPost()
-  const fetchDid = useFetchDid()
-  const agent = useAgent()
-
-  useEffect(() => {
-    let aborted = false
-    const cleanup = () => {
-      aborted = true
-    }
-    if (!extLink) {
-      return cleanup
-    }
-    if (!extLink.meta) {
-      if (isBskyPostUrl(extLink.uri)) {
-        getPostAsQuote(getPost, extLink.uri).then(
-          newQuote => {
-            if (aborted) {
-              return
-            }
-            setQuote(newQuote)
-            setExtLink(undefined)
-          },
-          err => {
-            if (err instanceof EmbeddingDisabledError) {
-              setError(_(msg`This post's author has disabled quote posts.`))
-            } else {
-              logger.error('Failed to fetch post for quote embedding', {
-                message: err.toString(),
-              })
-            }
-            setExtLink(undefined)
-          },
-        )
-      } else if (isBskyCustomFeedUrl(extLink.uri)) {
-        getFeedAsEmbed(agent, fetchDid, extLink.uri).then(
-          ({embed, meta}) => {
-            if (aborted) {
-              return
-            }
-            setExtLink({
-              uri: extLink.uri,
-              isLoading: false,
-              meta,
-              embed,
-            })
-          },
-          err => {
-            logger.error('Failed to fetch feed for embedding', {message: err})
-            setExtLink(undefined)
-          },
-        )
-      } else if (isBskyListUrl(extLink.uri)) {
-        getListAsEmbed(agent, fetchDid, extLink.uri).then(
-          ({embed, meta}) => {
-            if (aborted) {
-              return
-            }
-            setExtLink({
-              uri: extLink.uri,
-              isLoading: false,
-              meta,
-              embed,
-            })
-          },
-          err => {
-            logger.error('Failed to fetch list for embedding', {message: err})
-            setExtLink(undefined)
-          },
-        )
-      } else if (
-        isBskyStartUrl(extLink.uri) ||
-        isBskyStarterPackUrl(extLink.uri)
-      ) {
-        getStarterPackAsEmbed(agent, fetchDid, extLink.uri).then(
-          ({embed, meta}) => {
-            if (aborted) {
-              return
-            }
-            setExtLink({
-              uri: extLink.uri,
-              isLoading: false,
-              meta,
-              embed,
-            })
-          },
-        )
-      } else if (isShortLink(extLink.uri)) {
-        if (isShortLink(extLink.uri)) {
-          resolveShortLink(extLink.uri).then(res => {
-            if (res && res !== extLink.uri) {
-              setExtLink({
-                uri: res,
-                isLoading: true,
-              })
-            }
-          })
-        }
-      } else {
-        getLinkMeta(agent, extLink.uri).then(meta => {
-          if (aborted) {
-            return
-          }
-          setExtLink({
-            uri: extLink.uri,
-            isLoading: !!meta.image,
-            meta,
-          })
-        })
-      }
-      return cleanup
-    }
-    if (extLink.isLoading && extLink.meta?.image && !extLink.localThumb) {
-      downloadAndResize({
-        uri: extLink.meta.image,
-        width: POST_IMG_MAX.width,
-        height: POST_IMG_MAX.height,
-        mode: 'contain',
-        maxSize: POST_IMG_MAX.size,
-        timeout: 15e3,
-      })
-        .catch(() => undefined)
-        .then(thumb => (thumb ? createComposerImage(thumb) : undefined))
-        .then(thumb => {
-          if (aborted) {
-            return
-          }
-          setExtLink({
-            ...extLink,
-            isLoading: false, // done
-            localThumb: thumb,
-          })
-        })
-      return cleanup
-    }
-    if (extLink.isLoading) {
-      setExtLink({
-        ...extLink,
-        isLoading: false, // done
-      })
-    }
-    return cleanup
-  }, [_, extLink, setQuote, getPost, fetchDid, agent, setError])
-
-  return {extLink, setExtLink}
-}