hookehuyr

fix(profile): 更新用户信息后同步auth上下文和localStorage

在头像和用户名修改成功后,更新auth上下文中的用户信息并同步到localStorage,保持状态一致
<!--
* @Date: 2025-03-24 13:04:21
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-06-06 11:22:30
* @LastEditTime: 2025-06-09 11:47:32
* @FilePath: /mlaj/src/views/profile/settings/AvatarSettingPage.vue
* @Description: 修改头像页面
-->
......@@ -65,7 +65,6 @@ const $route = useRoute();
const { currentUser } = useAuth();
useTitle($route.meta.title);
// 用户头像
const userAvatar = ref("");
......@@ -165,6 +164,13 @@ const handleAvatarChange = async (file) => {
userAvatar.value = data.src;
// 更新用户信息
await updateUserInfoAPI({ avatar: data.src });
// 更新auth上下文中的用户信息
currentUser.value = {
...currentUser.value,
avatar: userAvatar.value
};
// 更新localStorage中的用户信息
localStorage.setItem('currentUser', JSON.stringify(currentUser.value));
showToast('头像上传成功');
}
}
......
......@@ -45,10 +45,14 @@ import FrostedGlass from '@/components/ui/FrostedGlass.vue';
import { getUserInfoAPI, updateUserInfoAPI } from '@/api/users';
import { showToast } from 'vant';
import { useTitle } from '@vueuse/core';
import { useAuth } from '@/contexts/auth';
const $route = useRoute();
useTitle($route.meta.title);
// 获取用户认证状态
const { currentUser } = useAuth()
// 用户名
const username = ref('');
......@@ -72,8 +76,15 @@ const handleUsernameChange = async () => {
}
try {
const { code } = await updateUserInfoAPI({ name: username.value });
const { code, data } = await updateUserInfoAPI({ name: username.value });
if (code) {
// 更新auth上下文中的用户信息
currentUser.value = {
...currentUser.value,
name: username.value
};
// 更新localStorage中的用户信息
localStorage.setItem('currentUser', JSON.stringify(currentUser.value));
showToast('用户名修改成功');
}
} catch (error) {
......