UNPKG

@spartacus/core

Version:

Spartacus - the core framework

55 lines 11.8 kB
import { Injectable } from '@angular/core'; import { createEffect, ofType } from '@ngrx/effects'; import { from } from 'rxjs'; import { catchError, groupBy, mergeMap, switchMap } from 'rxjs/operators'; import { AuthActions } from '../../../auth/user-auth/store/actions/index'; import { SiteContextActions } from '../../../site-context/store/actions/index'; import { bufferDebounceTime } from '../../../util/rxjs/buffer-debounce-time'; import { normalizeHttpError } from '../../../util/normalize-http-error'; import { withdrawOn } from '../../../util/rxjs/withdraw-on'; import { serializePageContext } from '../../utils/cms-utils'; import { CmsActions } from '../actions/index'; import * as i0 from "@angular/core"; import * as i1 from "@ngrx/effects"; import * as i2 from "../../connectors/component/cms-component.connector"; export class ComponentsEffects { constructor(actions$, cmsComponentConnector) { this.actions$ = actions$; this.cmsComponentConnector = cmsComponentConnector; this.contextChange$ = this.actions$.pipe(ofType(SiteContextActions.LANGUAGE_CHANGE, AuthActions.LOGOUT, AuthActions.LOGIN)); this.loadComponent$ = createEffect(() => ({ scheduler, debounce = 0 } = {}) => this.actions$.pipe(ofType(CmsActions.LOAD_CMS_COMPONENT), groupBy((actions) => serializePageContext(actions.payload.pageContext)), mergeMap((actionGroup) => actionGroup.pipe(bufferDebounceTime(debounce, scheduler), mergeMap((actions) => this.loadComponentsEffect(actions.map((action) => action.payload.uid), actions[0].payload.pageContext)))), withdrawOn(this.contextChange$))); } loadComponentsEffect(componentUids, pageContext) { return this.cmsComponentConnector.getList(componentUids, pageContext).pipe(switchMap((components) => { const actions = []; const uidsLeft = new Set(componentUids); for (const component of components) { actions.push(new CmsActions.LoadCmsComponentSuccess({ component, uid: component.uid, pageContext, })); uidsLeft.delete(component.uid); } // we have to emit LoadCmsComponentFail for all component's uids that // are missing from the response uidsLeft.forEach((uid) => { actions.push(new CmsActions.LoadCmsComponentFail({ uid, pageContext, })); }); return from(actions); }), catchError((error) => from(componentUids.map((uid) => new CmsActions.LoadCmsComponentFail({ uid, error: normalizeHttpError(error), pageContext, }))))); } } ComponentsEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentsEffects, deps: [{ token: i1.Actions }, { token: i2.CmsComponentConnector }], target: i0.ɵɵFactoryTarget.Injectable }); ComponentsEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentsEffects }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ComponentsEffects, decorators: [{ type: Injectable }], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.CmsComponentConnector }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5lZmZlY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9jbXMvc3RvcmUvZWZmZWN0cy9jb21wb25lbnRzLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU8sRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUcxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRzlDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFDVSxRQUFpQixFQUNqQixxQkFBNEM7UUFENUMsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBRzlDLG1CQUFjLEdBQXVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUM3RCxNQUFNLENBQ0osa0JBQWtCLENBQUMsZUFBZSxFQUNsQyxXQUFXLENBQUMsTUFBTSxFQUNsQixXQUFXLENBQUMsS0FBSyxDQUNsQixDQUNGLENBQUM7UUFFRixtQkFBYyxHQUFHLFlBQVksQ0FDM0IsR0FBRyxFQUFFLENBQ0gsQ0FBQyxFQUFFLFNBQVMsRUFBRSxRQUFRLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUcvQixFQUFFLENBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2hCLE1BQU0sQ0FBOEIsVUFBVSxDQUFDLGtCQUFrQixDQUFDLEVBQ2xFLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2xCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQ2xELEVBQ0QsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FDdkIsV0FBVyxDQUFDLElBQUksQ0FDZCxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLEVBQ3ZDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFDM0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQy9CLENBQ0YsQ0FDRixDQUNGLEVBQ0QsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FDaEMsQ0FDTixDQUFDO0lBbENDLENBQUM7SUFvQ0ksb0JBQW9CLENBQzFCLGFBQXVCLEVBQ3ZCLFdBQXdCO1FBS3hCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUN4RSxTQUFTLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixNQUFNLE9BQU8sR0FHUCxFQUFFLENBQUM7WUFDVCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBUyxhQUFhLENBQUMsQ0FBQztZQUNoRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtnQkFDbEMsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLFVBQVUsQ0FBQyx1QkFBdUIsQ0FBQztvQkFDckMsU0FBUztvQkFDVCxHQUFHLEVBQUUsU0FBUyxDQUFDLEdBQUc7b0JBQ2xCLFdBQVc7aUJBQ1osQ0FBQyxDQUNILENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDaEM7WUFDRCxxRUFBcUU7WUFDckUsZ0NBQWdDO1lBQ2hDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDdkIsT0FBTyxDQUFDLElBQUksQ0FDVixJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQztvQkFDbEMsR0FBRztvQkFDSCxXQUFXO2lCQUNaLENBQUMsQ0FDSCxDQUFDO1lBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNuQixJQUFJLENBQ0YsYUFBYSxDQUFDLEdBQUcsQ0FDZixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUM7WUFDbEMsR0FBRztZQUNILEtBQUssRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7WUFDaEMsV0FBVztTQUNaLENBQUMsQ0FDTCxDQUNGLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQzs7OEdBekZVLGlCQUFpQjtrSEFBakIsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgZnJvbSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZ3JvdXBCeSwgbWVyZ2VNYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEF1dGhBY3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vYXV0aC91c2VyLWF1dGgvc3RvcmUvYWN0aW9ucy9pbmRleCc7XG5pbXBvcnQgeyBDbXNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9jbXMubW9kZWwnO1xuaW1wb3J0IHsgUGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9yb3V0aW5nL2luZGV4JztcbmltcG9ydCB7IFNpdGVDb250ZXh0QWN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL3NpdGUtY29udGV4dC9zdG9yZS9hY3Rpb25zL2luZGV4JztcbmltcG9ydCB7IGJ1ZmZlckRlYm91bmNlVGltZSB9IGZyb20gJy4uLy4uLy4uL3V0aWwvcnhqcy9idWZmZXItZGVib3VuY2UtdGltZSc7XG5pbXBvcnQgeyBub3JtYWxpemVIdHRwRXJyb3IgfSBmcm9tICcuLi8uLi8uLi91dGlsL25vcm1hbGl6ZS1odHRwLWVycm9yJztcbmltcG9ydCB7IHdpdGhkcmF3T24gfSBmcm9tICcuLi8uLi8uLi91dGlsL3J4anMvd2l0aGRyYXctb24nO1xuaW1wb3J0IHsgQ21zQ29tcG9uZW50Q29ubmVjdG9yIH0gZnJvbSAnLi4vLi4vY29ubmVjdG9ycy9jb21wb25lbnQvY21zLWNvbXBvbmVudC5jb25uZWN0b3InO1xuaW1wb3J0IHsgc2VyaWFsaXplUGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi91dGlscy9jbXMtdXRpbHMnO1xuaW1wb3J0IHsgQ21zQWN0aW9ucyB9IGZyb20gJy4uL2FjdGlvbnMvaW5kZXgnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ29tcG9uZW50c0VmZmVjdHMge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFjdGlvbnMkOiBBY3Rpb25zLFxuICAgIHByaXZhdGUgY21zQ29tcG9uZW50Q29ubmVjdG9yOiBDbXNDb21wb25lbnRDb25uZWN0b3JcbiAgKSB7fVxuXG4gIHByaXZhdGUgY29udGV4dENoYW5nZSQ6IE9ic2VydmFibGU8QWN0aW9uPiA9IHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICBvZlR5cGUoXG4gICAgICBTaXRlQ29udGV4dEFjdGlvbnMuTEFOR1VBR0VfQ0hBTkdFLFxuICAgICAgQXV0aEFjdGlvbnMuTE9HT1VULFxuICAgICAgQXV0aEFjdGlvbnMuTE9HSU5cbiAgICApXG4gICk7XG5cbiAgbG9hZENvbXBvbmVudCQgPSBjcmVhdGVFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgICh7IHNjaGVkdWxlciwgZGVib3VuY2UgPSAwIH0gPSB7fSk6IE9ic2VydmFibGU8XG4gICAgICAgIHwgQ21zQWN0aW9ucy5Mb2FkQ21zQ29tcG9uZW50U3VjY2VzczxDbXNDb21wb25lbnQ+XG4gICAgICAgIHwgQ21zQWN0aW9ucy5Mb2FkQ21zQ29tcG9uZW50RmFpbFxuICAgICAgPiA9PlxuICAgICAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICAgICAgb2ZUeXBlPENtc0FjdGlvbnMuTG9hZENtc0NvbXBvbmVudD4oQ21zQWN0aW9ucy5MT0FEX0NNU19DT01QT05FTlQpLFxuICAgICAgICAgIGdyb3VwQnkoKGFjdGlvbnMpID0+XG4gICAgICAgICAgICBzZXJpYWxpemVQYWdlQ29udGV4dChhY3Rpb25zLnBheWxvYWQucGFnZUNvbnRleHQpXG4gICAgICAgICAgKSxcbiAgICAgICAgICBtZXJnZU1hcCgoYWN0aW9uR3JvdXApID0+XG4gICAgICAgICAgICBhY3Rpb25Hcm91cC5waXBlKFxuICAgICAgICAgICAgICBidWZmZXJEZWJvdW5jZVRpbWUoZGVib3VuY2UsIHNjaGVkdWxlciksXG4gICAgICAgICAgICAgIG1lcmdlTWFwKChhY3Rpb25zKSA9PlxuICAgICAgICAgICAgICAgIHRoaXMubG9hZENvbXBvbmVudHNFZmZlY3QoXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24ucGF5bG9hZC51aWQpLFxuICAgICAgICAgICAgICAgICAgYWN0aW9uc1swXS5wYXlsb2FkLnBhZ2VDb250ZXh0XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB3aXRoZHJhd09uKHRoaXMuY29udGV4dENoYW5nZSQpXG4gICAgICAgIClcbiAgKTtcblxuICBwcml2YXRlIGxvYWRDb21wb25lbnRzRWZmZWN0KFxuICAgIGNvbXBvbmVudFVpZHM6IHN0cmluZ1tdLFxuICAgIHBhZ2VDb250ZXh0OiBQYWdlQ29udGV4dFxuICApOiBPYnNlcnZhYmxlPFxuICAgIHwgQ21zQWN0aW9ucy5Mb2FkQ21zQ29tcG9uZW50U3VjY2VzczxDbXNDb21wb25lbnQ+XG4gICAgfCBDbXNBY3Rpb25zLkxvYWRDbXNDb21wb25lbnRGYWlsXG4gID4ge1xuICAgIHJldHVybiB0aGlzLmNtc0NvbXBvbmVudENvbm5lY3Rvci5nZXRMaXN0KGNvbXBvbmVudFVpZHMsIHBhZ2VDb250ZXh0KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChjb21wb25lbnRzKSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGlvbnM6IChcbiAgICAgICAgICB8IENtc0FjdGlvbnMuTG9hZENtc0NvbXBvbmVudFN1Y2Nlc3M8Q21zQ29tcG9uZW50PlxuICAgICAgICAgIHwgQ21zQWN0aW9ucy5Mb2FkQ21zQ29tcG9uZW50RmFpbFxuICAgICAgICApW10gPSBbXTtcbiAgICAgICAgY29uc3QgdWlkc0xlZnQgPSBuZXcgU2V0PHN0cmluZz4oY29tcG9uZW50VWlkcyk7XG4gICAgICAgIGZvciAoY29uc3QgY29tcG9uZW50IG9mIGNvbXBvbmVudHMpIHtcbiAgICAgICAgICBhY3Rpb25zLnB1c2goXG4gICAgICAgICAgICBuZXcgQ21zQWN0aW9ucy5Mb2FkQ21zQ29tcG9uZW50U3VjY2Vzcyh7XG4gICAgICAgICAgICAgIGNvbXBvbmVudCxcbiAgICAgICAgICAgICAgdWlkOiBjb21wb25lbnQudWlkLFxuICAgICAgICAgICAgICBwYWdlQ29udGV4dCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICB1aWRzTGVmdC5kZWxldGUoY29tcG9uZW50LnVpZCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gd2UgaGF2ZSB0byBlbWl0IExvYWRDbXNDb21wb25lbnRGYWlsIGZvciBhbGwgY29tcG9uZW50J3MgdWlkcyB0aGF0XG4gICAgICAgIC8vIGFyZSBtaXNzaW5nIGZyb20gdGhlIHJlc3BvbnNlXG4gICAgICAgIHVpZHNMZWZ0LmZvckVhY2goKHVpZCkgPT4ge1xuICAgICAgICAgIGFjdGlvbnMucHVzaChcbiAgICAgICAgICAgIG5ldyBDbXNBY3Rpb25zLkxvYWRDbXNDb21wb25lbnRGYWlsKHtcbiAgICAgICAgICAgICAgdWlkLFxuICAgICAgICAgICAgICBwYWdlQ29udGV4dCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmcm9tKGFjdGlvbnMpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT5cbiAgICAgICAgZnJvbShcbiAgICAgICAgICBjb21wb25lbnRVaWRzLm1hcChcbiAgICAgICAgICAgICh1aWQpID0+XG4gICAgICAgICAgICAgIG5ldyBDbXNBY3Rpb25zLkxvYWRDbXNDb21wb25lbnRGYWlsKHtcbiAgICAgICAgICAgICAgICB1aWQsXG4gICAgICAgICAgICAgICAgZXJyb3I6IG5vcm1hbGl6ZUh0dHBFcnJvcihlcnJvciksXG4gICAgICAgICAgICAgICAgcGFnZUNvbnRleHQsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIl19