Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
at main 52 lines 1.6 kB view raw
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);