@netgrif/components-core
Version:
Netgrif Application engine frontend core Angular library
35 lines • 4.26 kB
JavaScript
import { Injectable } from '@angular/core';
import { AfterAction } from './after-action';
import * as i0 from "@angular/core";
export class CallChainService {
constructor() {
}
/**
* Creates a call chain `Subject` that performs an action when a value is emitted into it.
*
* Useful for creating call chains for methods like [assign Task]{@link AssignTaskService#assign}.
* By using this function you don't have to handle the `Subject` logic and can only focus on the callback.
* This can make the code easier to understand as the intent is not obscured by the `Subject` handling.
*
* @param callback the function that should be executed when a value is emitted into the `Subject`.
* The emitted value is passed as the argument.
* @returns a subscribed `Subject` instance that performs the provided `callback` on the first emission and then completes
*/
create(callback) {
const chain = new AfterAction();
chain.subscribe(result => {
callback(result);
chain.complete();
});
return chain;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CallChainService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsbC1jaGFpbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi91dGlsaXR5L2NhbGwtY2hhaW4vY2FsbC1jaGFpbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRXpCO0lBQ0EsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSSxNQUFNLENBQUMsUUFBMkI7UUFDckMsTUFBTSxLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQyxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO3dHQXZCUSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZiLE1BQU07OzRGQUVULGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBZnRlckFjdGlvbn0gZnJvbSAnLi9hZnRlci1hY3Rpb24nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENhbGxDaGFpblNlcnZpY2Uge1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhIGNhbGwgY2hhaW4gYFN1YmplY3RgIHRoYXQgcGVyZm9ybXMgYW4gYWN0aW9uIHdoZW4gYSB2YWx1ZSBpcyBlbWl0dGVkIGludG8gaXQuXG4gICAgICpcbiAgICAgKiBVc2VmdWwgZm9yIGNyZWF0aW5nIGNhbGwgY2hhaW5zIGZvciBtZXRob2RzIGxpa2UgW2Fzc2lnbiBUYXNrXXtAbGluayBBc3NpZ25UYXNrU2VydmljZSNhc3NpZ259LlxuICAgICAqIEJ5IHVzaW5nIHRoaXMgZnVuY3Rpb24geW91IGRvbid0IGhhdmUgdG8gaGFuZGxlIHRoZSBgU3ViamVjdGAgbG9naWMgYW5kIGNhbiBvbmx5IGZvY3VzIG9uIHRoZSBjYWxsYmFjay5cbiAgICAgKiBUaGlzIGNhbiBtYWtlIHRoZSBjb2RlIGVhc2llciB0byB1bmRlcnN0YW5kIGFzIHRoZSBpbnRlbnQgaXMgbm90IG9ic2N1cmVkIGJ5IHRoZSBgU3ViamVjdGAgaGFuZGxpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY2FsbGJhY2sgdGhlIGZ1bmN0aW9uIHRoYXQgc2hvdWxkIGJlIGV4ZWN1dGVkIHdoZW4gYSB2YWx1ZSBpcyBlbWl0dGVkIGludG8gdGhlIGBTdWJqZWN0YC5cbiAgICAgKiBUaGUgZW1pdHRlZCB2YWx1ZSBpcyBwYXNzZWQgYXMgdGhlIGFyZ3VtZW50LlxuICAgICAqIEByZXR1cm5zIGEgc3Vic2NyaWJlZCBgU3ViamVjdGAgaW5zdGFuY2UgdGhhdCBwZXJmb3JtcyB0aGUgcHJvdmlkZWQgYGNhbGxiYWNrYCBvbiB0aGUgZmlyc3QgZW1pc3Npb24gYW5kIHRoZW4gY29tcGxldGVzXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZShjYWxsYmFjazogKGJvb2xlYW4pID0+IHZvaWQpOiBBZnRlckFjdGlvbiB7XG4gICAgICAgIGNvbnN0IGNoYWluID0gbmV3IEFmdGVyQWN0aW9uKCk7XG4gICAgICAgIGNoYWluLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTtcbiAgICAgICAgICAgIGNoYWluLmNvbXBsZXRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY2hhaW47XG4gICAgfVxufVxuIl19