diff --git a/src/layout/FullLayoutV1.astro b/src/layout/FullLayoutV1.astro index 9161f42..6abb87f 100644 --- a/src/layout/FullLayoutV1.astro +++ b/src/layout/FullLayoutV1.astro @@ -30,7 +30,7 @@ const { title = '小帕的小窝', withGap = false } = Astro.props 小帕的小窝
  • - 文章 + 文章
  • Promise = async (blog_id: number) => { +) => Promise = async (blog_id: number) => { const resp = await legacyClient.get(`/v1/blog/${blog_id}`, { validateStatus: (status) => status == 200 || status == 404, }) diff --git a/src/lib/apis/legacy/user.ts b/src/lib/apis/legacy/user.ts new file mode 100644 index 0000000..4cd639d --- /dev/null +++ b/src/lib/apis/legacy/user.ts @@ -0,0 +1,27 @@ +import { legacyClient } from '../clients' + +export type LegacyUserType = { + id: number + created_at: Date + username: string + nickname: string + permission: number + introduction: string + avatar: { + image_url: string + } +} + +export const getUserInfo = async ({ username }: { username: string }) => { + const resp = await legacyClient.get(`/v1/user/${username}/info`) + if (resp.status != 200) { + return null + } + return { + ...resp.data, + created_at: new Date(resp.data.created_at), + avatar: { + image_url: 'https://legacy.passthem.top' + resp.data.avatar.image_url, + }, + } as LegacyUserType +} diff --git a/src/pages/blogs.astro b/src/pages/blog.astro similarity index 94% rename from src/pages/blogs.astro rename to src/pages/blog.astro index d49d806..f5d9519 100644 --- a/src/pages/blogs.astro +++ b/src/pages/blog.astro @@ -1,6 +1,6 @@ --- import FullLayoutV1 from '../layout/FullLayoutV1.astro' -import { listBlogs, type ListBlogItemType } from '../lib/apis/legacy/blog' +import { listBlogs, type LegacyListBlogItemType } from '../lib/apis/legacy/blog' import BlogCard from '../components/BlogCard.astro' import BlogHeaderImage from '../assets/blogs-header.webp' import { Image } from 'astro:assets' @@ -10,7 +10,7 @@ export const prerender = false const _page = parseInt(Astro.url.searchParams.get('page') || '1') const page = isNaN(_page) ? 1 : Math.max(1, _page) -let blogs: ListBlogItemType[] = [] +let blogs: LegacyListBlogItemType[] = [] try { blogs = await listBlogs({ page, limit: 100 }) @@ -45,7 +45,7 @@ try { blogs.map((blog) => ( { blogData.author && (
    - +
    { } export const GET = (async (context) => { - let blogs: ListBlogItemType[] = [] + let blogs: LegacyListBlogItemType[] = [] let pid = 0 let newBlogs = [] @@ -76,7 +76,7 @@ export const GET = (async (context) => { const rssItem: RSSFeedItem = { title: blog.title, description: `一篇由 ${blog.author.nickname} 写的博客`, - link: `${site}/blogs/${blog.id}`, + link: `${site}/blog/${blog.id}`, pubDate: new Date(blog.created_at), content: await _render(blogContent), author: blog.author.nickname, diff --git a/src/pages/user/[user_id].astro b/src/pages/user/[user_id].astro new file mode 100644 index 0000000..bd9115e --- /dev/null +++ b/src/pages/user/[user_id].astro @@ -0,0 +1,89 @@ +--- +import FullLayoutV1 from '../../layout/FullLayoutV1.astro' +import { getUserInfo, type LegacyUserType } from '../../lib/apis/legacy/user' +import { Image } from 'astro:assets' + +const { user_id = '' } = Astro.params +var user_data: LegacyUserType + +try { + const _user_data = await getUserInfo({ username: user_id }) + if (_user_data === null) { + return Astro.redirect('/404') + } + user_data = _user_data +} catch (e) { + console.warn('访问了不存在的用户', user_id) + console.warn(e) + return Astro.redirect('/404') +} +--- + + +
    +
    +
    + `用户 +
    + +
    +
    +
    + +