From 536465aa543540b2b720e2a5751921cf5a3b14a0 Mon Sep 17 00:00:00 2001 From: zetaloop Date: Sat, 28 Feb 2026 16:42:33 +0800 Subject: [PATCH] feat(users): fetch user by id from backend --- app/(main)/user/[id]/page.tsx | 2 +- lib/api/users.ts | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/(main)/user/[id]/page.tsx b/app/(main)/user/[id]/page.tsx index 16c11ef..a26ba8c 100644 --- a/app/(main)/user/[id]/page.tsx +++ b/app/(main)/user/[id]/page.tsx @@ -15,7 +15,7 @@ import { notFound } from "next/navigation" export default async function UserProfilePage({ params }: { params: Promise<{ id: string }> }) { const { id } = await params - const user = getUserById(id) + const user = await getUserById(id) if (!user) { notFound() diff --git a/lib/api/users.ts b/lib/api/users.ts index 59d4b39..bd55a6a 100644 --- a/lib/api/users.ts +++ b/lib/api/users.ts @@ -1,4 +1,5 @@ import { httpJson } from "@/lib/api/http" +import { isApiError } from "@/lib/errors" import { mockUsers } from "@/lib/mock" import type { User } from "@/lib/types" @@ -6,8 +7,13 @@ export function listUsers() { return mockUsers } -export function getUserById(userId: string) { - return mockUsers.find((user) => user.id === userId) +export async function getUserById(userId: string): Promise { + try { + return await httpJson(`/api/v1/users/${userId}`) + } catch (err) { + if (isApiError(err) && err.code === 404) return undefined + throw err + } } export async function getCurrentUserForLogin(): Promise {