diff options
Diffstat (limited to 'src/view/com/composer/useExternalLinkFetch.ts')
-rw-r--r-- | src/view/com/composer/useExternalLinkFetch.ts | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/view/com/composer/useExternalLinkFetch.ts b/src/view/com/composer/useExternalLinkFetch.ts index 91f4da059..6592ed572 100644 --- a/src/view/com/composer/useExternalLinkFetch.ts +++ b/src/view/com/composer/useExternalLinkFetch.ts @@ -3,9 +3,17 @@ import {useStores} from 'state/index' import {ImageModel} from 'state/models/media/image' import * as apilib from 'lib/api/index' import {getLinkMeta} from 'lib/link-meta/link-meta' -import {getPostAsQuote, getFeedAsEmbed} from 'lib/link-meta/bsky' +import { + getPostAsQuote, + getFeedAsEmbed, + getListAsEmbed, +} from 'lib/link-meta/bsky' import {downloadAndResize} from 'lib/media/manip' -import {isBskyPostUrl, isBskyCustomFeedUrl} from 'lib/strings/url-helpers' +import { + isBskyPostUrl, + isBskyCustomFeedUrl, + isBskyListUrl, +} from 'lib/strings/url-helpers' import {ComposerOpts} from 'state/models/ui/shell' import {POST_IMG_MAX} from 'lib/constants' @@ -60,6 +68,24 @@ export function useExternalLinkFetch({ setExtLink(undefined) }, ) + } else if (isBskyListUrl(extLink.uri)) { + getListAsEmbed(store, extLink.uri).then( + ({embed, meta}) => { + if (aborted) { + return + } + setExtLink({ + uri: extLink.uri, + isLoading: false, + meta, + embed, + }) + }, + err => { + store.log.error('Failed to fetch list for embedding', {err}) + setExtLink(undefined) + }, + ) } else { getLinkMeta(store, extLink.uri).then(meta => { if (aborted) { |