45f0f7eefe
* 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>
38 lines
862 B
TypeScript
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,
|
|
},
|
|
]}
|
|
/>
|
|
)
|
|
}
|