@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
43 lines • 6.04 kB
JavaScript
import { DestroyRef, Injectable, Injector } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ApiService } from '@c8y/ngx-components/api';
import { AlertService, gettext } from '@c8y/ngx-components';
import { PendingMoRequestInterceptor } from './pending-mo-request-interceptor';
import * as i0 from "@angular/core";
import * as i1 from "@c8y/ngx-components/api";
import * as i2 from "@c8y/ngx-components";
export class PendingMoRequestService {
constructor(injector, apiService, alertService, destroyRef) {
this.injector = injector;
this.apiService = apiService;
this.alertService = alertService;
this.destroyRef = destroyRef;
}
setupHooks() {
this.apiService.addInterceptor(new PendingMoRequestInterceptor(this.injector));
/* Backend will return 202 when a request takes more than 30 seconds to complete
* and will continue the execution in the background. So the user will be able to navigate away.
*/
this.apiService
.hookResponse(call => call.method === 'DELETE' &&
/inventory\/managedObjects/.test(call.url) &&
call.response.status === 202)
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe(() => {
this.alertService.add({
type: 'system',
text: gettext('The managed object is deleted in the background. Continue with using the platform as normal.'),
timeout: 10000
});
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingMoRequestService, deps: [{ token: i0.Injector }, { token: i1.ApiService }, { token: i2.AlertService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingMoRequestService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PendingMoRequestService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.ApiService }, { type: i2.AlertService }, { type: i0.DestroyRef }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1tby1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wZW5kaW5nLW1vLXJlcXVlc3QvcGVuZGluZy1tby1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzVELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7O0FBSy9FLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxRQUFrQixFQUNsQixVQUFzQixFQUN0QixZQUEwQixFQUMxQixVQUFzQjtRQUh0QixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtJQUM3QixDQUFDO0lBRUosVUFBVTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksMkJBQTJCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFL0U7O1dBRUc7UUFDSCxJQUFJLENBQUMsVUFBVTthQUNaLFlBQVksQ0FDWCxJQUFJLENBQUMsRUFBRSxDQUNMLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUTtZQUN4QiwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQy9CO2FBQ0EsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUM7Z0JBQ3BCLElBQUksRUFBRSxRQUFRO2dCQUNkLElBQUksRUFBRSxPQUFPLENBQ1gsOEZBQThGLENBQy9GO2dCQUNELE9BQU8sRUFBRSxLQUFLO2FBQ2YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQS9CVSx1QkFBdUI7bUhBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzs0RkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzL2FwaSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UsIGdldHRleHQgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcbmltcG9ydCB7IFBlbmRpbmdNb1JlcXVlc3RJbnRlcmNlcHRvciB9IGZyb20gJy4vcGVuZGluZy1tby1yZXF1ZXN0LWludGVyY2VwdG9yJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGVuZGluZ01vUmVxdWVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgKSB7fVxuXG4gIHNldHVwSG9va3MoKSB7XG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFkZEludGVyY2VwdG9yKG5ldyBQZW5kaW5nTW9SZXF1ZXN0SW50ZXJjZXB0b3IodGhpcy5pbmplY3RvcikpO1xuXG4gICAgLyogQmFja2VuZCB3aWxsIHJldHVybiAyMDIgd2hlbiBhIHJlcXVlc3QgdGFrZXMgbW9yZSB0aGFuIDMwIHNlY29uZHMgdG8gY29tcGxldGVcbiAgICAgKiBhbmQgd2lsbCBjb250aW51ZSB0aGUgZXhlY3V0aW9uIGluIHRoZSBiYWNrZ3JvdW5kLiBTbyB0aGUgdXNlciB3aWxsIGJlIGFibGUgdG8gbmF2aWdhdGUgYXdheS5cbiAgICAgKi9cbiAgICB0aGlzLmFwaVNlcnZpY2VcbiAgICAgIC5ob29rUmVzcG9uc2UoXG4gICAgICAgIGNhbGwgPT5cbiAgICAgICAgICBjYWxsLm1ldGhvZCA9PT0gJ0RFTEVURScgJiZcbiAgICAgICAgICAvaW52ZW50b3J5XFwvbWFuYWdlZE9iamVjdHMvLnRlc3QoY2FsbC51cmwpICYmXG4gICAgICAgICAgY2FsbC5yZXNwb25zZS5zdGF0dXMgPT09IDIwMlxuICAgICAgKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkKHtcbiAgICAgICAgICB0eXBlOiAnc3lzdGVtJyxcbiAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KFxuICAgICAgICAgICAgJ1RoZSBtYW5hZ2VkIG9iamVjdCBpcyBkZWxldGVkIGluIHRoZSBiYWNrZ3JvdW5kLiBDb250aW51ZSB3aXRoIHVzaW5nIHRoZSBwbGF0Zm9ybSBhcyBub3JtYWwuJ1xuICAgICAgICAgICksXG4gICAgICAgICAgdGltZW91dDogMTAwMDBcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19