@cardboard-box/ngx-box
Version:
A collection of useful directives, components and services for angular
25 lines • 3.21 kB
JavaScript
import { catchError, of } from "rxjs";
export class SubscriptionHandler {
constructor() {
this.subscriptions = [];
}
subscribe(obs, handler, error) {
let o = obs;
if (error) {
o = obs.pipe(catchError(err => {
console.error('An Error occurred', { err });
error(err);
return of(undefined);
}));
}
const sub = o.subscribe(t => handler(t));
this.subscriptions.push(sub);
return this;
}
unsubscribe() {
for (let sub of this.subscriptions)
sub.unsubscribe();
this.subscriptions = [];
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLWhhbmRsZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2FyZGJvYXJkYm94L25neC1ib3gvc3JjL2xpYi9zZXJ2aWNlcy9oZWxwZXJzL3N1YnNjcmlwdGlvbi1oYW5kbGVyLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFaEUsTUFBTSxPQUFPLG1CQUFtQjtJQUFoQztRQUNJLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztJQXVCdkMsQ0FBQztJQXJCRyxTQUFTLENBQUksR0FBa0IsRUFBRSxPQUEwQixFQUFFLEtBQTRCO1FBQ3JGLElBQUksQ0FBQyxHQUE4QixHQUFHLENBQUM7UUFDdkMsSUFBSSxLQUFLLEVBQUU7WUFDUCxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FDUixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQzVDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDWCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUN4QixDQUFDLENBQUMsQ0FDTCxDQUFDO1NBQ0w7UUFFRCxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFJLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxhQUFhO1lBQUUsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzVCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNhdGNoRXJyb3IsIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvbkhhbmRsZXIge1xyXG4gICAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgICBzdWJzY3JpYmU8VD4ob2JzOiBPYnNlcnZhYmxlPFQ+LCBoYW5kbGVyOiAoaXRlbTogVCkgPT4gdm9pZCwgZXJyb3I/OiAoZXJyb3I6IGFueSkgPT4gdm9pZCkge1xyXG4gICAgICAgIGxldCBvOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+ID0gb2JzO1xyXG4gICAgICAgIGlmIChlcnJvcikge1xyXG4gICAgICAgICAgICBvID0gb2JzLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignQW4gRXJyb3Igb2NjdXJyZWQnLCB7IGVyciB9KTtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcihlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3Qgc3ViID0gby5zdWJzY3JpYmUodCA9PiBoYW5kbGVyKDxhbnk+dCkpO1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgdW5zdWJzY3JpYmUoKSB7XHJcbiAgICAgICAgZm9yKGxldCBzdWIgb2YgdGhpcy5zdWJzY3JpcHRpb25zKSBzdWIudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcclxuICAgIH1cclxufSJdfQ==