This commit is contained in:
@@ -135,9 +135,9 @@ export const useUserStore = defineStore('user', () => {
|
||||
// 检查用户信息是否完整
|
||||
const isUserInfoComplete = computed(() => {
|
||||
return user.value &&
|
||||
user.value.id &&
|
||||
user.value.phone &&
|
||||
user.value.user_type !== undefined
|
||||
user.value.id &&
|
||||
user.value.phone &&
|
||||
user.value.user_type !== undefined
|
||||
})
|
||||
|
||||
// 强制刷新用户信息
|
||||
@@ -416,44 +416,73 @@ export const useUserStore = defineStore('user', () => {
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化标志,防止重复初始化
|
||||
let isInitializing = false
|
||||
|
||||
// 初始化
|
||||
const init = async () => {
|
||||
// 监听认证错误事件
|
||||
authEventBus.onAuthError(handleAuthError)
|
||||
|
||||
// 监听版本更新事件
|
||||
window.addEventListener('version:logout', handleVersionLogout)
|
||||
window.addEventListener('version:refresh', handleVersionRefresh)
|
||||
|
||||
// 进行版本检查
|
||||
if (!checkVersions()) {
|
||||
// 如果已经初始化完成,直接返回
|
||||
if (initialized.value) {
|
||||
return
|
||||
}
|
||||
|
||||
if (accessToken.value && !user.value) {
|
||||
// 有token但无用户信息,自动拉取
|
||||
loading.value = true
|
||||
try {
|
||||
const result = await fetchUserProfile()
|
||||
isAuthenticated.value = result.success
|
||||
// 如果正在初始化,等待完成
|
||||
if (isInitializing) {
|
||||
// 等待初始化完成
|
||||
while (isInitializing) {
|
||||
await new Promise(resolve => setTimeout(resolve, 50))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// 如果认证成功,启动版本检查器
|
||||
if (result.success) {
|
||||
isInitializing = true
|
||||
|
||||
try {
|
||||
// 监听认证错误事件(只注册一次)
|
||||
if (!authEventBus.listeners.includes(handleAuthError)) {
|
||||
authEventBus.onAuthError(handleAuthError)
|
||||
}
|
||||
|
||||
// 监听版本更新事件(只注册一次)
|
||||
if (!window.hasVersionListeners) {
|
||||
window.addEventListener('version:logout', handleVersionLogout)
|
||||
window.addEventListener('version:refresh', handleVersionRefresh)
|
||||
window.hasVersionListeners = true
|
||||
}
|
||||
|
||||
// 进行版本检查
|
||||
if (!checkVersions()) {
|
||||
initialized.value = true
|
||||
return
|
||||
}
|
||||
|
||||
if (accessToken.value && !user.value) {
|
||||
// 有token但无用户信息,自动拉取
|
||||
loading.value = true
|
||||
try {
|
||||
const result = await fetchUserProfile()
|
||||
isAuthenticated.value = result.success
|
||||
|
||||
// 如果认证成功,启动版本检查器
|
||||
if (result.success) {
|
||||
versionChecker.startAutoCheck()
|
||||
}
|
||||
} catch {
|
||||
isAuthenticated.value = false
|
||||
logout()
|
||||
} finally {
|
||||
loading.value = false
|
||||
initialized.value = true
|
||||
}
|
||||
} else {
|
||||
// 如果已经认证,启动版本检查器
|
||||
if (isAuthenticated.value) {
|
||||
versionChecker.startAutoCheck()
|
||||
}
|
||||
} catch {
|
||||
isAuthenticated.value = false
|
||||
logout()
|
||||
} finally {
|
||||
loading.value = false
|
||||
initialized.value = true
|
||||
}
|
||||
} else {
|
||||
// 如果已经认证,启动版本检查器
|
||||
if (isAuthenticated.value) {
|
||||
versionChecker.startAutoCheck()
|
||||
}
|
||||
initialized.value = true
|
||||
} finally {
|
||||
isInitializing = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user