浏览代码

Add partially the ability to cancel login in .start

painor 4 年之前
父节点
当前提交
5c43d40942
共有 2 个文件被更改,包括 20 次插入8 次删除
  1. 19 7
      gramjs/client/auth.ts
  2. 1 1
      package.json

+ 19 - 7
gramjs/client/auth.ts

@@ -10,7 +10,7 @@ export interface UserAuthParams {
     password: (hint?: string) => Promise<string>;
     firstAndLastNames?: () => Promise<[string, string?]>;
     qrCode?: (qrCode: { token: Buffer, expires: number }) => Promise<void>;
-    onError: (err: Error) => void;
+    onError: (err: Error) => Promise<boolean>;
     forceSMS?: boolean;
 }
 
@@ -96,7 +96,10 @@ export async function signInUser(
                 throw err;
             }
 
-            authParams.onError(err);
+            const shouldWeStop = await authParams.onError(err);
+            if (shouldWeStop){
+               throw new Error("AUTH_USER_CANCEL")
+            }
         }
     }
 
@@ -138,7 +141,10 @@ export async function signInUser(
             if (err.message === 'SESSION_PASSWORD_NEEDED') {
                 return client.signInWithPassword(apiCredentials, authParams);
             } else {
-                authParams.onError(err);
+                const shouldWeStop = await authParams.onError(err);
+                if (shouldWeStop){
+                    throw new Error("AUTH_USER_CANCEL")
+                }
             }
         }
     }
@@ -171,12 +177,15 @@ export async function signInUser(
 
                 return user;
             } catch (err) {
-                authParams.onError(err);
+                const shouldWeStop = await authParams.onError(err);
+                if (shouldWeStop){
+                    throw new Error("AUTH_USER_CANCEL")
+                }
             }
         }
     }
 
-    authParams.onError(new Error('Auth failed'));
+    await authParams.onError(new Error('Auth failed'));
     return client.signInUser(apiCredentials, authParams);
 }
 
@@ -250,7 +259,7 @@ export async function signInUserWithQrCode(
         }
     }
 
-    authParams.onError(new Error('QR auth failed'));
+    await authParams.onError(new Error('QR auth failed'));
     return client.signInUser(apiCredentials, authParams);
 }
 
@@ -311,7 +320,10 @@ export async function signInWithPassword(client: TelegramClient, apiCredentials:
 
             return user;
         } catch (err) {
-            authParams.onError(err);
+            const shouldWeStop = await authParams.onError(err);
+            if (shouldWeStop){
+                throw new Error("AUTH_USER_CANCEL")
+            }
         }
     }
 

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "telegram",
-  "version": "1.6.5",
+  "version": "1.6.6",
   "description": "NodeJS MTProto API Telegram client library,",
   "main": "index.js",
   "types": "index.d.ts",