first-npm-package-nicule
Version:
This isi first npm package
23 lines (20 loc) • 923 B
text/typescript
import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpEventType } from '@angular/common/http';
import { Observable } from 'rxjs';
import { finalize, tap } from 'rxjs/operators';
import { ProgressTracker } from '.';
()
export class ProgressInterceptor implements HttpInterceptor {
constructor(private progressTracker: ProgressTracker) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(event => {
if (event.type === HttpEventType.UploadProgress) {
const kbLoaded2 = event.loaded / event.total * 100;
this.progressTracker.setProgress(kbLoaded2);
}
}),
finalize(() => this.progressTracker.setProgress(undefined))
);
}
}