修复
This commit is contained in:
@@ -7,9 +7,10 @@ export const userState = reactive({
|
||||
token: '',
|
||||
refreshToken: '',
|
||||
userInfo: {
|
||||
userId: '',
|
||||
id: '',
|
||||
username: '',
|
||||
email: '',
|
||||
nickname: '',
|
||||
avatar: ''
|
||||
},
|
||||
subscription: {
|
||||
@@ -75,21 +76,23 @@ export const userActions = {
|
||||
// 登录
|
||||
async login(credentials) {
|
||||
const res = await api.auth.login(credentials)
|
||||
const { token, refreshToken, ...userInfo } = res.data
|
||||
const { token, refreshToken, user } = res.data
|
||||
|
||||
// 保存到本地存储
|
||||
localStorage.setItem('token', token)
|
||||
localStorage.setItem('refreshToken', refreshToken)
|
||||
localStorage.setItem('userInfo', JSON.stringify(userInfo))
|
||||
localStorage.setItem('userInfo', JSON.stringify(user))
|
||||
|
||||
// 更新状态
|
||||
userState.isLoggedIn = true
|
||||
userState.token = token
|
||||
userState.refreshToken = refreshToken
|
||||
userState.userInfo = userInfo
|
||||
userState.userInfo = user
|
||||
|
||||
// 获取用户订阅信息
|
||||
await this.getSubscription()
|
||||
// 获取用户订阅信息(不阻塞登录流程)
|
||||
this.getSubscription().catch(err => {
|
||||
console.error('登录后获取订阅信息失败:', err)
|
||||
})
|
||||
|
||||
return res
|
||||
},
|
||||
@@ -97,21 +100,24 @@ export const userActions = {
|
||||
// 注册
|
||||
async register(userData) {
|
||||
const res = await api.auth.register(userData)
|
||||
const { token, refreshToken, ...userInfo } = res.data
|
||||
// 根据后端实际返回的数据结构提取数据
|
||||
const { token, refreshToken, user } = res.data
|
||||
|
||||
// 保存到本地存储
|
||||
localStorage.setItem('token', token)
|
||||
localStorage.setItem('refreshToken', refreshToken)
|
||||
localStorage.setItem('userInfo', JSON.stringify(userInfo))
|
||||
localStorage.setItem('userInfo', JSON.stringify(user))
|
||||
|
||||
// 更新状态
|
||||
userState.isLoggedIn = true
|
||||
userState.token = token
|
||||
userState.refreshToken = refreshToken
|
||||
userState.userInfo = userInfo
|
||||
userState.userInfo = user
|
||||
|
||||
// 获取用户订阅信息
|
||||
await this.getSubscription()
|
||||
// 获取订阅信息(不阻塞注册流程)
|
||||
this.getSubscription().catch(err => {
|
||||
console.error('注册后获取订阅信息失败:', err)
|
||||
})
|
||||
|
||||
return res
|
||||
},
|
||||
@@ -132,49 +138,53 @@ export const userActions = {
|
||||
userState.token = ''
|
||||
userState.refreshToken = ''
|
||||
userState.userInfo = {
|
||||
userId: '',
|
||||
id: '',
|
||||
username: '',
|
||||
email: '',
|
||||
nickname: '',
|
||||
avatar: ''
|
||||
}
|
||||
},
|
||||
|
||||
// 刷新token
|
||||
async refreshToken() {
|
||||
try {
|
||||
const refreshToken = userState.refreshToken || localStorage.getItem('refreshToken')
|
||||
if (!refreshToken) {
|
||||
throw new Error('没有刷新令牌')
|
||||
async refreshToken() {
|
||||
try {
|
||||
const refreshToken = userState.refreshToken || localStorage.getItem('refreshToken')
|
||||
if (!refreshToken) {
|
||||
throw new Error('没有刷新令牌')
|
||||
}
|
||||
|
||||
const res = await api.auth.refreshToken(refreshToken)
|
||||
// 根据后端实际返回的数据结构提取数据
|
||||
const { token: newToken, refreshToken: newRefreshToken } = res.data
|
||||
|
||||
// 更新本地存储
|
||||
localStorage.setItem('token', newToken)
|
||||
localStorage.setItem('refreshToken', newRefreshToken)
|
||||
|
||||
// 更新状态
|
||||
userState.token = newToken
|
||||
userState.refreshToken = newRefreshToken
|
||||
|
||||
return res
|
||||
} catch (error) {
|
||||
// 刷新失败,退出登录
|
||||
await this.logout()
|
||||
throw error
|
||||
}
|
||||
|
||||
const res = await api.auth.refreshToken(refreshToken)
|
||||
const { token: newToken, refreshToken: newRefreshToken } = res.data
|
||||
|
||||
// 更新本地存储
|
||||
localStorage.setItem('token', newToken)
|
||||
localStorage.setItem('refreshToken', newRefreshToken)
|
||||
|
||||
// 更新状态
|
||||
userState.token = newToken
|
||||
userState.refreshToken = newRefreshToken
|
||||
|
||||
return res
|
||||
} catch (error) {
|
||||
// 刷新失败,退出登录
|
||||
await this.logout()
|
||||
throw error
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
// 获取用户订阅信息
|
||||
async getSubscription() {
|
||||
try {
|
||||
const res = await api.user.getSubscription()
|
||||
userState.subscription = res.data
|
||||
// 根据后端实际返回的数据结构提取数据
|
||||
userState.subscription = res.data.data
|
||||
return res
|
||||
} catch (error) {
|
||||
console.error('获取订阅信息失败:', error)
|
||||
throw error
|
||||
// 不抛出错误,避免影响登录流程
|
||||
return null
|
||||
}
|
||||
},
|
||||
|
||||
@@ -182,11 +192,14 @@ export const userActions = {
|
||||
async fetchUserInfo() {
|
||||
if (!userState.token) return;
|
||||
|
||||
const response = await api.user.getUserInfo();
|
||||
if (response.data.code === 200) {
|
||||
userState.userInfo = response.data.data;
|
||||
localStorage.setItem('userInfo', JSON.stringify(response.data.data));
|
||||
const response = await api.user.getUserProfile();
|
||||
// 根据后端实际返回的数据结构提取数据
|
||||
if (response.data) {
|
||||
userState.userInfo = response.data;
|
||||
localStorage.setItem('userInfo', JSON.stringify(response.data));
|
||||
return response.data;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
// 初始化用户状态(从本地存储恢复)
|
||||
@@ -203,8 +216,10 @@ export const userActions = {
|
||||
userState.refreshToken = refreshToken || ''
|
||||
userState.userInfo = userInfo
|
||||
|
||||
// 获取订阅信息
|
||||
this.getSubscription()
|
||||
// 获取订阅信息(不阻塞初始化流程)
|
||||
this.getSubscription().catch(err => {
|
||||
console.error('初始化获取订阅信息失败:', err)
|
||||
})
|
||||
} catch (error) {
|
||||
console.error('解析用户信息失败:', error)
|
||||
// 清除无效数据
|
||||
@@ -229,18 +244,30 @@ export const mailActions = {
|
||||
|
||||
// 根据类型更新不同的列表
|
||||
if (type === 'INBOX') {
|
||||
mailState.inboxList = res.data.list
|
||||
if (page === 1) {
|
||||
mailState.inboxList = res.data?.list || []
|
||||
} else {
|
||||
mailState.inboxList = [...mailState.inboxList, ...(res.data?.list || [])]
|
||||
}
|
||||
} else if (type === 'SENT') {
|
||||
mailState.sentList = res.data.list
|
||||
if (page === 1) {
|
||||
mailState.sentList = res.data?.list || []
|
||||
} else {
|
||||
mailState.sentList = [...mailState.sentList, ...(res.data?.list || [])]
|
||||
}
|
||||
} else if (type === 'DRAFT') {
|
||||
mailState.draftList = res.data.list
|
||||
if (page === 1) {
|
||||
mailState.draftList = res.data?.list || []
|
||||
} else {
|
||||
mailState.draftList = [...mailState.draftList, ...(res.data?.list || [])]
|
||||
}
|
||||
}
|
||||
|
||||
// 更新分页信息
|
||||
mailState.pagination = {
|
||||
page: res.data.page,
|
||||
size: res.data.size,
|
||||
total: res.data.total
|
||||
page: res.data?.page || page,
|
||||
size: res.data?.size || size,
|
||||
total: res.data?.total || 0
|
||||
}
|
||||
|
||||
return res
|
||||
@@ -359,12 +386,26 @@ export const capsuleActions = {
|
||||
try {
|
||||
capsuleState.loading = true
|
||||
const res = await api.capsule.getCapsules()
|
||||
capsuleState.capsules = res.data.capsules
|
||||
capsuleState.scene = res.data.scene
|
||||
capsuleState.background = res.data.background
|
||||
|
||||
// 添加空值检查
|
||||
if (res && res.data) {
|
||||
capsuleState.capsules = res.data.capsules || []
|
||||
capsuleState.scene = res.data.scene || 'SPACE'
|
||||
capsuleState.background = res.data.background || ''
|
||||
} else {
|
||||
// 如果没有数据,设置为空数组
|
||||
capsuleState.capsules = []
|
||||
capsuleState.scene = 'SPACE'
|
||||
capsuleState.background = ''
|
||||
}
|
||||
|
||||
return res
|
||||
} catch (error) {
|
||||
console.error('获取胶囊列表失败:', error)
|
||||
// 出错时也要设置为空数组,避免页面出错
|
||||
capsuleState.capsules = []
|
||||
capsuleState.scene = 'SPACE'
|
||||
capsuleState.background = ''
|
||||
throw error
|
||||
} finally {
|
||||
capsuleState.loading = false
|
||||
|
||||
Reference in New Issue
Block a user