UNPKG

@c8y/ngx-components

Version:

Angular modules for Cumulocity IoT applications

30 lines 5.03 kB
import { AlertService, gettext } from '@c8y/ngx-components'; import { NEVER, combineLatest } from 'rxjs'; import { timeout, catchError, share, map, startWith, take } from 'rxjs/operators'; export class PendingMoRequestInterceptor { constructor(injector) { this.injector = injector; } intercept(req, next) { const alertService = this.injector.get(AlertService); const timeoutValue = 5_000; if (/inventory\/managedObjects/.test(req.url)) { const response$ = next.handle(req).pipe(share()); const timeout$ = response$.pipe(timeout({ first: timeoutValue }), catchError(error => { if (error.name === 'TimeoutError') { alertService.add({ type: 'system', text: gettext('The request is taking longer than usual. We apologize for the inconvenience.'), timeout: 10000 }); } return NEVER; }), startWith('')); return combineLatest([response$, timeout$]).pipe(map(([response]) => response), take(1)); } else { return next.handle(req); } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZy1tby1yZXF1ZXN0LWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGVuZGluZy1tby1yZXF1ZXN0L3BlbmRpbmctbW8tcmVxdWVzdC1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRTVELE9BQU8sRUFBRSxLQUFLLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxGLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtJQUFHLENBQUM7SUFFMUMsU0FBUyxDQUFDLEdBQVksRUFBRSxJQUFpQjtRQUN2QyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSwyQkFBMkIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDOUMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUNqRCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUM3QixPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLENBQUMsRUFDaEMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssY0FBYyxFQUFFLENBQUM7b0JBQ2xDLFlBQVksQ0FBQyxHQUFHLENBQUM7d0JBQ2YsSUFBSSxFQUFFLFFBQVE7d0JBQ2QsSUFBSSxFQUFFLE9BQU8sQ0FDWCw4RUFBOEUsQ0FDL0U7d0JBQ0QsT0FBTyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsRUFDRixTQUFTLENBQUMsRUFBRSxDQUFDLENBQ2QsQ0FBQztZQUNGLE9BQU8sYUFBYSxDQUFDLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM5QyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFDN0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7UUFDSixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElGZXRjaFJlc3BvbnNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBnZXR0ZXh0IH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBBcGlDYWxsLCBIdHRwSGFuZGxlciwgSHR0cEludGVyY2VwdG9yIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRpbWVvdXQsIGNhdGNoRXJyb3IsIHNoYXJlLCBtYXAsIHN0YXJ0V2l0aCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuZXhwb3J0IGNsYXNzIFBlbmRpbmdNb1JlcXVlc3RJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIGludGVyY2VwdChyZXE6IEFwaUNhbGwsIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxJRmV0Y2hSZXNwb25zZT4ge1xuICAgIGNvbnN0IGFsZXJ0U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KEFsZXJ0U2VydmljZSk7XG5cbiAgICBjb25zdCB0aW1lb3V0VmFsdWUgPSA1XzAwMDtcbiAgICBpZiAoL2ludmVudG9yeVxcL21hbmFnZWRPYmplY3RzLy50ZXN0KHJlcS51cmwpKSB7XG4gICAgICBjb25zdCByZXNwb25zZSQgPSBuZXh0LmhhbmRsZShyZXEpLnBpcGUoc2hhcmUoKSk7XG4gICAgICBjb25zdCB0aW1lb3V0JCA9IHJlc3BvbnNlJC5waXBlKFxuICAgICAgICB0aW1lb3V0KHsgZmlyc3Q6IHRpbWVvdXRWYWx1ZSB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLm5hbWUgPT09ICdUaW1lb3V0RXJyb3InKSB7XG4gICAgICAgICAgICBhbGVydFNlcnZpY2UuYWRkKHtcbiAgICAgICAgICAgICAgdHlwZTogJ3N5c3RlbScsXG4gICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoXG4gICAgICAgICAgICAgICAgJ1RoZSByZXF1ZXN0IGlzIHRha2luZyBsb25nZXIgdGhhbiB1c3VhbC4gV2UgYXBvbG9naXplIGZvciB0aGUgaW5jb252ZW5pZW5jZS4nXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHRpbWVvdXQ6IDEwMDAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIE5FVkVSO1xuICAgICAgICB9KSxcbiAgICAgICAgc3RhcnRXaXRoKCcnKVxuICAgICAgKTtcbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtyZXNwb25zZSQsIHRpbWVvdXQkXSkucGlwZShcbiAgICAgICAgbWFwKChbcmVzcG9uc2VdKSA9PiByZXNwb25zZSksXG4gICAgICAgIHRha2UoMSlcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbiAgfVxufVxuIl19