frontend: refactor error handlers to utilize dedicated header provider services for token management

This commit is contained in:
juancarmore 2026-02-12 08:04:05 +01:00
parent 8e8e2670c4
commit fb4bdbfcfb
2 changed files with 9 additions and 17 deletions

View File

@ -1,6 +1,5 @@
import { HttpErrorResponse, HttpEvent } from '@angular/common/http';
import { Injectable, inject } from '@angular/core';
import { Router } from '@angular/router';
import { Observable, catchError, from, switchMap } from 'rxjs';
import {
HttpErrorContext,
@ -9,6 +8,7 @@ import {
} from '../../../shared/services/http-error-notifier.service';
import { TokenStorageService } from '../../../shared/services/token-storage.service';
import { AuthService } from '../services/auth.service';
import { AuthHeaderProviderService } from './auth-header-provider.service';
/**
* Handler for authentication-related HTTP errors.
@ -22,6 +22,7 @@ export class AuthInterceptorErrorHandlerService implements HttpErrorHandler {
private readonly authService = inject(AuthService);
private readonly tokenStorageService = inject(TokenStorageService);
private readonly httpErrorNotifier = inject(HttpErrorNotifierService);
private readonly authHeaderProvider = inject(AuthHeaderProviderService);
/**
* Registers this handler with the error notifier service
@ -80,14 +81,8 @@ export class AuthInterceptorErrorHandlerService implements HttpErrorHandler {
switchMap(() => {
console.log('Access token refreshed');
// Update the request with the new token
const newToken = this.tokenStorageService.getAccessToken();
const updatedRequest = newToken
? originalRequest.clone({
setHeaders: {
authorization: `Bearer ${newToken}`
}
})
: originalRequest;
const headers = this.authHeaderProvider.provideHeaders();
const updatedRequest = headers ? originalRequest.clone({ setHeaders: headers }) : originalRequest;
return next(updatedRequest);
}),

View File

@ -8,6 +8,7 @@ import {
} from '../../../shared/services/http-error-notifier.service';
import { MeetingContextService } from '../../meeting/services/meeting-context.service';
import { RoomMemberContextService } from '../services/room-member-context.service';
import { RoomMemberHeaderProviderService } from './room-member-header-provider.service';
/**
* Handler for room member token-related HTTP errors.
@ -21,6 +22,7 @@ export class RoomMemberInterceptorErrorHandlerService implements HttpErrorHandle
private readonly roomMemberContextService = inject(RoomMemberContextService);
private readonly meetingContextService = inject(MeetingContextService);
private readonly httpErrorNotifier = inject(HttpErrorNotifierService);
private readonly roomMemberHeaderProvider = inject(RoomMemberHeaderProviderService);
/**
* Registers this handler with the error notifier service
@ -84,15 +86,10 @@ export class RoomMemberInterceptorErrorHandlerService implements HttpErrorHandle
).pipe(
switchMap(() => {
console.log('Room member token refreshed');
// Update the request with the new token
const newToken = this.roomMemberContextService.getRoomMemberToken();
const updatedRequest = newToken
? originalRequest.clone({
setHeaders: {
'x-room-member-token': `Bearer ${newToken}`
}
})
: originalRequest;
const headers = this.roomMemberHeaderProvider.provideHeaders();
const updatedRequest = headers ? originalRequest.clone({ setHeaders: headers }) : originalRequest;
return next(updatedRequest);
}),