From a5367ca3f5dce7a0ff226f59a4eaa90da18ac846 Mon Sep 17 00:00:00 2001 From: DIYgod Date: Thu, 18 May 2023 19:30:26 +0100 Subject: [PATCH] feat: simplify multiple posts from the same blogger in activities --- src/components/home/HomeFeed.tsx | 170 +++++++++++++++++-------------- 1 file changed, 96 insertions(+), 74 deletions(-) diff --git a/src/components/home/HomeFeed.tsx b/src/components/home/HomeFeed.tsx index c103d982..496cbcd0 100644 --- a/src/components/home/HomeFeed.tsx +++ b/src/components/home/HomeFeed.tsx @@ -19,6 +19,7 @@ import { useDate } from "~/hooks/useDate" import { useTranslation } from "~/lib/i18n/client" import { getStorage, setStorage } from "~/lib/storage" import { ExpandedNote } from "~/lib/types" +import { cn } from "~/lib/utils" import type { FeedType, SearchType } from "~/models/home.model" import { useGetFeed } from "~/queries/home" @@ -26,10 +27,12 @@ import { EmptyState } from "../ui/EmptyState" const Post = ({ post, + previousPost, filtering, keyword, }: { post: ExpandedNote + previousPost?: ExpandedNote filtering: number keyword?: string }) => { @@ -45,50 +48,54 @@ const Post = ({ return
} + let simple = post.characterId === previousPost?.characterId + return ( -
-
- - + {!simple && ( +
+ + + + {post.character?.handle + + + {post.character?.metadata?.content?.name || + post.character?.handle} + + + + + · +
+ {t("ago", { + time: date.dayjs + .duration( + date.dayjs(post?.createdAt).diff(date.dayjs(), "minute"), + "minute", + ) + .humanize(), + })} + +
+ )}
-

+

{post.metadata?.content?.title}

-
- {!!post.metadata?.content?.tags?.filter( - (tag) => tag !== "post" && tag !== "page", - ).length && ( - - {post.metadata?.content?.tags - ?.filter((tag) => tag !== "post" && tag !== "page") - .map((tag, index) => ( - { - e.preventDefault() - router.push(`/tag/${tag}`) - }} - > - #{tag} - - ))} - - )} - {post.stat?.viewDetailCount && ( - - - {post.stat?.viewDetailCount} - - )} -
+ {!simple && ( +
+ {!!post.metadata?.content?.tags?.filter( + (tag) => tag !== "post" && tag !== "page", + ).length && ( + + {post.metadata?.content?.tags + ?.filter((tag) => tag !== "post" && tag !== "page") + .map((tag, index) => ( + { + e.preventDefault() + router.push(`/tag/${tag}`) + }} + > + #{tag} + + ))} + + )} + {post.stat?.viewDetailCount && ( + + + {post.stat?.viewDetailCount} + + )} +
+ )}
- + {!simple && }
) @@ -314,11 +331,16 @@ export const HomeFeed: React.FC<{ if (!posts?.list.length) return
return (
- {posts?.list.map((post) => { + {posts?.list.map((post, index, array) => { return ( = 1 + ? array[index - 1] + : undefined + } filtering={aiFiltering ? 60 : 0} keyword={searchParams?.get("q") || undefined} />