summaryrefslogtreecommitdiff
path: root/src/app/(main)/(home)/_components
diff options
context:
space:
mode:
authorBertrand Yuan <bert.yuan@outlook.com>2025-12-16 00:15:04 +0800
committerBertrand Yuan <bert.yuan@outlook.com>2025-12-16 00:15:04 +0800
commit785371bb3eccca455e5ce5fccbe9b6e3752a03f6 (patch)
treedd006593448c3500bdcb414af3b4656f7a7683d4 /src/app/(main)/(home)/_components
parent02ae938c238c9d18448d17a8ec92c0edd8c17463 (diff)
fix(front-end): bug in viewing posts
Diffstat (limited to 'src/app/(main)/(home)/_components')
-rw-r--r--src/app/(main)/(home)/_components/posts.tsx58
1 files changed, 5 insertions, 53 deletions
diff --git a/src/app/(main)/(home)/_components/posts.tsx b/src/app/(main)/(home)/_components/posts.tsx
index 00ada0c..0eacce1 100644
--- a/src/app/(main)/(home)/_components/posts.tsx
+++ b/src/app/(main)/(home)/_components/posts.tsx
@@ -2,73 +2,25 @@ import { Icons } from '@/components/icons/icons';
import { PostCard } from '@/components/posts/post-card';
import { Section } from '@/components/section';
import { buttonVariants } from '@/components/ui/button';
-import type { Page } from '@/lib/source';
import type { BlogPost } from '@/lib/payload-posts';
import Link from 'next/link';
-// 统一的文章数据格式
-interface UnifiedPost {
- title: string;
- description: string;
- image?: string | null;
- url: string;
- date: string;
- author: string;
- tags?: string[];
-}
-
-// 将 MDX Page 转换为统一格式
-function transformMdxPost(post: Page): UnifiedPost {
- return {
- title: post.data.title,
- description: post.data.description ?? '',
- image: post.data.image,
- url: post.url,
- date: new Date(post.data.date).toDateString(),
- author: post.data.author,
- tags: post.data.tags,
- };
-}
-
-// 将 Payload BlogPost 转换为统一格式
-function transformPayloadPost(post: BlogPost): UnifiedPost {
- return {
- title: post.title,
- description: post.description,
- image: post.image,
- url: post.url,
- date: post.date.toDateString(),
- author: post.author,
- tags: post.tags,
- };
-}
-
interface PostsProps {
- mdxPosts?: Page[];
- payloadPosts?: BlogPost[];
+ posts: BlogPost[];
}
-export default function Posts({ mdxPosts = [], payloadPosts = [] }: PostsProps) {
- // 转换并合并所有文章
- const allPosts: UnifiedPost[] = [
- ...mdxPosts.map(transformMdxPost),
- ...payloadPosts.map(transformPayloadPost),
- ];
-
- // 按日期排序
- allPosts.sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime());
-
+export default function Posts({ posts }: PostsProps) {
return (
<Section>
<div className='grid divide-y divide-dashed divide-border/70 text-left dark:divide-border'>
- {allPosts.map((post) => (
+ {posts.map((post) => (
<PostCard
title={post.title}
description={post.description}
image={post.image}
url={post.url}
- date={post.date}
- key={post.url}
+ date={post.date.toDateString()}
+ key={post.id}
author={post.author}
tags={post.tags}
/>