perf: 完善新用户引导
This commit is contained in:
@@ -8,6 +8,7 @@ import type {
|
||||
import { UserRole, MembershipStatus } from '@mp-pilates/shared'
|
||||
import { wxLogin, isLoggedIn, logout as authLogout } from '../utils/auth'
|
||||
import { get, put } from '../utils/request'
|
||||
import { ROUTES } from '../utils/routes'
|
||||
|
||||
export const useUserStore = defineStore('user', () => {
|
||||
// State
|
||||
@@ -33,13 +34,27 @@ export const useUserStore = defineStore('user', () => {
|
||||
const result = await wxLogin()
|
||||
token.value = result.token
|
||||
user.value = result.user
|
||||
return result.user
|
||||
return { user: result.user, isNewUser: result.isNewUser }
|
||||
} catch (err) {
|
||||
console.error('Login failed:', err)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Login, redirect new users to complete profile, and fetch post-login data.
|
||||
* Returns isNewUser so callers know whether navigation was intercepted.
|
||||
*/
|
||||
async function loginWithSetup(): Promise<{ isNewUser: boolean }> {
|
||||
const { isNewUser } = await login()
|
||||
if (isNewUser) {
|
||||
uni.navigateTo({ url: ROUTES.PROFILE_INFO_FIRST_LOGIN })
|
||||
return { isNewUser: true }
|
||||
}
|
||||
await Promise.all([fetchProfile(), fetchMemberships()])
|
||||
return { isNewUser: false }
|
||||
}
|
||||
|
||||
async function fetchProfile() {
|
||||
if (!isLoggedIn()) return
|
||||
try {
|
||||
@@ -99,6 +114,7 @@ export const useUserStore = defineStore('user', () => {
|
||||
activeMemberships,
|
||||
hasValidMembership,
|
||||
login,
|
||||
loginWithSetup,
|
||||
fetchProfile,
|
||||
fetchStats,
|
||||
fetchMemberships,
|
||||
|
||||
Reference in New Issue
Block a user