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)