@spartacus/core
Version:
Spartacus - the core framework
52 lines • 11.1 kB
JavaScript
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=