diff --git a/client/mobile/api.ts b/client/mobile/api.ts index 647cd66..d2da234 100644 --- a/client/mobile/api.ts +++ b/client/mobile/api.ts @@ -152,7 +152,7 @@ interface UsersResponse { }; } -interface UserResponse { +export interface UserResponse { data: User; message?: string; } @@ -227,7 +227,7 @@ export const UserAPI = { // 获取当前用户信息 getCurrentUser: async (): Promise => { try { - const response = await axios.get(`${API_BASE_URL}/users/me`); + const response = await axios.get(`${API_BASE_URL}/users/me/profile`); return response.data; } catch (error) { throw error; @@ -237,7 +237,7 @@ export const UserAPI = { // 更新当前用户信息 updateCurrentUser: async (userData: Partial): Promise => { try { - const response = await axios.put(`${API_BASE_URL}/users/me`, userData); + const response = await axios.put(`${API_BASE_URL}/users/me/profile`, userData); return response.data; } catch (error) { throw error; diff --git a/client/mobile/pages_settings.tsx b/client/mobile/pages_settings.tsx index 6fa6a5c..8a581e4 100644 --- a/client/mobile/pages_settings.tsx +++ b/client/mobile/pages_settings.tsx @@ -1,11 +1,18 @@ import React from 'react' import { useForm } from 'react-hook-form' -import { useMutation } from '@tanstack/react-query' +import { useMutation, useQuery } from '@tanstack/react-query' import { UserAPI } from './api.ts' -import { useAuth } from './hooks.tsx' +import type { User } from '../share/types.ts' +import type { UserResponse } from './api.ts' export default function SettingsPage() { - const { register, handleSubmit, formState: { errors } } = useForm<{ + const { data: userResponse, isLoading } = useQuery({ + queryKey: ['currentUser'], + queryFn: () => UserAPI.getCurrentUser(), + select: (response) => response.data + }) + + const { register, handleSubmit, formState: { errors }, reset } = useForm<{ nickname: string email: string phone?: string @@ -42,6 +49,27 @@ export default function SettingsPage() { updateUser(data) } + React.useEffect(() => { + if (userResponse) { + reset({ + nickname: userResponse.nickname || '', + email: userResponse.email || '', + phone: userResponse.phone || '' + }) + } + }, [userResponse, reset]) + + if (isLoading) { + return ( +
+

设置

+
+

加载中...

+
+
+ ) + } + return (

设置

diff --git a/server/routes_users.ts b/server/routes_users.ts index 1db6478..53c0fb2 100644 --- a/server/routes_users.ts +++ b/server/routes_users.ts @@ -238,14 +238,14 @@ export function createUserRoutes(withAuth: WithAuth) { }) // 获取当前用户信息 - usersRoutes.get('/me', withAuth, async (c) => { + usersRoutes.get('/me/profile', withAuth, async (c) => { try { const user = c.get('user')! const apiClient = c.get('apiClient') const userData = await apiClient.database.table('users') .where('id', user.id) - .select('id', 'username', 'nickname', 'email', 'phone', 'role', 'created_at') + .select('id', 'username', 'nickname', 'email', 'phone', 'created_at') .first() if (!user) { @@ -253,7 +253,7 @@ export function createUserRoutes(withAuth: WithAuth) { } return c.json({ - data: user, + data: userData, message: '获取用户详情成功' }) } catch (error) { @@ -263,7 +263,7 @@ export function createUserRoutes(withAuth: WithAuth) { }) // 更新当前用户信息 - usersRoutes.put('/me', withAuth, async (c) => { + usersRoutes.put('/me/profile', withAuth, async (c) => { try { const user = c.get('user')! const apiClient = c.get('apiClient') @@ -294,7 +294,7 @@ export function createUserRoutes(withAuth: WithAuth) { const updatedUser = await apiClient.database.table('users') .where('id', user.id) - .select('id', 'username', 'nickname', 'email', 'phone', 'role', 'created_at') + .select('id', 'username', 'nickname', 'email', 'phone', 'created_at') .first() return c.json({