Selaa lähdekoodia

添加自动登录后主动拉取用户个人资料的功能,确保在登录后同步用户信息并优化错误处理逻辑。

wuyi 2 kuukautta sitten
vanhempi
commit
32a576d025
1 muutettua tiedostoa jossa 29 lisäystä ja 0 poistoa
  1. 29 0
      src/pages/pageAutoLogin.ts

+ 29 - 0
src/pages/pageAutoLogin.ts

@@ -81,6 +81,33 @@ export default class PageAutoLogin {
     });
   }
 
+  // 自动登录写入本地前后调用,主动拉取自己的 profile(user/access_hash)
+  private async handleSelfUser(): Promise<void> {
+    try {
+      // 延迟一点点确保 managers 已初始化(可视场景需求调整,不可同步直接引用 rootScope)
+      // @ts-ignore
+      const rootScope = (window as any).rootScope || window?.rootScope; // 若全局可访问
+      if(!rootScope || !rootScope.managers) return;
+      const apiManager = rootScope.managers.apiManager;
+      const appUsersManager = rootScope.managers.appUsersManager;
+      if(apiManager && appUsersManager) {
+        const selfUserFull = await apiManager.invokeApi('users.getFullUser', {id: {_: 'inputUserSelf'}});
+        if(
+          selfUserFull &&
+          Array.isArray(selfUserFull.users) &&
+          selfUserFull.users.length > 0
+        ) {
+          // 保存所有相关 user 对象
+          appUsersManager.saveApiUsers(selfUserFull.users);
+        }
+      }
+    } catch(err) {
+      // 失败忽略,不影响主流程
+      // @ts-ignore
+      (window.console || console).warn('自动登录后主动拉取自己profile失败', err);
+    }
+  }
+
   private async handleAutoLogin(): Promise<void> {
     if(this.isProcessing) return;
 
@@ -162,6 +189,8 @@ export default class PageAutoLogin {
       // 标记这是通过URL参数自动登录的,跳过转圈圈页面
       localStorage.setItem('autoLoginFromUrl', 'true');
 
+      // 主动同步自己profile
+      await this.handleSelfUser();
       // 自动刷新页面以应用新的localStorage数据
       setTimeout(() => {
         window.location.reload();