35 lines
848 B
TypeScript
35 lines
848 B
TypeScript
import { Injectable, Injector } from '@angular/core';
|
|
import {
|
|
HttpEvent,
|
|
HttpRequest,
|
|
HttpHandler,
|
|
HttpInterceptor
|
|
} from '@angular/common/http';
|
|
import { Observable } from 'rxjs';
|
|
import { finalize, delay } from 'rxjs/operators';
|
|
import { AppLoaderService } from '../services/loader.service';
|
|
|
|
@Injectable()
|
|
export class AppLoaderInterceptor implements HttpInterceptor {
|
|
constructor(private injector: Injector) {}
|
|
|
|
intercept(
|
|
req: HttpRequest<any>,
|
|
next: HttpHandler
|
|
): Observable<HttpEvent<any>> {
|
|
if (!req.url.includes('albums')) {
|
|
return next.handle(req);
|
|
}
|
|
console.warn('LoaderInterceptor');
|
|
|
|
const appLoaderService = this.injector.get(AppLoaderService);
|
|
|
|
appLoaderService.show();
|
|
|
|
return next.handle(req).pipe(
|
|
delay(3000),
|
|
finalize(() => appLoaderService.hide())
|
|
);
|
|
}
|
|
}
|