mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 13:02:56 +00:00
add http interceptor
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
import { HttpHandler, HttpRequest, HttpResponse } from '@angular/common/http';
|
||||
import { Injectable } from '@angular/core';
|
||||
import { finalize, tap } from 'rxjs/operators';
|
||||
import { BackgroundService } from './background.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root'
|
||||
})
|
||||
export class LoggingInterceptorService {
|
||||
|
||||
constructor(
|
||||
private backgroundservice: BackgroundService,
|
||||
) {}
|
||||
|
||||
intercept(req: HttpRequest<any>, next: HttpHandler) {
|
||||
const started = Date.now();
|
||||
let ok: string;
|
||||
|
||||
// extend server response observable with logging
|
||||
return next.handle(req)
|
||||
.pipe(
|
||||
tap({
|
||||
// Succeeds when there is a response; ignore other events
|
||||
next: (event) => {
|
||||
|
||||
ok = event instanceof HttpResponse ? 'succeeded' : ''
|
||||
|
||||
if(ok == 'succeeded' || (typeof event['status'] == 'number' && event['status'] !=0)) {
|
||||
// set to online
|
||||
this.backgroundservice.online();
|
||||
}
|
||||
|
||||
},
|
||||
// Operation failed; error is an HttpErrorResponse
|
||||
error: (error) => {
|
||||
if (error.status === 0 && error.error instanceof ProgressEvent && !req.url.includes('UserAuthentication/Login')) {
|
||||
// A client-side or network error occurred. Handle it accordingly.
|
||||
this.backgroundservice.offline();
|
||||
}
|
||||
}
|
||||
}),
|
||||
// Log when response observable either completes or errors
|
||||
finalize(() => {
|
||||
// const elapsed = Date.now() - started;
|
||||
// const msg = `${req.method} "${req.urlWithParams}"
|
||||
// ${ok} in ${elapsed} ms.`;
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user