增加用户资料修改

This commit is contained in:
yml2213
2026-05-23 09:00:23 +08:00
parent 83b55fa911
commit d1f46fd02e
8 changed files with 336 additions and 15 deletions
+17 -2
View File
@@ -1,13 +1,15 @@
import { defineStore } from 'pinia'
import { fetchMe, loginWithSms, type AuthUser } from '@/api/auth'
import { fetchMe, loginWithSms, updateMe, type AuthUser } from '@/api/auth'
export const useSessionStore = defineStore('session', {
state: () => ({
token: localStorage.getItem('access_token') || '',
refreshToken: localStorage.getItem('refresh_token') || '',
userId: Number(localStorage.getItem('user_id') || 0),
phone: '',
phone: localStorage.getItem('phone') || '',
nickname: localStorage.getItem('nickname') || '',
avatarUrl: localStorage.getItem('avatar_url') || '',
realnameStatus: localStorage.getItem('realname_status') || 'unknown',
}),
actions: {
@@ -21,6 +23,11 @@ export const useSessionStore = defineStore('session', {
this.applyUser(user)
return user
},
async updateProfile(payload: { nickname: string; avatar_url: string }) {
const user = await updateMe(payload)
this.applyUser(user)
return user
},
logout() {
this.token = ''
this.refreshToken = ''
@@ -30,6 +37,9 @@ export const useSessionStore = defineStore('session', {
localStorage.removeItem('access_token')
localStorage.removeItem('refresh_token')
localStorage.removeItem('user_id')
localStorage.removeItem('phone')
localStorage.removeItem('nickname')
localStorage.removeItem('avatar_url')
localStorage.removeItem('realname_status')
},
applySession(user: AuthUser, accessToken: string, refreshToken: string) {
@@ -45,6 +55,11 @@ export const useSessionStore = defineStore('session', {
this.userId = user.id
localStorage.setItem('user_id', String(user.id))
this.phone = user.phone
localStorage.setItem('phone', user.phone)
this.nickname = user.nickname
localStorage.setItem('nickname', user.nickname)
this.avatarUrl = user.avatar_url
localStorage.setItem('avatar_url', user.avatar_url)
this.realnameStatus = user.realname_status
localStorage.setItem('realname_status', user.realname_status)
},