From 8a584fd28a3070cfee4788d3d0f8896e7e865d39 Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Mon, 26 Aug 2024 02:08:51 +0300 Subject: [PATCH] feat: try refreshing if error not related to 401 or 403 error --- src/services/token-refresh.service.ts | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/services/token-refresh.service.ts b/src/services/token-refresh.service.ts index 1faac11..f11660a 100644 --- a/src/services/token-refresh.service.ts +++ b/src/services/token-refresh.service.ts @@ -33,10 +33,25 @@ export class TokenRefreshService { this.authService.refreshToken() .pipe( - catchError(_ => { - localStorage.removeItem(ApiService.tokenKey); - this.refreshTokenExpireMs = -1; - return of(undefined); + catchError(error => { + if (error.status === 403 || error.status === 401) { + localStorage.removeItem(ApiService.tokenKey); + this.refreshTokenExpireMs = -1; + return of(undefined); + } + + let retryTime = this.refreshTokenExpireMs; + + if (retryTime < environment.retryDelay) + retryTime = environment.retryDelay; + + // 15 minutes + if (retryTime * 2 <= 900_000) + retryTime *= 2; + else + retryTime = 900_000; + + return of(retryTime); })) .subscribe(data => { if (data)