fix(frontend/Blog) fix compatibility with new backend

This commit is contained in:
lumither committed 2024-05-04 00:51:32 +08:00
1 parent b17e8a19eb
commit a9ba365bac
3 files changed
+24 -28

No files matched your search

+9 -4
View File
@@ -1,5 +1,4 @@
import React from 'react'; import React from 'react';
import Link from 'next/link';
import { Card, CardBody, CardHeader } from '@nextui-org/card'; import { Card, CardBody, CardHeader } from '@nextui-org/card';
import { Divider } from '@nextui-org/react'; import { Divider } from '@nextui-org/react';
@@ -8,8 +7,10 @@ type Props = {
} }
function BlogPostCard({ post }: Props) { function BlogPostCard({ post }: Props) {
const name = (post as any)['name']; let title = (post as any)['title'];
const { title, desc } = (post as any)['meta'] as { title: string, desc: string }; let summary = (post as any)['summary'];
let last_update = (post as any)['last_update'];
return ( return (
<div> <div>
@@ -21,7 +22,11 @@ function BlogPostCard({ post }: Props) {
</CardHeader> </CardHeader>
<Divider /> <Divider />
<CardBody> <CardBody>
{ desc } { summary }
</CardBody>
<Divider />
<CardBody>
{ last_update }
</CardBody> </CardBody>
</Card> </Card>
{/*</Link>*/ } {/*</Link>*/ }
+4 -14
View File
@@ -1,19 +1,9 @@
import { Result } from '@/app/public/type/Result'; export default async function fetch_posts_list(): Promise<any> {
const response = await fetch(`http://localhost:${ process.env.BACKEND_PORT }/api/get/post_list`);
export default async function fetch_posts_list(): Promise<Result<JSON[], Error>> {
const response = await fetch(`${ process.env.BLOG_ENDPOINT }/posts/idx.json`);
if (!response.ok) { if (!response.ok) {
return { throw new Error(response.statusText);
ok: false,
error: new Error(response.statusText)
};
} }
const res = await response.json(); return await response.json();
const posts = res['idx'].filter((posts: { type: string }) => posts.type === 'md');
return {
ok: true,
value: posts
};
} }
+11 -10
View File
@@ -4,26 +4,27 @@ import BlogPostCard from '@/app/blog/BlogPostCard';
async function Blog() { async function Blog() {
try {
const res = await fetch_posts_list(); const res = await fetch_posts_list();
if (!res.ok) { let posts = res['posts'];
console.log(res.error);
return;
}
const posts = res.value;
console.log(posts);
return ( return (
// blog list // blog list
<ul className={ 'flex flex-col items-center w-full max-w-[1024px]' }> <ul className={ 'flex flex-col items-center w-full max-w-[1024px]' }>
{ posts.map((post, key) => ( { posts.map((post: JSON, key: React.Key | null | undefined) => (
<li key={ key } className={ 'my-3.5 mx-7 w-[80%]' }> <li key={ key } className={ 'my-3.5 mx-7 w-[80%]' }>
<BlogPostCard post={ post } /> <BlogPostCard post={ post } />
</li>) </li>)
) } ) }
</ul> </ul>
); );
} catch (e: any) {
return (
<>
{ e.toString() }
</>
);
}
} }
export default Blog; export default Blog;