优化获取昵称修改状态的时机

This commit is contained in:
2025-12-03 15:44:41 +08:00
parent 7c1a1fafc1
commit b77b4b0536
9 changed files with 160 additions and 128 deletions

View File

@@ -82,7 +82,7 @@ export interface UserInfoType {
// 微信授权登录
// phone_code: 可选参数,如果提供则绑定手机号,否则只进行微信授权
export const wechat_auth_login = async (
phone_code?: string,
phone_code?: string
): Promise<LoginResponse> => {
try {
// 先进行微信登录获取code
@@ -144,7 +144,7 @@ export interface ChangePhoneParams {
// 手机号验证码登录
export const phone_auth_login = async (
params: PhoneLoginParams,
params: PhoneLoginParams
): Promise<LoginResponse> => {
try {
// 使用 httpService 调用验证验证码接口
@@ -158,6 +158,7 @@ export const phone_auth_login = async (
// 登录成功后,更新用户信息到 store
try {
await useUser.getState().fetchUserInfo();
await useUser.getState().checkNicknameChangeStatus();
} catch (error) {
console.error("更新用户信息到 store 失败:", error);
}
@@ -216,7 +217,7 @@ export const send_sms_code = async (phone: string): Promise<SmsResponse> => {
// 验证短信验证码
export const verify_sms_code = async (
phone: string,
code: string,
code: string
): Promise<VerifyCodeResponse> => {
try {
const response = await httpService.post("user/sms/verify", {
@@ -378,8 +379,6 @@ export const refresh_login_status = async (): Promise<boolean> => {
}
};
// 更新用户手机号
export const updateUserPhone = async (payload: ChangePhoneParams) => {
try {
@@ -389,13 +388,17 @@ export const updateUserPhone = async (payload: ChangePhoneParams) => {
console.error("更新用户手机号失败:", error);
throw error;
}
}
};
// 获取指定用户信息
export const getUserInfoById = async (id) => {
try {
const response = await httpService.post("/user/detail_by_id", { id }, {
showLoading: false,
},);
const response = await httpService.post(
"/user/detail_by_id",
{ id },
{
showLoading: false,
}
);
return response;
} catch (error) {
console.error("获取用户信息失败:", error);
@@ -436,13 +439,13 @@ let silentLoginPromise: Promise<LoginResponse> | null = null;
export const silentLogin = async (): Promise<LoginResponse> => {
// 如果已经有正在进行的静默登录,直接返回该 Promise
if (silentLoginPromise) {
console.log('静默登录正在进行中,等待结果...');
console.log("静默登录正在进行中,等待结果...");
return silentLoginPromise;
}
// 先检查是否已经登录
if (check_login_status()) {
console.log('已登录,跳过静默登录');
console.log("已登录,跳过静默登录");
return {
success: true,
message: "已登录",
@@ -454,13 +457,13 @@ export const silentLogin = async (): Promise<LoginResponse> => {
// 创建静默登录 Promise
silentLoginPromise = (async (): Promise<LoginResponse> => {
try {
console.log('开始执行静默登录...');
console.log("开始执行静默登录...");
// 调用微信登录获取code
const login_result = await Taro.login();
console.log('微信登录结果:', login_result);
console.log("微信登录结果:", login_result);
if (!login_result.code) {
console.error('微信登录失败未获取到code');
console.error("微信登录失败未获取到code");
return {
success: false,
message: "微信登录失败",
@@ -468,15 +471,19 @@ export const silentLogin = async (): Promise<LoginResponse> => {
}
// 调用微信授权接口,不传 phone_code静默登录
console.log('调用后端接口进行静默登录...');
const auth_response = await httpService.post("user/wx_auth", {
code: login_result.code,
// 不传 phone_code实现静默登录
}, {
showLoading: false, // 静默登录不显示loading
});
console.log("调用后端接口进行静默登录...");
const auth_response = await httpService.post(
"user/wx_auth",
{
code: login_result.code,
// 不传 phone_code实现静默登录
},
{
showLoading: false, // 静默登录不显示loading
}
);
console.log('后端接口响应:', auth_response);
console.log("后端接口响应:", auth_response);
if (auth_response.code === 0) {
const token = auth_response.data?.token || "";
@@ -484,11 +491,11 @@ export const silentLogin = async (): Promise<LoginResponse> => {
// 保存登录状态
if (token && user_info) {
console.log('保存登录状态...');
console.log("保存登录状态...");
save_login_state(token, user_info);
console.log('静默登录成功,已保存登录状态');
console.log("静默登录成功,已保存登录状态");
} else {
console.warn('静默登录成功但token或user_info为空');
console.warn("静默登录成功但token或user_info为空");
}
return {
@@ -498,7 +505,7 @@ export const silentLogin = async (): Promise<LoginResponse> => {
user_info,
};
} else {
console.error('静默登录失败:', auth_response.message);
console.error("静默登录失败:", auth_response.message);
return {
success: false,
message: auth_response.message || "静默登录失败",
@@ -517,4 +524,4 @@ export const silentLogin = async (): Promise<LoginResponse> => {
})();
return silentLoginPromise;
};
};