import debug from 'debug'; const rpcLogger = debug('frontend:api:rpc'); import React, { useEffect, useState } from 'react'; import { UserIcon, PencilIcon } from '@heroicons/react/24/outline'; import { useParams, useNavigate } from 'react-router-dom'; import { userClient } from '@/client/api'; import { useAuth } from '@/client/home/hooks/AuthProvider'; import type { UserEntity } from '@/server/modules/users/user.entity'; const MemberPage: React.FC = () => { const [user, setUser] = useState(null); const [loading, setLoading] = useState(true); const { id: userId } = useParams<{ id: string }>(); const id = Number(userId); const navigate = useNavigate(); const { user: currentUser } = useAuth(); // 获取用户资料 const fetchUserProfile = async () => { if (!id) return; try { setLoading(true); rpcLogger('Fetching user profile for id: %s', id); const response = await userClient[':id'].$get({ param: { id } }); if (!response.ok) throw new Error('获取用户资料失败'); const userData = await response.json(); setUser(userData); } catch (error) { console.error('Error fetching user profile:', error); } finally { setLoading(false); } }; useEffect(() => { fetchUserProfile(); }, [id]); if (loading) { return (
); } if (!user) { return (

用户不存在

); } return (
{/* 用户资料卡片 */}
{user.avatar ? ( {user.nickname ) : ( )}

{user.nickname || user.username}

0

内容

0

关注

0

粉丝

{currentUser && currentUser.id === user.id && ( )} {(user as any).bio && (

{(user as any).bio}

)}
{(user as any).location && (
{(user as any).location}
)} {(user as any).website && ( {(user as any).website} )}
{/* 用户内容区域 */}

个人资料

用户名

{user.username}

电子邮箱

{user.email || '未设置'}

注册时间

{user.createdAt ? new Date(user.createdAt).toLocaleDateString() : '未知'}

最后登录

{user.updatedAt ? new Date(user.updatedAt).toLocaleString() : '从未登录'}

); }; export default MemberPage;