UNPKG

@ui-tool/core

Version:
64 lines 9.04 kB
import { of, throwError } from 'rxjs'; import { map, mergeMap, retryWhen, tap } from 'rxjs/operators'; import { DialogResultConstant } from '../../constants/dialog-result.constant'; import { DIALOG_BUILDER } from '../../constants/injectors/injectors'; export class DialogService { //#endregion //#region Constructor constructor(injector) { this.injector = injector; this.dialogBuilders = injector.get(DIALOG_BUILDER); } //#endregion //#region Methods // Display confirm modal asynchronously // Will be return true or false base on action of user in the modal displayDialogAsync(settings) { return this.buildDialogAsync(settings) .pipe(map((dialogResult) => { // Modal is dismissed. if (DialogResultConstant.reject === dialogResult.action) { throw new Error(DialogResultConstant.reject); } return dialogResult.data; })); } // Close all dialog which has been displayed. closeAll() { throw new Error('Not implemented'); } //#endregion //#region Internal methods buildDialogAsync(settings) { if (!settings) { return throwError('INVALID_DIALOG_SETTING'); } let itemIndex = 0; const builders = this.dialogBuilders; const isNotAbleToBuildException = 'IS_NOT_ABLE_TO_BE_BUILT'; const noBuilderAvailableException = 'NO_DIALOG_BUILDER_AVAILABLE'; const maxRetriesExceeded = 'MAX_RETRIES_EXCEEDED'; return of(void (0)) .pipe(tap(_ => { if (!builders) { throw noBuilderAvailableException; } if (itemIndex > builders.length - 1) { throw maxRetriesExceeded; } }), mergeMap(_ => { return builders[itemIndex] .buildAsync(settings) .pipe(map(dialogResult => dialogResult)); }), retryWhen(exceptionObservable => { return exceptionObservable .pipe(tap(exception => { if (exception !== isNotAbleToBuildException) { throw exception; } itemIndex++; })); })); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL3NlcnZpY2VzL2ltcGxlbWVudGF0aW9ucy9kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWEsRUFBRSxFQUFRLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUN0RCxPQUFPLEVBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0QsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sd0NBQXdDLENBQUM7QUFJNUUsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBRW5FLE1BQU0sT0FBZ0IsYUFBYTtJQU9qQyxZQUFZO0lBR1oscUJBQXFCO0lBRXJCLFlBQWdDLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBNEIsQ0FBQztJQUNoRixDQUFDO0lBRUQsWUFBWTtJQUVaLGlCQUFpQjtJQUVqQix1Q0FBdUM7SUFDdkMsbUVBQW1FO0lBQzVELGtCQUFrQixDQUFJLFFBQXlCO1FBRXBELE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFJLFFBQVEsQ0FBQzthQUN0QyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsWUFBNkIsRUFBRSxFQUFFO1lBQ3BDLHNCQUFzQjtZQUN0QixJQUFJLG9CQUFvQixDQUFDLE1BQU0sS0FBSyxZQUFZLENBQUMsTUFBTSxFQUFFO2dCQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzlDO1lBRUQsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDO0lBRUQsNkNBQTZDO0lBQ3RDLFFBQVE7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFlBQVk7SUFFWiwwQkFBMEI7SUFFaEIsZ0JBQWdCLENBQUksUUFBeUI7UUFFckQsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNiLE9BQU8sVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7U0FDN0M7UUFFRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUNyQyxNQUFNLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO1FBQzVELE1BQU0sMkJBQTJCLEdBQUcsNkJBQTZCLENBQUM7UUFDbEUsTUFBTSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQztRQUVsRCxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNOLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsTUFBTSwyQkFBMkIsQ0FBQzthQUNuQztZQUVELElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLGtCQUFrQixDQUFDO2FBQzFCO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBRVgsT0FBTyxRQUFRLENBQUMsU0FBUyxDQUFDO2lCQUN2QixVQUFVLENBQUMsUUFBUSxDQUFDO2lCQUNwQixJQUFJLENBQ0gsR0FBRyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsWUFBK0IsQ0FBQyxDQUNyRCxDQUFDO1FBQ04sQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDOUIsT0FBTyxtQkFBbUI7aUJBQ3ZCLElBQUksQ0FDSCxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxTQUFTLEtBQUsseUJBQXlCLEVBQUU7b0JBQzNDLE1BQU0sU0FBUyxDQUFDO2lCQUNqQjtnQkFFRCxTQUFTLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDTixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBRU4sQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWFsb2dzL2RpYWxvZy1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQge09ic2VydmFibGUsIG9mLCByYWNlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcbmltcG9ydCB7bWFwLCBtZXJnZU1hcCwgcmV0cnlXaGVuLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RGlhbG9nUmVzdWx0fSBmcm9tICcuLi8uLi9tb2RlbHMvaW1wbGVtZW50YXRpb25zL2RpYWxvZ3MvZGlhbG9nLXJlc3VsdCc7XG5pbXBvcnQge0RpYWxvZ1Jlc3VsdENvbnN0YW50fSBmcm9tICcuLi8uLi9jb25zdGFudHMvZGlhbG9nLXJlc3VsdC5jb25zdGFudCc7XG5pbXBvcnQge0lEaWFsb2dTZXR0aW5nc30gZnJvbSAnLi4vLi4vbW9kZWxzL2ludGVyZmFjZXMvZGlhbG9ncy9kaWFsb2ctc2V0dGluZ3MuaW50ZXJmYWNlJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJRGlhbG9nQnVpbGRlcn0gZnJvbSAnLi4vaW50ZXJmYWNlcy9kaWFsb2dzL2RpYWxvZy1idWlsZGVyLmludGVyZmFjZSc7XG5pbXBvcnQge0RJQUxPR19CVUlMREVSfSBmcm9tICcuLi8uLi9jb25zdGFudHMvaW5qZWN0b3JzL2luamVjdG9ycyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEaWFsb2dTZXJ2aWNlIGltcGxlbWVudHMgSURpYWxvZ1NlcnZpY2Uge1xuXG4gIC8vI3JlZ2lvbiBQcm9wZXJ0aWVzXG5cbiAgLy8gTGlzdCBvZiBkaWFsb2cgYnVpbGRlcnMgdG8gYnVpbGQgZGlhbG9nIGluIHRoZSBzeXN0ZW0uXG4gIHByb3RlY3RlZCByZWFkb25seSBkaWFsb2dCdWlsZGVyczogSURpYWxvZ0J1aWxkZXJbXTtcblxuICAvLyNlbmRyZWdpb25cblxuXG4gIC8vI3JlZ2lvbiBDb25zdHJ1Y3RvclxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgdGhpcy5kaWFsb2dCdWlsZGVycyA9IGluamVjdG9yLmdldChESUFMT0dfQlVJTERFUikgYXMgYW55IGFzIElEaWFsb2dCdWlsZGVyW107XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gTWV0aG9kc1xuXG4gIC8vIERpc3BsYXkgY29uZmlybSBtb2RhbCBhc3luY2hyb25vdXNseVxuICAvLyBXaWxsIGJlIHJldHVybiB0cnVlIG9yIGZhbHNlIGJhc2Ugb24gYWN0aW9uIG9mIHVzZXIgaW4gdGhlIG1vZGFsXG4gIHB1YmxpYyBkaXNwbGF5RGlhbG9nQXN5bmM8VD4oc2V0dGluZ3M6IElEaWFsb2dTZXR0aW5ncyk6IE9ic2VydmFibGU8VD4ge1xuXG4gICAgcmV0dXJuIHRoaXMuYnVpbGREaWFsb2dBc3luYzxUPihzZXR0aW5ncylcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKGRpYWxvZ1Jlc3VsdDogRGlhbG9nUmVzdWx0PFQ+KSA9PiB7XG4gICAgICAgICAgLy8gTW9kYWwgaXMgZGlzbWlzc2VkLlxuICAgICAgICAgIGlmIChEaWFsb2dSZXN1bHRDb25zdGFudC5yZWplY3QgPT09IGRpYWxvZ1Jlc3VsdC5hY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihEaWFsb2dSZXN1bHRDb25zdGFudC5yZWplY3QpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBkaWFsb2dSZXN1bHQuZGF0YTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvLyBDbG9zZSBhbGwgZGlhbG9nIHdoaWNoIGhhcyBiZWVuIGRpc3BsYXllZC5cbiAgcHVibGljIGNsb3NlQWxsKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gSW50ZXJuYWwgbWV0aG9kc1xuXG4gIHByb3RlY3RlZCBidWlsZERpYWxvZ0FzeW5jPFQ+KHNldHRpbmdzOiBJRGlhbG9nU2V0dGluZ3MpOiBPYnNlcnZhYmxlPERpYWxvZ1Jlc3VsdDxUPj4ge1xuXG4gICAgaWYgKCFzZXR0aW5ncykge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoJ0lOVkFMSURfRElBTE9HX1NFVFRJTkcnKTtcbiAgICB9XG5cbiAgICBsZXQgaXRlbUluZGV4ID0gMDtcbiAgICBjb25zdCBidWlsZGVycyA9IHRoaXMuZGlhbG9nQnVpbGRlcnM7XG4gICAgY29uc3QgaXNOb3RBYmxlVG9CdWlsZEV4Y2VwdGlvbiA9ICdJU19OT1RfQUJMRV9UT19CRV9CVUlMVCc7XG4gICAgY29uc3Qgbm9CdWlsZGVyQXZhaWxhYmxlRXhjZXB0aW9uID0gJ05PX0RJQUxPR19CVUlMREVSX0FWQUlMQUJMRSc7XG4gICAgY29uc3QgbWF4UmV0cmllc0V4Y2VlZGVkID0gJ01BWF9SRVRSSUVTX0VYQ0VFREVEJztcblxuICAgIHJldHVybiBvZih2b2lkICgwKSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoXyA9PiB7XG4gICAgICAgICAgaWYgKCFidWlsZGVycykge1xuICAgICAgICAgICAgdGhyb3cgbm9CdWlsZGVyQXZhaWxhYmxlRXhjZXB0aW9uO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChpdGVtSW5kZXggPiBidWlsZGVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aHJvdyBtYXhSZXRyaWVzRXhjZWVkZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgbWVyZ2VNYXAoXyA9PiB7XG5cbiAgICAgICAgICByZXR1cm4gYnVpbGRlcnNbaXRlbUluZGV4XVxuICAgICAgICAgICAgLmJ1aWxkQXN5bmMoc2V0dGluZ3MpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgbWFwKGRpYWxvZ1Jlc3VsdCA9PiBkaWFsb2dSZXN1bHQgYXMgRGlhbG9nUmVzdWx0PFQ+KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICAgIHJldHJ5V2hlbihleGNlcHRpb25PYnNlcnZhYmxlID0+IHtcbiAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uT2JzZXJ2YWJsZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgIHRhcChleGNlcHRpb24gPT4ge1xuICAgICAgICAgICAgICAgIGlmIChleGNlcHRpb24gIT09IGlzTm90QWJsZVRvQnVpbGRFeGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpdGVtSW5kZXgrKztcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApO1xuXG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiJdfQ==