优化获取昵称修改状态的时机
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
import { check_login_status, get_user_token, silentLogin } from "@/services/loginService";
|
||||
import {
|
||||
check_login_status,
|
||||
get_user_token,
|
||||
silentLogin,
|
||||
} from "@/services/loginService";
|
||||
import { useUser } from "@/store/userStore";
|
||||
import tokenManager from "@/utils/tokenManager";
|
||||
|
||||
@@ -15,7 +19,7 @@ const initUserAuthCore = async (): Promise<void> => {
|
||||
|
||||
// 如果已经登录且有用户信息,跳过
|
||||
const login_status = check_login_status();
|
||||
const { user, fetchUserInfo } = useUser.getState();
|
||||
const { user, fetchUserInfo, checkNicknameChangeStatus } = useUser.getState();
|
||||
if (login_status && user && Object.keys(user).length > 0) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
@@ -27,8 +31,9 @@ const initUserAuthCore = async (): Promise<void> => {
|
||||
// 已登录,获取用户信息
|
||||
try {
|
||||
await fetchUserInfo();
|
||||
await checkNicknameChangeStatus();
|
||||
} catch (error) {
|
||||
console.error('获取用户信息失败:', error);
|
||||
console.error("获取用户信息失败:", error);
|
||||
}
|
||||
} else {
|
||||
// 未登录,尝试静默登录
|
||||
@@ -37,14 +42,15 @@ const initUserAuthCore = async (): Promise<void> => {
|
||||
if (loginResult.success) {
|
||||
// 静默登录成功,获取用户信息
|
||||
await fetchUserInfo();
|
||||
await checkNicknameChangeStatus();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('静默登录失败:', error);
|
||||
console.error("静默登录失败:", error);
|
||||
// 静默登录失败不影响使用
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('初始化用户授权失败:', error);
|
||||
console.error("初始化用户授权失败:", error);
|
||||
} finally {
|
||||
isInitializingAuth = false;
|
||||
authInitPromise = null;
|
||||
@@ -60,7 +66,7 @@ export const waitForAuthInit = async (): Promise<void> => {
|
||||
if (tokenManager.hasValidToken() || get_user_token()) {
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
|
||||
// 如果正在初始化,等待完成
|
||||
if (authInitPromise) {
|
||||
await authInitPromise;
|
||||
@@ -69,7 +75,7 @@ export const waitForAuthInit = async (): Promise<void> => {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 检查是否已经登录且有用户信息
|
||||
const login_status = check_login_status();
|
||||
const { user } = useUser.getState();
|
||||
@@ -79,22 +85,26 @@ export const waitForAuthInit = async (): Promise<void> => {
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 触发初始化
|
||||
const promise = initUserAuthCore();
|
||||
await promise;
|
||||
|
||||
|
||||
// 等待 token 真正存在(最多等待 2 秒)
|
||||
let retryCount = 0;
|
||||
const maxRetries = 20; // 20 * 100ms = 2秒
|
||||
while (retryCount < maxRetries && !tokenManager.hasValidToken() && !get_user_token()) {
|
||||
await new Promise(resolve => setTimeout(resolve, 100));
|
||||
while (
|
||||
retryCount < maxRetries &&
|
||||
!tokenManager.hasValidToken() &&
|
||||
!get_user_token()
|
||||
) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
retryCount++;
|
||||
}
|
||||
|
||||
|
||||
// 如果还是没有 token,记录警告但继续执行
|
||||
if (!tokenManager.hasValidToken() && !get_user_token()) {
|
||||
console.warn('等待静默登录完成,但未获取到 token');
|
||||
console.warn("等待静默登录完成,但未获取到 token");
|
||||
}
|
||||
};
|
||||
|
||||
@@ -102,4 +112,3 @@ export const waitForAuthInit = async (): Promise<void> => {
|
||||
export const initUserAuth = () => {
|
||||
return initUserAuthCore();
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user