UNPKG

@spartacus/core

Version:

Spartacus - the core framework

63 lines 8.2 kB
import { APP_INITIALIZER, NgModule } from '@angular/core'; import { META_REDUCERS } from '@ngrx/store'; import { tap } from 'rxjs/operators'; import { ConfigInitializerService } from '../config/config-initializer/config-initializer.service'; import { MultiCartStatePersistenceService } from './services/multi-cart-state-persistence.service'; import { activeCartInitialState } from './store/reducers/multi-cart.reducer'; import * as i0 from "@angular/core"; export function cartStatePersistenceFactory(cartStatePersistenceService, configInit) { const result = () => configInit .getStable('context') .pipe(tap(() => { cartStatePersistenceService.initSync(); })) .toPromise(); return result; } /** * Before `MultiCartStatePersistenceService` restores the active cart id `ActiveCartService` * will use `current` cart instead of the one saved in browser. This meta reducer * sets the value on store initialization to null cart which holds active cart loading * until the data from storage is restored. */ export function uninitializeActiveCartMetaReducerFactory() { const metaReducer = (reducer) => (state, action) => { const newState = Object.assign({}, state); if (action.type === '@ngrx/store/init') { newState.cart = Object.assign(Object.assign({}, newState.cart), { active: activeCartInitialState }); } return reducer(newState, action); }; return metaReducer; } /** * Complimentary module for cart to store cart id in browser storage. * This makes it possible to work on the same anonymous cart even after page refresh. */ export class CartPersistenceModule { static forRoot() { return { ngModule: CartPersistenceModule, providers: [ { provide: APP_INITIALIZER, useFactory: cartStatePersistenceFactory, deps: [MultiCartStatePersistenceService, ConfigInitializerService], multi: true, }, { provide: META_REDUCERS, useFactory: uninitializeActiveCartMetaReducerFactory, multi: true, }, ], }; } } CartPersistenceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartPersistenceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); CartPersistenceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartPersistenceModule }); CartPersistenceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartPersistenceModule }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartPersistenceModule, decorators: [{ type: NgModule }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1wZXJzaXN0ZW5jZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9jYXJ0L2NhcnQtcGVyc2lzdGVuY2UubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQThCLGFBQWEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFFbkcsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBRTdFLE1BQU0sVUFBVSwyQkFBMkIsQ0FDekMsMkJBQTZELEVBQzdELFVBQW9DO0lBRXBDLE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUNsQixVQUFVO1NBQ1AsU0FBUyxDQUFDLFNBQVMsQ0FBQztTQUNwQixJQUFJLENBQ0gsR0FBRyxDQUFDLEdBQUcsRUFBRTtRQUNQLDJCQUEyQixDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3pDLENBQUMsQ0FBQyxDQUNIO1NBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHdDQUF3QztJQUN0RCxNQUFNLFdBQVcsR0FBRyxDQUFDLE9BQTJCLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ3JFLE1BQU0sUUFBUSxxQkFBUSxLQUFLLENBQUUsQ0FBQztRQUM5QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssa0JBQWtCLEVBQUU7WUFDdEMsUUFBUSxDQUFDLElBQUksbUNBQ1IsUUFBUSxDQUFDLElBQUksR0FDYixFQUFFLE1BQU0sRUFBRSxzQkFBc0IsRUFBRSxDQUN0QyxDQUFDO1NBQ0g7UUFDRCxPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxXQUFXLENBQUM7QUFDckIsQ0FBQztBQUVEOzs7R0FHRztBQUVILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsTUFBTSxDQUFDLE9BQU87UUFDWixPQUFPO1lBQ0wsUUFBUSxFQUFFLHFCQUFxQjtZQUMvQixTQUFTLEVBQUU7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSwyQkFBMkI7b0JBQ3ZDLElBQUksRUFBRSxDQUFDLGdDQUFnQyxFQUFFLHdCQUF3QixDQUFDO29CQUNsRSxLQUFLLEVBQUUsSUFBSTtpQkFDWjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsYUFBYTtvQkFDdEIsVUFBVSxFQUFFLHdDQUF3QztvQkFDcEQsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDOztrSEFsQlUscUJBQXFCO21IQUFyQixxQkFBcUI7bUhBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uUmVkdWNlciwgTWV0YVJlZHVjZXIsIE1FVEFfUkVEVUNFUlMgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25maWdJbml0aWFsaXplclNlcnZpY2UgfSBmcm9tICcuLi9jb25maWcvY29uZmlnLWluaXRpYWxpemVyL2NvbmZpZy1pbml0aWFsaXplci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gJy4uL2NvbmZpZy9jb25maWctdG9rZW5zJztcbmltcG9ydCB7IE11bHRpQ2FydFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9tdWx0aS1jYXJ0LXN0YXRlLXBlcnNpc3RlbmNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgYWN0aXZlQ2FydEluaXRpYWxTdGF0ZSB9IGZyb20gJy4vc3RvcmUvcmVkdWNlcnMvbXVsdGktY2FydC5yZWR1Y2VyJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhcnRTdGF0ZVBlcnNpc3RlbmNlRmFjdG9yeShcbiAgY2FydFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlOiBNdWx0aUNhcnRTdGF0ZVBlcnNpc3RlbmNlU2VydmljZSxcbiAgY29uZmlnSW5pdDogQ29uZmlnSW5pdGlhbGl6ZXJTZXJ2aWNlXG4pOiAoKSA9PiBQcm9taXNlPENvbmZpZz4ge1xuICBjb25zdCByZXN1bHQgPSAoKSA9PlxuICAgIGNvbmZpZ0luaXRcbiAgICAgIC5nZXRTdGFibGUoJ2NvbnRleHQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY2FydFN0YXRlUGVyc2lzdGVuY2VTZXJ2aWNlLmluaXRTeW5jKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAudG9Qcm9taXNlKCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQmVmb3JlIGBNdWx0aUNhcnRTdGF0ZVBlcnNpc3RlbmNlU2VydmljZWAgcmVzdG9yZXMgdGhlIGFjdGl2ZSBjYXJ0IGlkIGBBY3RpdmVDYXJ0U2VydmljZWBcbiAqIHdpbGwgdXNlIGBjdXJyZW50YCBjYXJ0IGluc3RlYWQgb2YgdGhlIG9uZSBzYXZlZCBpbiBicm93c2VyLiBUaGlzIG1ldGEgcmVkdWNlclxuICogc2V0cyB0aGUgdmFsdWUgb24gc3RvcmUgaW5pdGlhbGl6YXRpb24gdG8gbnVsbCBjYXJ0IHdoaWNoIGhvbGRzIGFjdGl2ZSBjYXJ0IGxvYWRpbmdcbiAqIHVudGlsIHRoZSBkYXRhIGZyb20gc3RvcmFnZSBpcyByZXN0b3JlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaW5pdGlhbGl6ZUFjdGl2ZUNhcnRNZXRhUmVkdWNlckZhY3RvcnkoKTogTWV0YVJlZHVjZXI8YW55PiB7XG4gIGNvbnN0IG1ldGFSZWR1Y2VyID0gKHJlZHVjZXI6IEFjdGlvblJlZHVjZXI8YW55PikgPT4gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHsgLi4uc3RhdGUgfTtcbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09ICdAbmdyeC9zdG9yZS9pbml0Jykge1xuICAgICAgbmV3U3RhdGUuY2FydCA9IHtcbiAgICAgICAgLi4ubmV3U3RhdGUuY2FydCxcbiAgICAgICAgLi4ueyBhY3RpdmU6IGFjdGl2ZUNhcnRJbml0aWFsU3RhdGUgfSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiByZWR1Y2VyKG5ld1N0YXRlLCBhY3Rpb24pO1xuICB9O1xuICByZXR1cm4gbWV0YVJlZHVjZXI7XG59XG5cbi8qKlxuICogQ29tcGxpbWVudGFyeSBtb2R1bGUgZm9yIGNhcnQgdG8gc3RvcmUgY2FydCBpZCBpbiBicm93c2VyIHN0b3JhZ2UuXG4gKiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHdvcmsgb24gdGhlIHNhbWUgYW5vbnltb3VzIGNhcnQgZXZlbiBhZnRlciBwYWdlIHJlZnJlc2guXG4gKi9cbkBOZ01vZHVsZSgpXG5leHBvcnQgY2xhc3MgQ2FydFBlcnNpc3RlbmNlTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3QoKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDYXJ0UGVyc2lzdGVuY2VNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IENhcnRQZXJzaXN0ZW5jZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IGNhcnRTdGF0ZVBlcnNpc3RlbmNlRmFjdG9yeSxcbiAgICAgICAgICBkZXBzOiBbTXVsdGlDYXJ0U3RhdGVQZXJzaXN0ZW5jZVNlcnZpY2UsIENvbmZpZ0luaXRpYWxpemVyU2VydmljZV0sXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNRVRBX1JFRFVDRVJTLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IHVuaW5pdGlhbGl6ZUFjdGl2ZUNhcnRNZXRhUmVkdWNlckZhY3RvcnksXG4gICAgICAgICAgbXVsdGk6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==