ng-block-ui
Version:
Angular Block UI
47 lines • 6.8 kB
JavaScript
import { Injectable } from '@angular/core';
import { finalize } from 'rxjs/operators';
import { BLOCKUI_DEFAULT } from 'ng-block-ui';
import * as i0 from "@angular/core";
import * as i1 from "ng-block-ui";
import * as i2 from "./block-ui-http-settings.service";
export class BlockUIInterceptor {
constructor(blockUIService, blockUIHttpSettings) {
this.blockUIService = blockUIService;
this.blockUIHttpSettings = blockUIHttpSettings;
this.activeHttpRequests = 0;
}
intercept(request, next) {
let active = false;
if (this.shouldBlock(request)) {
this.blockUIService.start(BLOCKUI_DEFAULT);
}
return next.handle(request)
.pipe(finalize(() => {
if (this.shouldBlock(request)) {
const { blockAllRequestsInProgress } = this.blockUIHttpSettings.settings;
const method = blockAllRequestsInProgress ? 'stop' : 'reset';
this.blockUIService[method](BLOCKUI_DEFAULT);
}
}));
}
shouldBlock(request) {
const { method, urlWithParams } = request;
const { settings } = this.blockUIHttpSettings;
const requestFilters = settings.requestFilters || [];
return !requestFilters.some((f) => {
if (f && f.method && f.url) {
return f.method.toUpperCase() === method && f.url.test(urlWithParams);
}
else if (typeof f === 'function') {
return f(request);
}
return f.test(urlWithParams);
});
}
}
BlockUIInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInterceptor, deps: [{ token: i1.BlockUIService }, { token: i2.BlockUIHttpSettings }], target: i0.ɵɵFactoryTarget.Injectable });
BlockUIInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInterceptor });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BlockUIInterceptor, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.BlockUIService }, { type: i2.BlockUIHttpSettings }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2stdWktaHR0cC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2h0dHAvYmxvY2stdWktaHR0cC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUTNDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQWtCLGVBQWUsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQUk5RCxNQUFNLE9BQU8sa0JBQWtCO0lBRzdCLFlBQ1UsY0FBOEIsRUFDOUIsbUJBQXdDO1FBRHhDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBRWhELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksTUFBTSxHQUFZLEtBQUssQ0FBQztRQUU1QixJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7U0FDNUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQ3hCLElBQUksQ0FDSCxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUM3QixNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDO2dCQUN6RSxNQUFNLE1BQU0sR0FBVywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDOUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUF5QjtRQUNuQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMxQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQzlDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1FBRXJELE9BQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFO2dCQUMxQixPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLEtBQUssTUFBTSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ3ZFO2lCQUFNLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxFQUFFO2dCQUNsQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNuQjtZQUVELE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQTNDVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgSHR0cFJlcXVlc3QsXG4gIEh0dHBIYW5kbGVyLFxuICBIdHRwRXZlbnQsXG4gIEh0dHBJbnRlcmNlcHRvclxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJsb2NrVUlTZXJ2aWNlLCBCTE9DS1VJX0RFRkFVTFQgfSBmcm9tICduZy1ibG9jay11aSc7XG5pbXBvcnQgeyBCbG9ja1VJSHR0cFNldHRpbmdzIH0gZnJvbSAnLi9ibG9jay11aS1odHRwLXNldHRpbmdzLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQmxvY2tVSUludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSBhY3RpdmVIdHRwUmVxdWVzdHM6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJsb2NrVUlTZXJ2aWNlOiBCbG9ja1VJU2VydmljZSxcbiAgICBwcml2YXRlIGJsb2NrVUlIdHRwU2V0dGluZ3M6IEJsb2NrVUlIdHRwU2V0dGluZ3NcbiAgKSB7XG4gICAgdGhpcy5hY3RpdmVIdHRwUmVxdWVzdHMgPSAwO1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGxldCBhY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnNob3VsZEJsb2NrKHJlcXVlc3QpKSB7XG4gICAgICB0aGlzLmJsb2NrVUlTZXJ2aWNlLnN0YXJ0KEJMT0NLVUlfREVGQVVMVCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpXG4gICAgICAucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNob3VsZEJsb2NrKHJlcXVlc3QpKSB7XG4gICAgICAgICAgICBjb25zdCB7IGJsb2NrQWxsUmVxdWVzdHNJblByb2dyZXNzIH0gPSB0aGlzLmJsb2NrVUlIdHRwU2V0dGluZ3Muc2V0dGluZ3M7XG4gICAgICAgICAgICBjb25zdCBtZXRob2Q6IHN0cmluZyA9IGJsb2NrQWxsUmVxdWVzdHNJblByb2dyZXNzID8gJ3N0b3AnIDogJ3Jlc2V0JztcbiAgICAgICAgICAgIHRoaXMuYmxvY2tVSVNlcnZpY2VbbWV0aG9kXShCTE9DS1VJX0RFRkFVTFQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBzaG91bGRCbG9jayhyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+KTogYm9vbGVhbiB7XG4gICAgY29uc3QgeyBtZXRob2QsIHVybFdpdGhQYXJhbXMgfSA9IHJlcXVlc3Q7XG4gICAgY29uc3QgeyBzZXR0aW5ncyB9ID0gdGhpcy5ibG9ja1VJSHR0cFNldHRpbmdzO1xuICAgIGNvbnN0IHJlcXVlc3RGaWx0ZXJzID0gc2V0dGluZ3MucmVxdWVzdEZpbHRlcnMgfHwgW107XG5cbiAgICByZXR1cm4gIXJlcXVlc3RGaWx0ZXJzLnNvbWUoKGY6IGFueSkgPT4ge1xuICAgICAgaWYgKGYgJiYgZi5tZXRob2QgJiYgZi51cmwpIHtcbiAgICAgICAgcmV0dXJuIGYubWV0aG9kLnRvVXBwZXJDYXNlKCkgPT09IG1ldGhvZCAmJiBmLnVybC50ZXN0KHVybFdpdGhQYXJhbXMpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZihyZXF1ZXN0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGYudGVzdCh1cmxXaXRoUGFyYW1zKTtcbiAgICB9KTtcbiAgfVxufVxuIl19