Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
1import type { AnyPostFragment, TimelineItemFragment } from "@hey/indexer";
2import { memo } from "react";
3import ActionType from "@/components/Home/Timeline/EventType";
4import PostWrapper from "@/components/Shared/Post/PostWrapper";
5import PostActions from "./Actions";
6import HiddenPost from "./HiddenPost";
7import PostAvatar from "./PostAvatar";
8import PostBody from "./PostBody";
9import PostHeader from "./PostHeader";
10import PostType from "./Type";
11
12interface SinglePostProps {
13 timelineItem?: TimelineItemFragment;
14 post: AnyPostFragment;
15 showMore?: boolean;
16 showType?: boolean;
17}
18
19const SinglePost = ({
20 timelineItem,
21 post,
22 showMore = true,
23 showType = true
24}: SinglePostProps) => {
25 const rootPost = timelineItem ? timelineItem?.primary : post;
26
27 return (
28 <PostWrapper className="cursor-pointer px-5 pt-4 pb-3" post={rootPost}>
29 {timelineItem ? (
30 <ActionType timelineItem={timelineItem} />
31 ) : (
32 <PostType post={post} showType={showType} />
33 )}
34 <div className="flex items-start gap-x-3">
35 <PostAvatar post={rootPost} timelineItem={timelineItem} />
36 <div className="w-[calc(100%-55px)]">
37 <PostHeader post={rootPost} timelineItem={timelineItem} />
38 {post.isDeleted ? (
39 <HiddenPost type={post.__typename} />
40 ) : (
41 <>
42 <PostBody post={rootPost} showMore={showMore} />
43 <PostActions post={rootPost} />
44 </>
45 )}
46 </div>
47 </div>
48 </PostWrapper>
49 );
50};
51
52export default memo(SinglePost);