UNPKG

@spartacus/core

Version:

Spartacus - the core framework

52 lines 11.1 kB
import { __decorate } from "tslib"; import { isPlatformBrowser } from '@angular/common'; import { Inject, Injectable, PLATFORM_ID } from '@angular/core'; import { Effect, ofType } from '@ngrx/effects'; import { select } from '@ngrx/store'; import { EMPTY, of } from 'rxjs'; import { concatMap, delay, filter, map, pluck, switchMap, take, withLatestFrom, } from 'rxjs/operators'; import { countOfDeepEqualObjects, indexOfFirstOccurrence, } from '../../../util/compare-equal-objects'; import { GlobalMessageActions } from '../actions/index'; import { GlobalMessageSelectors } from '../selectors/index'; import * as i0 from "@angular/core"; import * as i1 from "@ngrx/effects"; import * as i2 from "@ngrx/store"; import * as i3 from "../../config/global-message-config"; export class GlobalMessageEffect { constructor(actions$, store, config, platformId) { this.actions$ = actions$; this.store = store; this.config = config; this.platformId = platformId; this.removeDuplicated$ = this.actions$.pipe(ofType(GlobalMessageActions.ADD_MESSAGE), pluck('payload'), switchMap((message) => of(message.text).pipe(withLatestFrom(this.store.pipe(select(GlobalMessageSelectors.getGlobalMessageEntitiesByType(message.type)))), filter(([text, messages]) => countOfDeepEqualObjects(text, messages) > 1), map(([text, messages]) => new GlobalMessageActions.RemoveMessage({ type: message.type, index: indexOfFirstOccurrence(text, messages), }))))); this.hideAfterDelay$ = isPlatformBrowser(this.platformId) // we don't want to run this logic when doing SSR ? this.actions$.pipe(ofType(GlobalMessageActions.ADD_MESSAGE), pluck('payload'), concatMap((message) => { const config = this.config.globalMessages[message.type]; return this.store.pipe(select(GlobalMessageSelectors.getGlobalMessageCountByType(message.type)), take(1), filter((count) => ((config && config.timeout !== undefined) || message.timeout) && count && count > 0), delay(message.timeout || config.timeout), switchMap(() => of(new GlobalMessageActions.RemoveMessage({ type: message.type, index: 0, })))); })) : EMPTY; } } GlobalMessageEffect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GlobalMessageEffect, deps: [{ token: i1.Actions }, { token: i2.Store }, { token: i3.GlobalMessageConfig }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); GlobalMessageEffect.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GlobalMessageEffect }); __decorate([ Effect() ], GlobalMessageEffect.prototype, "removeDuplicated$", void 0); __decorate([ Effect() ], GlobalMessageEffect.prototype, "hideAfterDelay$", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: GlobalMessageEffect, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.Store }, { type: i3.GlobalMessageConfig }, { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID] }] }]; }, propDecorators: { removeDuplicated$: [], hideAfterDelay$: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLW1lc3NhZ2UuZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvZ2xvYmFsLW1lc3NhZ2Uvc3RvcmUvZWZmZWN0cy9nbG9iYWwtbWVzc2FnZS5lZmZlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRSxPQUFPLEVBQVcsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxLQUFLLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixHQUFHLEVBQ0gsS0FBSyxFQUNMLFNBQVMsRUFDVCxJQUFJLEVBQ0osY0FBYyxHQUNmLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixzQkFBc0IsR0FDdkIsTUFBTSxxQ0FBcUMsQ0FBQztBQUc3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFHNUQsTUFBTSxPQUFPLG1CQUFtQjtJQWlFOUIsWUFDVSxRQUFpQixFQUNqQixLQUFvQyxFQUNwQyxNQUEyQixFQUNOLFVBQWU7UUFIcEMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixVQUFLLEdBQUwsS0FBSyxDQUErQjtRQUNwQyxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUNOLGVBQVUsR0FBVixVQUFVLENBQUs7UUFuRTlDLHNCQUFpQixHQUFtRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDcEYsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUN4QyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ2hCLFNBQVMsQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRSxDQUNuQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbkIsY0FBYyxDQUNaLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNiLE1BQU0sQ0FDSixzQkFBc0IsQ0FBQyw4QkFBOEIsQ0FDbkQsT0FBTyxDQUFDLElBQUksQ0FDYixDQUNGLENBQ0YsQ0FDRixFQUNELE1BQU0sQ0FDSixDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBaUMsRUFBRSxFQUFFLENBQ25ELHVCQUF1QixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQzlDLEVBQ0QsR0FBRyxDQUNELENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFpQyxFQUFFLEVBQUUsQ0FDbkQsSUFBSSxvQkFBb0IsQ0FBQyxhQUFhLENBQUM7WUFDckMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ2xCLEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO1NBQzlDLENBQUMsQ0FDTCxDQUNGLENBQ0YsQ0FDRixDQUFDO1FBR0Ysb0JBQWUsR0FBbUQsaUJBQWlCLENBQ2pGLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUMsaURBQWlEO1lBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDaEIsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxFQUN4QyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ2hCLFNBQVMsQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRTtnQkFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNwQixNQUFNLENBQ0osc0JBQXNCLENBQUMsMkJBQTJCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUNqRSxFQUNELElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxNQUFNLENBQ0osQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUNoQixDQUFDLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQztvQkFDN0QsS0FBSztvQkFDTCxLQUFLLEdBQUcsQ0FBQyxDQUNaLEVBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUN4QyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQ2IsRUFBRSxDQUNBLElBQUksb0JBQW9CLENBQUMsYUFBYSxDQUFDO29CQUNyQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEtBQUssRUFBRSxDQUFDO2lCQUNULENBQUMsQ0FDSCxDQUNGLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUNIO1lBQ0gsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQU9QLENBQUM7O2dIQXRFTyxtQkFBbUIsaUdBcUVwQixXQUFXO29IQXJFVixtQkFBbUI7QUFFOUI7SUFEQyxNQUFNLEVBQUU7OERBNEJQO0FBR0Y7SUFEQyxNQUFNLEVBQUU7NERBZ0NDOzJGQS9EQyxtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQXNFTixNQUFNOzJCQUFDLFdBQVc7NENBbkVyQixpQkFBaUIsTUE4QmpCLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgc2VsZWN0LCBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcbmltcG9ydCB7IEVNUFRZLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgY29uY2F0TWFwLFxuICBkZWxheSxcbiAgZmlsdGVyLFxuICBtYXAsXG4gIHBsdWNrLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHdpdGhMYXRlc3RGcm9tLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUcmFuc2xhdGFibGUgfSBmcm9tICcuLi8uLi8uLi9pMThuL3RyYW5zbGF0YWJsZSc7XG5pbXBvcnQge1xuICBjb3VudE9mRGVlcEVxdWFsT2JqZWN0cyxcbiAgaW5kZXhPZkZpcnN0T2NjdXJyZW5jZSxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbC9jb21wYXJlLWVxdWFsLW9iamVjdHMnO1xuaW1wb3J0IHsgR2xvYmFsTWVzc2FnZUNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbmZpZy9nbG9iYWwtbWVzc2FnZS1jb25maWcnO1xuaW1wb3J0IHsgR2xvYmFsTWVzc2FnZSB9IGZyb20gJy4uLy4uL21vZGVscy9nbG9iYWwtbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBHbG9iYWxNZXNzYWdlQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMvaW5kZXgnO1xuaW1wb3J0IHsgU3RhdGVXaXRoR2xvYmFsTWVzc2FnZSB9IGZyb20gJy4uL2dsb2JhbC1tZXNzYWdlLXN0YXRlJztcbmltcG9ydCB7IEdsb2JhbE1lc3NhZ2VTZWxlY3RvcnMgfSBmcm9tICcuLi9zZWxlY3RvcnMvaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgR2xvYmFsTWVzc2FnZUVmZmVjdCB7XG4gIEBFZmZlY3QoKVxuICByZW1vdmVEdXBsaWNhdGVkJDogT2JzZXJ2YWJsZTxHbG9iYWxNZXNzYWdlQWN0aW9ucy5SZW1vdmVNZXNzYWdlPiA9IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoR2xvYmFsTWVzc2FnZUFjdGlvbnMuQUREX01FU1NBR0UpLFxuICAgIHBsdWNrKCdwYXlsb2FkJyksXG4gICAgc3dpdGNoTWFwKChtZXNzYWdlOiBHbG9iYWxNZXNzYWdlKSA9PlxuICAgICAgb2YobWVzc2FnZS50ZXh0KS5waXBlKFxuICAgICAgICB3aXRoTGF0ZXN0RnJvbShcbiAgICAgICAgICB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgICAgICBzZWxlY3QoXG4gICAgICAgICAgICAgIEdsb2JhbE1lc3NhZ2VTZWxlY3RvcnMuZ2V0R2xvYmFsTWVzc2FnZUVudGl0aWVzQnlUeXBlKFxuICAgICAgICAgICAgICAgIG1lc3NhZ2UudHlwZVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBmaWx0ZXIoXG4gICAgICAgICAgKFt0ZXh0LCBtZXNzYWdlc106IFtUcmFuc2xhdGFibGUsIFRyYW5zbGF0YWJsZVtdXSkgPT5cbiAgICAgICAgICAgIGNvdW50T2ZEZWVwRXF1YWxPYmplY3RzKHRleHQsIG1lc3NhZ2VzKSA+IDFcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChbdGV4dCwgbWVzc2FnZXNdOiBbVHJhbnNsYXRhYmxlLCBUcmFuc2xhdGFibGVbXV0pID0+XG4gICAgICAgICAgICBuZXcgR2xvYmFsTWVzc2FnZUFjdGlvbnMuUmVtb3ZlTWVzc2FnZSh7XG4gICAgICAgICAgICAgIHR5cGU6IG1lc3NhZ2UudHlwZSxcbiAgICAgICAgICAgICAgaW5kZXg6IGluZGV4T2ZGaXJzdE9jY3VycmVuY2UodGV4dCwgbWVzc2FnZXMpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgKTtcblxuICBARWZmZWN0KClcbiAgaGlkZUFmdGVyRGVsYXkkOiBPYnNlcnZhYmxlPEdsb2JhbE1lc3NhZ2VBY3Rpb25zLlJlbW92ZU1lc3NhZ2U+ID0gaXNQbGF0Zm9ybUJyb3dzZXIoXG4gICAgdGhpcy5wbGF0Zm9ybUlkXG4gICkgLy8gd2UgZG9uJ3Qgd2FudCB0byBydW4gdGhpcyBsb2dpYyB3aGVuIGRvaW5nIFNTUlxuICAgID8gdGhpcy5hY3Rpb25zJC5waXBlKFxuICAgICAgICBvZlR5cGUoR2xvYmFsTWVzc2FnZUFjdGlvbnMuQUREX01FU1NBR0UpLFxuICAgICAgICBwbHVjaygncGF5bG9hZCcpLFxuICAgICAgICBjb25jYXRNYXAoKG1lc3NhZ2U6IEdsb2JhbE1lc3NhZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZy5nbG9iYWxNZXNzYWdlc1ttZXNzYWdlLnR5cGVdO1xuICAgICAgICAgIHJldHVybiB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgICAgICBzZWxlY3QoXG4gICAgICAgICAgICAgIEdsb2JhbE1lc3NhZ2VTZWxlY3RvcnMuZ2V0R2xvYmFsTWVzc2FnZUNvdW50QnlUeXBlKG1lc3NhZ2UudHlwZSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgZmlsdGVyKFxuICAgICAgICAgICAgICAoY291bnQ6IG51bWJlcikgPT5cbiAgICAgICAgICAgICAgICAoKGNvbmZpZyAmJiBjb25maWcudGltZW91dCAhPT0gdW5kZWZpbmVkKSB8fCBtZXNzYWdlLnRpbWVvdXQpICYmXG4gICAgICAgICAgICAgICAgY291bnQgJiZcbiAgICAgICAgICAgICAgICBjb3VudCA+IDBcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBkZWxheShtZXNzYWdlLnRpbWVvdXQgfHwgY29uZmlnLnRpbWVvdXQpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICAgIG9mKFxuICAgICAgICAgICAgICAgIG5ldyBHbG9iYWxNZXNzYWdlQWN0aW9ucy5SZW1vdmVNZXNzYWdlKHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6IG1lc3NhZ2UudHlwZSxcbiAgICAgICAgICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgIDogRU1QVFk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIHN0b3JlOiBTdG9yZTxTdGF0ZVdpdGhHbG9iYWxNZXNzYWdlPixcbiAgICBwcml2YXRlIGNvbmZpZzogR2xvYmFsTWVzc2FnZUNvbmZpZyxcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICApIHt9XG59XG4iXX0=