This repository has no description
1.0 kB
35 lines
1import {
2 AppBskyEmbedExternal,
3 AppBskyEmbedImages,
4 AppBskyEmbedRecord,
5 AppBskyEmbedVideo,
6 AppBskyFeedDefs,
7 AppBskyGraphDefs,
8} from '@atproto/api';
9import ImageEmbed from '../imageEmbed/ImageEmbed';
10import ExternalEmbed from '../externalEmbed/ExternalEmbed';
11import VideoEmbed from '../videoEmbed/VideoEmbed';
12import ListEmbed from '../listEmbed/ListEmbed';
13
14interface Props {
15 embed: AppBskyFeedDefs.PostView['embed'];
16}
17
18export default function PostEmbed(props: Props) {
19 const content = props.embed;
20
21 switch (true) {
22 case AppBskyEmbedImages.isView(content):
23 return <ImageEmbed images={content.images} />;
24 case AppBskyEmbedExternal.isView(content):
25 return <ExternalEmbed embed={content} />;
26 case AppBskyEmbedVideo.isView(content):
27 return <VideoEmbed embed={content} />;
28 case AppBskyEmbedRecord.isView(content) &&
29 AppBskyGraphDefs.isListView(content.record):
30 return <ListEmbed list={content.record} />;
31
32 default:
33 return <>default</>;
34 }
35}