From 76ef0fd45f2234e0952515d6f4a78c7b02b0ebe3 Mon Sep 17 00:00:00 2001 From: Conrad Bekondo Date: Tue, 4 Feb 2025 17:22:32 +0100 Subject: [PATCH] fix: better error messages --- src/app/interceptors/access-token.interceptor.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/app/interceptors/access-token.interceptor.ts b/src/app/interceptors/access-token.interceptor.ts index 6935456..7850c19 100644 --- a/src/app/interceptors/access-token.interceptor.ts +++ b/src/app/interceptors/access-token.interceptor.ts @@ -6,6 +6,13 @@ import { catchError, concatMap, EMPTY, throwError } from 'rxjs'; import { accessToken, RefreshAccessToken } from '../state/user'; import { environment } from '@env/environment.development'; +function fixedErrorMessage(error: HttpErrorResponse) { + return throwError(() => { + if (error.status == 0) return new Error('Cannot connect to server'); + return error.error?.message ?? error.message; + }) +} + export const accessTokenInterceptor: HttpInterceptorFn = (req, next) => { const store = inject(Store); const token = store.selectSnapshot(accessToken); @@ -13,7 +20,7 @@ export const accessTokenInterceptor: HttpInterceptorFn = (req, next) => { if (req.url.startsWith(environment.apiOrigin) && token) { return next(req.clone({ setHeaders: { 'Authorization': `Bearer ${token}` } })).pipe( catchError((e: HttpErrorResponse) => { - if (e.status == 401 && req.url != environment.apiOrigin + '/auth/revoke-token') + if ((e.status == 401 || e.status == 403) && req.url != environment.apiOrigin + '/auth/revoke-token') return store.dispatch(RefreshAccessToken).pipe( concatMap(() => next(req.clone({ setHeaders: { authorization: `Bearer ${store.selectSnapshot(accessToken)}` } }))), catchError((e: HttpErrorResponse) => { @@ -25,8 +32,11 @@ export const accessTokenInterceptor: HttpInterceptorFn = (req, next) => { }) ); return throwError(() => e); - }) + }), + catchError(fixedErrorMessage) ); } - return next(req); + return next(req).pipe( + catchError(fixedErrorMessage) + ); };