import React, {useMemo} from 'react' import {View} from 'react-native' import { AppBskyEmbedRecord, AppBskyFeedPost, AtUri, RichText as RichTextAPI, } from '@atproto/api' import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {makeProfileLink} from '#/lib/routes/links' import {useModerationOpts} from '#/state/preferences/moderation-opts' import {usePostQuery} from '#/state/queries/post' import {PostEmbeds} from '#/view/com/util/post-embeds' import {PostMeta} from '#/view/com/util/PostMeta' import {atoms as a, useTheme} from '#/alf' import {Link} from '#/components/Link' import {ContentHider} from '#/components/moderation/ContentHider' import {PostAlerts} from '#/components/moderation/PostAlerts' import {RichText} from '#/components/RichText' let MessageItemEmbed = ({ embed, }: { embed: AppBskyEmbedRecord.Main }): React.ReactNode => { const t = useTheme() const {data: post} = usePostQuery(embed.record.uri) const moderationOpts = useModerationOpts() const moderation = useMemo( () => moderationOpts && post ? moderatePost(post, moderationOpts) : undefined, [moderationOpts, post], ) const {rt, record} = useMemo(() => { if ( post && AppBskyFeedPost.isRecord(post.record) && AppBskyFeedPost.validateRecord(post.record).success ) { return { rt: new RichTextAPI({ text: post.record.text, facets: post.record.facets, }), record: post.record, } } return {rt: undefined, record: undefined} }, [post]) if (!post || !moderation || !rt || !record) { return null } const itemUrip = new AtUri(post.uri) const itemHref = makeProfileLink(post.author, 'post', itemUrip.rkey) return ( {rt.text && ( )} {post.embed && ( )} ) } MessageItemEmbed = React.memo(MessageItemEmbed) export {MessageItemEmbed}