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
+42 -46

No files matched your search

+19 -14
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,23 +7,29 @@ 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>
{/*todo: to be update*/ } {/*todo: to be update*/ }
{/*<Link href={ `/blog/${ name }` }>*/} {/*<Link href={ `/blog/${ name }` }>*/ }
<Card> <Card>
<CardHeader> <CardHeader>
<p className={ 'font-bold' }>{ title }</p> <p className={ 'font-bold' }>{ title }</p>
</CardHeader> </CardHeader>
<Divider /> <Divider />
<CardBody> <CardBody>
{ desc } { summary }
</CardBody> </CardBody>
</Card> <Divider />
{/*</Link>*/} <CardBody>
{ last_update }
</CardBody>
</Card>
{/*</Link>*/ }
</div> </div>
); );
+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
};
} }
+19 -18
View File
@@ -4,26 +4,27 @@ import BlogPostCard from '@/app/blog/BlogPostCard';
async function Blog() { async function Blog() {
const res = await fetch_posts_list(); try {
if (!res.ok) { const res = await fetch_posts_list();
console.log(res.error); let posts = res['posts'];
return; return (
// blog list
<ul className={ 'flex flex-col items-center w-full max-w-[1024px]' }>
{ posts.map((post: JSON, key: React.Key | null | undefined) => (
<li key={ key } className={ 'my-3.5 mx-7 w-[80%]' }>
<BlogPostCard post={ post } />
</li>)
) }
</ul>
);
} catch (e: any) {
return (
<>
{ e.toString() }
</>
);
} }
const posts = res.value;
console.log(posts);
return (
// blog list
<ul className={ 'flex flex-col items-center w-full max-w-[1024px]' }>
{ posts.map((post, key) => (
<li key={ key } className={ 'my-3.5 mx-7 w-[80%]' }>
<BlogPostCard post={ post } />
</li>)
) }
</ul>
);
} }
export default Blog; export default Blog;