projects/prestations-ng/src/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.ts
Properties |
|
Methods |
|
Accessors |
constructor(transmitModalService: FoehnTransmitWaitingModalService)
|
||||||
Parameters :
|
Private buildTransmitUrl |
buildTransmitUrl()
|
Returns :
string
|
intercept | |||||||||
intercept(request: HttpRequest<>, next: HttpHandler)
|
|||||||||
Parameters :
Returns :
Observable<HttpEvent<>>
|
Private _prefix |
Type : string
|
prefix | ||||||
setprefix(prefix: string)
|
||||||
Parameters :
Returns :
void
|
import {
HTTP_INTERCEPTORS,
HttpEvent,
HttpEventType,
HttpHandler,
HttpInterceptor,
HttpRequest,
HttpResponse
} from '@angular/common/http';
import { ExistingProvider, Injectable } from '@angular/core';
import { Observable, tap, throwError } from 'rxjs';
import { catchError } from 'rxjs/operators';
import { FoehnTransmitWaitingModalService } from './foehn-transmit-waiting-modal.service';
@Injectable({
providedIn: 'root'
})
export class DemandeTransmitInterceptor implements HttpInterceptor {
private _prefix: string;
constructor(
private transmitModalService: FoehnTransmitWaitingModalService
) {}
set prefix(prefix: string) {
this._prefix = prefix;
}
intercept(
request: HttpRequest<unknown>,
next: HttpHandler
): Observable<HttpEvent<unknown>> {
return next.handle(request).pipe(
tap((httpEvent: HttpEvent<unknown>) => {
if (request.url.search(this.buildTransmitUrl()) === -1) {
return;
}
if (httpEvent.type === HttpEventType.Sent) {
this.transmitModalService.toggleModalVisibility(true);
}
if (httpEvent instanceof HttpResponse) {
this.transmitModalService.toggleModalVisibility(false);
}
}),
catchError((err: unknown) => {
this.transmitModalService.toggleModalVisibility(false);
return throwError(() => err);
})
);
}
private buildTransmitUrl(): string {
if (!this._prefix) {
return 'api/transmission';
}
return `api/${this._prefix}/transmission`;
}
}
export const DEMANDE_TRANSMIT_INTERCEPTOR_PROVIDER: ExistingProvider[] = [
{
provide: HTTP_INTERCEPTORS,
useExisting: DemandeTransmitInterceptor,
multi: true
}
];