From d15d1b013e8ac61dfa0717d8c557c25f81ef68fb Mon Sep 17 00:00:00 2001
From: fengxiang <110431245@qq.com>
Date: Thu, 07 Jun 2018 11:04:24 +0800
Subject: [PATCH] 防止过时弹窗反复弹出

---
 src/app/core/net/default.interceptor.ts |   53 ++++++++++++++++++++++++++---------------------------
 1 files changed, 26 insertions(+), 27 deletions(-)

diff --git a/src/app/core/net/default.interceptor.ts b/src/app/core/net/default.interceptor.ts
index e1b947f..0ddad87 100644
--- a/src/app/core/net/default.interceptor.ts
+++ b/src/app/core/net/default.interceptor.ts
@@ -21,36 +21,35 @@
  */
 @Injectable()
 export class DefaultInterceptor implements HttpInterceptor {
-    // private unLoginHandle: Subject<HttpErrorResponse> = new Subject<HttpErrorResponse>();
+    private unLoginHandle: Subject<HttpErrorResponse> = new Subject<HttpErrorResponse>();
     
     constructor(private injector: Injector) {
+         this.unLoginHandle.debounceTime(2000).subscribe( (event: HttpErrorResponse) => {
+                const canExpireModelShow = !this.isExpireModelShow;
+                this.isExpireModelShow = true;
+                if (canExpireModelShow && !!event.error) {
+                    let errorMsg = '';
+                    const erroCode =  !!event.error['errorCode'] ? Number.parseInt(event.error['errorCode']) : 0;
+                    switch (erroCode) {
+                    case 10: errorMsg = '���������,���������'; break;
+                    case 11: errorMsg = '������������,���������������'; break;
+                    case 12: errorMsg = '������������,������������������'; break;
+                    case 0: errorMsg = '���������������������������'; break;
+                    default: errorMsg = '������������,���������������'; break;
+                    }
+                        // ������refresh���������������������
+                        this.loginService.clearRefreshToken();
+                        this.model.info({
+                        title: errorMsg,
+                        onOk: () => {
+                            this.isExpireModelShow = false;
+                            this.goTo('/passport/login');
+                        }
+                        });
+            }
+         });
     }
     private isExpireModelShow = false;
-    private unLoginHandle(event: HttpErrorResponse) {
-        if (!!event.error) {
-            let errorMsg = '';
-            const erroCode =  !!event.error['errorCode'] ? Number.parseInt(event.error['errorCode']) : 0;
-            switch (erroCode) {
-               case 10: errorMsg = '���������,���������'; break;
-               case 11: errorMsg = '������������,���������������'; break;
-               case 12: errorMsg = '������������,������������������'; break;
-               case 0: errorMsg = '���������������������������'; break;
-               default: errorMsg = '������������,���������������'; break;
-            }
-            if (!this.isExpireModelShow) {
-                this.isExpireModelShow = true;
-                // ������refresh���������������������
-                this.loginService.clearRefreshToken();
-                this.model.info({
-                  title: errorMsg,
-                  onOk: () => {
-                      this.isExpireModelShow = false;
-                      this.goTo('/passport/login');
-                  }
-                });
-            }
-       }
-    }
     get loginService(): LoginService {
         return this.injector.get<LoginService>(LoginService);
     }
@@ -85,7 +84,7 @@
             case 401: // ������������������
             // this.goTo('/passport/login');
                 if (!this.isLoginPage) {
-                    this.unLoginHandle(<HttpErrorResponse>event);
+                    this.unLoginHandle.next(<HttpErrorResponse>event);
                 }
                 break;
             case 403:

--
Gitblit v1.8.0