UNPKG

@spartacus/storefront

Version:

Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.

51 lines 7.28 kB
import { Injectable } from '@angular/core'; import { ReplaySubject, Subscription } from 'rxjs'; import { take, tap, withLatestFrom } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; export class CartValidationStateService { constructor(routingService) { this.routingService = routingService; this.NAVIGATION_SKIPS = 2; this.navigationIdCount = 0; this.subscription = new Subscription(); this.cartValidationResult$ = new ReplaySubject(1); this.checkForValidationResultClear$ = this.routingService .getRouterState() .pipe(withLatestFrom(this.cartValidationResult$), tap(([routerState, cartModifications]) => { if (this.navigationIdCount + this.NAVIGATION_SKIPS <= routerState.navigationId && cartModifications.length) { this.cartValidationResult$.next([]); this.navigationIdCount = routerState.navigationId; } })); this.setInitialState(); } ngOnDestroy() { this.subscription.unsubscribe(); } setInitialState() { this.setNavigationIdStep(); this.subscription.add(this.checkForValidationResultClear$.subscribe()); } updateValidationResultAndRoutingId(cartModification) { this.cartValidationResult$.next(cartModification); this.setNavigationIdStep(); } setNavigationIdStep() { this.routingService .getRouterState() .pipe(take(1)) .subscribe((routerState) => (this.navigationIdCount = routerState.navigationId)); } } CartValidationStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationStateService, deps: [{ token: i1.RoutingService }], target: i0.ɵɵFactoryTarget.Injectable }); CartValidationStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationStateService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationStateService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.RoutingService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC12YWxpZGF0aW9uLXN0YXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1jb21wb25lbnRzL2NhcnQvdmFsaWRhdGlvbi9jYXJ0LXZhbGlkYXRpb24tc3RhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBYyxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFNM0QsTUFBTSxPQUFPLDBCQUEwQjtJQVNyQyxZQUFzQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFSMUMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFHLENBQUMsQ0FBQztRQUV0QixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDNUMsMEJBQXFCLEdBQW1DLElBQUksYUFBYSxDQUV2RSxDQUFDLENBQW1DLENBQUM7UUFNN0IsbUNBQThCLEdBQUcsSUFBSSxDQUFDLGNBQWM7YUFDM0QsY0FBYyxFQUFFO2FBQ2hCLElBQUksQ0FDSCxjQUFjLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQzFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUNFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO2dCQUM1QyxXQUFXLENBQUMsWUFBWTtnQkFDMUIsaUJBQWlCLENBQUMsTUFBTSxFQUN4QjtnQkFFRSxJQUFJLENBQUMscUJBQ04sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ1gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7YUFDbkQ7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBbkJGLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBb0JELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFRCxrQ0FBa0MsQ0FBQyxnQkFBb0M7UUFDcEUsSUFBSSxDQUFDLHFCQUEyRCxDQUFDLElBQUksQ0FDcEUsZ0JBQWdCLENBQ2pCLENBQUM7UUFDRixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRVMsbUJBQW1CO1FBQzNCLElBQUksQ0FBQyxjQUFjO2FBQ2hCLGNBQWMsRUFBRTthQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2IsU0FBUyxDQUNSLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQ3JFLENBQUM7SUFDTixDQUFDOzt1SEF0RFUsMEJBQTBCOzJIQUExQiwwQkFBMEIsY0FGekIsTUFBTTsyRkFFUCwwQkFBMEI7a0JBSHRDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCwgd2l0aExhdGVzdEZyb20gfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSb3V0aW5nU2VydmljZSwgQ2FydE1vZGlmaWNhdGlvbiB9IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJ0VmFsaWRhdGlvblN0YXRlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByb3RlY3RlZCBOQVZJR0FUSU9OX1NLSVBTID0gMjtcbiAgcHJvdGVjdGVkIG5hdmlnYXRpb25JZENvdW50ID0gMDtcblxuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBjYXJ0VmFsaWRhdGlvblJlc3VsdCQ6IE9ic2VydmFibGU8Q2FydE1vZGlmaWNhdGlvbltdPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFxuICAgIENhcnRNb2RpZmljYXRpb25bXVxuICA+KDEpIGFzIE9ic2VydmFibGU8Q2FydE1vZGlmaWNhdGlvbltdPjtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcm91dGluZ1NlcnZpY2U6IFJvdXRpbmdTZXJ2aWNlKSB7XG4gICAgdGhpcy5zZXRJbml0aWFsU3RhdGUoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0ZvclZhbGlkYXRpb25SZXN1bHRDbGVhciQgPSB0aGlzLnJvdXRpbmdTZXJ2aWNlXG4gICAgLmdldFJvdXRlclN0YXRlKClcbiAgICAucGlwZShcbiAgICAgIHdpdGhMYXRlc3RGcm9tKHRoaXMuY2FydFZhbGlkYXRpb25SZXN1bHQkKSxcbiAgICAgIHRhcCgoW3JvdXRlclN0YXRlLCBjYXJ0TW9kaWZpY2F0aW9uc10pID0+IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbklkQ291bnQgKyB0aGlzLk5BVklHQVRJT05fU0tJUFMgPD1cbiAgICAgICAgICAgIHJvdXRlclN0YXRlLm5hdmlnYXRpb25JZCAmJlxuICAgICAgICAgIGNhcnRNb2RpZmljYXRpb25zLmxlbmd0aFxuICAgICAgICApIHtcbiAgICAgICAgICAoXG4gICAgICAgICAgICB0aGlzLmNhcnRWYWxpZGF0aW9uUmVzdWx0JCBhcyBSZXBsYXlTdWJqZWN0PENhcnRNb2RpZmljYXRpb25bXT5cbiAgICAgICAgICApLm5leHQoW10pO1xuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbklkQ291bnQgPSByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uSWQ7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldEluaXRpYWxTdGF0ZSgpIHtcbiAgICB0aGlzLnNldE5hdmlnYXRpb25JZFN0ZXAoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy5jaGVja0ZvclZhbGlkYXRpb25SZXN1bHRDbGVhciQuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgdXBkYXRlVmFsaWRhdGlvblJlc3VsdEFuZFJvdXRpbmdJZChjYXJ0TW9kaWZpY2F0aW9uOiBDYXJ0TW9kaWZpY2F0aW9uW10pIHtcbiAgICAodGhpcy5jYXJ0VmFsaWRhdGlvblJlc3VsdCQgYXMgUmVwbGF5U3ViamVjdDxDYXJ0TW9kaWZpY2F0aW9uW10+KS5uZXh0KFxuICAgICAgY2FydE1vZGlmaWNhdGlvblxuICAgICk7XG4gICAgdGhpcy5zZXROYXZpZ2F0aW9uSWRTdGVwKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0TmF2aWdhdGlvbklkU3RlcCgpIHtcbiAgICB0aGlzLnJvdXRpbmdTZXJ2aWNlXG4gICAgICAuZ2V0Um91dGVyU3RhdGUoKVxuICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgIChyb3V0ZXJTdGF0ZSkgPT4gKHRoaXMubmF2aWdhdGlvbklkQ291bnQgPSByb3V0ZXJTdGF0ZS5uYXZpZ2F0aW9uSWQpXG4gICAgICApO1xuICB9XG59XG4iXX0=