import Choice from '@/components/user-message.tsx/choice'; import Done from '@/components/user-message.tsx/done'; import Look from '@/components/user-message.tsx/look'; import UserName from '@/components/user-message.tsx/userName'; import { checkAuthStatus } from '@/lib/auth'; import { FileUploadItem } from '@/lib/background-uploader/types'; import { fetchApi } from '@/lib/server-api-util'; import { User } from '@/types/user'; import { useLocalSearchParams, useRouter } from 'expo-router'; import { useEffect, useState } from 'react'; import { KeyboardAvoidingView, Platform, ScrollView, StatusBar, View } from 'react-native'; export type Steps = "userName" | "look" | "choice" | "done"; export default function UserMessage() { const router = useRouter(); // 步骤 const [steps, setSteps] = useState("userName") const [username, setUsername] = useState('') const [avatar, setAvatar] = useState('') const [fileData, setFileData] = useState([]) const [isLoading, setIsLoading] = useState(false); const [userInfo, setUserInfo] = useState(null); const statusBarHeight = StatusBar?.currentHeight ?? 0; // 获取路由参数 const params = useLocalSearchParams(); const { username: usernameParam } = params; const { from } = useLocalSearchParams<{ from?: string }>(); useEffect(() => { checkAuthStatus(router); }, []); // 获取用户信息 const getUserInfo = async () => { const res = await fetchApi("/iam/user-info"); setUserInfo(res); setUsername(res?.nickname || ''); setAvatar(res?.avatar_file_url || ''); } const handleUser = () => { setIsLoading(true); fetchApi("/iam/user/info", { method: "POST", body: JSON.stringify({ username, avatar_file_id: fileData?.[0]?.originalFile?.file_id }) }).then(() => { setIsLoading(false); if (from) { router.replace(from as any); } else { router.replace('/ask'); } }).catch((error: any) => { console.error('Failed to save user info:', error); setIsLoading(false); }); }; useEffect(() => { getUserInfo(); setSteps("userName") }, [usernameParam]); return ( {(() => { const components = { userName: ( ), look: ( ), choice: , done: }; return components[steps as keyof typeof components] || null; })()} ); }