Files
bsky-social-app/src/components/Post/Embed/LazyQuoteEmbed.tsx
T
Eric Bailey 45f0f7eefe Port post embeds to new arch (#7408)
* Direct port of embeds to new arch

(cherry picked from commit cc3fa1f6cea396dd9222486c633a508bfee1ecd6)

* Re-org

* Split out ListEmbed and FeedEmbed

* Split out ImageEmbed

* DRY up a bit

* Port over ExternalLinkEmbed

* Port over Player and Gif embeds

* Migrate ComposerReplyTo

* Replace other usages of old post-embeds

* Migrate view contexts

* Copy pasta VideoEmbed

* Copy pasta GifEmbed

* Swap in new file location

* Clean up

* Fix up native

* Add back in correct moderation on List and Feed embeds

* Format

* Prettier

* delete old video utils

* move bandwidth-estimate.ts

* Remove log

* Add LazyQuoteEmbed for composer use

* Clean up unused things

* Remove remaining items

* Prettier

* Fix imports

* Handle nested quotes same as prod

* Add back silenced error handling

* Fix lint

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-06-13 12:05:41 -05:00

38 lines
862 B
TypeScript

import {useMemo} from 'react'
import {View} from 'react-native'
import {createEmbedViewRecordFromPost} from '#/state/queries/postgate/util'
import {useResolveLinkQuery} from '#/state/queries/resolve-link'
import {atoms as a, useTheme} from '#/alf'
import {QuoteEmbed} from '#/components/Post/Embed'
export function LazyQuoteEmbed({uri}: {uri: string}) {
const t = useTheme()
const {data} = useResolveLinkQuery(uri)
const view = useMemo(() => {
if (!data || data.type !== 'record' || data.kind !== 'post') return
return createEmbedViewRecordFromPost(data.view)
}, [data])
return view ? (
<QuoteEmbed
embed={{
type: 'post',
view,
}}
/>
) : (
<View
style={[
a.w_full,
a.rounded_md,
t.atoms.bg_contrast_25,
{
height: 68,
},
]}
/>
)
}