|
|
@@ -17,7 +17,8 @@ import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
|
|
|
|
import { Images } from '@/constants/images';
|
|
|
import { useAuth } from '@/contexts/AuthContext';
|
|
|
-import { getUserInfo, updateNickname, updateUserInfo } from '@/services/user';
|
|
|
+import { uploadFile } from '@/services/base';
|
|
|
+import { getUserInfo, updateAvatar, updateNickname, updateUserInfo } from '@/services/user';
|
|
|
|
|
|
interface FormData {
|
|
|
nickname: string;
|
|
|
@@ -69,7 +70,7 @@ export default function ProfileScreen() {
|
|
|
}
|
|
|
|
|
|
const result = await ImagePicker.launchImageLibraryAsync({
|
|
|
- mediaTypes: ImagePicker.MediaTypeOptions.Images,
|
|
|
+ mediaTypes: ['images'],
|
|
|
allowsEditing: true,
|
|
|
aspect: [1, 1],
|
|
|
quality: 0.8,
|
|
|
@@ -78,7 +79,6 @@ export default function ProfileScreen() {
|
|
|
if (!result.canceled && result.assets[0]) {
|
|
|
const imageUri = result.assets[0].uri;
|
|
|
setFormData(prev => ({ ...prev, avatar: imageUri }));
|
|
|
- Alert.alert('提示', '头像选择成功,保存时将更新');
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.error('选择头像失败:', error);
|
|
|
@@ -99,6 +99,21 @@ export default function ProfileScreen() {
|
|
|
try {
|
|
|
setLoading(true);
|
|
|
|
|
|
+ // 如果头像是本地文件(file://开头),需要先上传
|
|
|
+ let avatarUrl = formData.avatar;
|
|
|
+ if (formData.avatar && formData.avatar.startsWith('file://')) {
|
|
|
+ const uploadedUrl = await uploadFile(formData.avatar, 'avatar');
|
|
|
+ if (uploadedUrl) {
|
|
|
+ avatarUrl = uploadedUrl;
|
|
|
+ // 更新头像
|
|
|
+ await updateAvatar(avatarUrl);
|
|
|
+ } else {
|
|
|
+ Alert.alert('提示', '头像上传失败');
|
|
|
+ setLoading(false);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// 更新昵称
|
|
|
const nicknameRes = await updateNickname(formData.nickname);
|
|
|
|