UNPKG

@spartacus/storefront

Version:

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

61 lines 11.2 kB
import { Injectable } from '@angular/core'; import { of } from 'rxjs'; import { GlobalMessageType, CartValidationStatusCode, } from '@spartacus/core'; import { map, withLatestFrom } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@spartacus/core"; import * as i2 from "@angular/router"; import * as i3 from "../cart-validation-state.service"; export class CartValidationGuard { constructor(cartValidationService, semanticPathService, router, globalMessageService, activeCartService, cartValidationStateService, cartConfigService) { this.cartValidationService = cartValidationService; this.semanticPathService = semanticPathService; this.router = router; this.globalMessageService = globalMessageService; this.activeCartService = activeCartService; this.cartValidationStateService = cartValidationStateService; this.cartConfigService = cartConfigService; this.GLOBAL_MESSAGE_TIMEOUT = 10000; } canActivate() { return !this.cartConfigService.isCartValidationEnabled() ? of(true) : this.cartValidationService.validateCart().pipe(withLatestFrom(this.activeCartService.getEntries()), map(([cartModificationList, cartEntries]) => { var _a; this.cartValidationStateService.updateValidationResultAndRoutingId(cartModificationList === null || cartModificationList === void 0 ? void 0 : cartModificationList.cartModifications); if (((_a = cartModificationList === null || cartModificationList === void 0 ? void 0 : cartModificationList.cartModifications) === null || _a === void 0 ? void 0 : _a.length) !== 0) { let validationResultMessage; if (cartEntries.length === 1 && cartEntries[0].product.code === (cartModificationList === null || cartModificationList === void 0 ? void 0 : cartModificationList.cartModifications[0].entry.product.code) && (cartModificationList === null || cartModificationList === void 0 ? void 0 : cartModificationList.cartModifications[0].statusCode) === CartValidationStatusCode.NO_STOCK) { validationResultMessage = { key: 'validation.cartEntryRemoved', params: { name: cartModificationList === null || cartModificationList === void 0 ? void 0 : cartModificationList.cartModifications[0].entry.product.name, }, }; } else { validationResultMessage = { key: 'validation.cartEntriesChangeDuringCheckout', }; } this.globalMessageService.add(validationResultMessage, GlobalMessageType.MSG_TYPE_ERROR, this.GLOBAL_MESSAGE_TIMEOUT); this.activeCartService.reloadActiveCart(); return this.router.parseUrl(this.semanticPathService.get('cart')); } return true; })); } } CartValidationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationGuard, deps: [{ token: i1.CartValidationService }, { token: i1.SemanticPathService }, { token: i2.Router }, { token: i1.GlobalMessageService }, { token: i1.ActiveCartService }, { token: i3.CartValidationStateService }, { token: i1.CartConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); CartValidationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationGuard, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CartValidationGuard, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.CartValidationService }, { type: i1.SemanticPathService }, { type: i2.Router }, { type: i1.GlobalMessageService }, { type: i1.ActiveCartService }, { type: i3.CartValidationStateService }, { type: i1.CartConfigService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC12YWxpZGF0aW9uLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RvcmVmcm9udGxpYi9jbXMtY29tcG9uZW50cy9jYXJ0L3ZhbGlkYXRpb24vZ3VhcmRzL2NhcnQtdmFsaWRhdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUtMLGlCQUFpQixFQUVqQix3QkFBd0IsR0FDekIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QixPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU1yRCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1kscUJBQTRDLEVBQzVDLG1CQUF3QyxFQUN4QyxNQUFjLEVBQ2Qsb0JBQTBDLEVBQzFDLGlCQUFvQyxFQUNwQywwQkFBc0QsRUFDdEQsaUJBQW9DO1FBTnBDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFDNUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUd0QywyQkFBc0IsR0FBRyxLQUFLLENBQUM7SUFGdEMsQ0FBQztJQUlKLFdBQVc7UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFO1lBQ3RELENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO1lBQ1YsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQzVDLGNBQWMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxFQUFFLENBQUMsRUFDbkQsR0FBRyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsRUFBRSxFQUFFOztnQkFDMUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGtDQUFrQyxDQUNoRSxvQkFBb0IsYUFBcEIsb0JBQW9CLHVCQUFwQixvQkFBb0IsQ0FBRSxpQkFBaUIsQ0FDeEMsQ0FBQztnQkFFRixJQUFJLENBQUEsTUFBQSxvQkFBb0IsYUFBcEIsb0JBQW9CLHVCQUFwQixvQkFBb0IsQ0FBRSxpQkFBaUIsMENBQUUsTUFBTSxNQUFLLENBQUMsRUFBRTtvQkFDekQsSUFBSSx1QkFBdUIsQ0FBQztvQkFFNUIsSUFDRSxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUM7d0JBQ3hCLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSTs2QkFDekIsb0JBQW9CLGFBQXBCLG9CQUFvQix1QkFBcEIsb0JBQW9CLENBQUUsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQ3JELElBQUksQ0FBQTt3QkFDVCxDQUFBLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxVQUFVOzRCQUNuRCx3QkFBd0IsQ0FBQyxRQUFRLEVBQ25DO3dCQUNBLHVCQUF1QixHQUFHOzRCQUN4QixHQUFHLEVBQUUsNkJBQTZCOzRCQUNsQyxNQUFNLEVBQUU7Z0NBQ04sSUFBSSxFQUFFLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxLQUFLLENBQ25ELE9BQU8sQ0FBQyxJQUFJOzZCQUNoQjt5QkFDRixDQUFDO3FCQUNIO3lCQUFNO3dCQUNMLHVCQUF1QixHQUFHOzRCQUN4QixHQUFHLEVBQUUsNENBQTRDO3lCQUNsRCxDQUFDO3FCQUNIO29CQUVELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQzNCLHVCQUF1QixFQUN2QixpQkFBaUIsQ0FBQyxjQUFjLEVBQ2hDLElBQUksQ0FBQyxzQkFBc0IsQ0FDNUIsQ0FBQztvQkFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztvQkFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQ25FO2dCQUVELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNSLENBQUM7O2dIQTNEVSxtQkFBbUI7b0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzJGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5BY3RpdmF0ZSwgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDYXJ0VmFsaWRhdGlvblNlcnZpY2UsXG4gIFNlbWFudGljUGF0aFNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VTZXJ2aWNlLFxuICBBY3RpdmVDYXJ0U2VydmljZSxcbiAgR2xvYmFsTWVzc2FnZVR5cGUsXG4gIENhcnRDb25maWdTZXJ2aWNlLFxuICBDYXJ0VmFsaWRhdGlvblN0YXR1c0NvZGUsXG59IGZyb20gJ0BzcGFydGFjdXMvY29yZSc7XG5pbXBvcnQgeyBtYXAsIHdpdGhMYXRlc3RGcm9tIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FydFZhbGlkYXRpb25TdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LXZhbGlkYXRpb24tc3RhdGUuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJ0VmFsaWRhdGlvbkd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2FydFZhbGlkYXRpb25TZXJ2aWNlOiBDYXJ0VmFsaWRhdGlvblNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHNlbWFudGljUGF0aFNlcnZpY2U6IFNlbWFudGljUGF0aFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJvdXRlcjogUm91dGVyLFxuICAgIHByb3RlY3RlZCBnbG9iYWxNZXNzYWdlU2VydmljZTogR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFjdGl2ZUNhcnRTZXJ2aWNlOiBBY3RpdmVDYXJ0U2VydmljZSxcbiAgICBwcm90ZWN0ZWQgY2FydFZhbGlkYXRpb25TdGF0ZVNlcnZpY2U6IENhcnRWYWxpZGF0aW9uU3RhdGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBjYXJ0Q29uZmlnU2VydmljZTogQ2FydENvbmZpZ1NlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBHTE9CQUxfTUVTU0FHRV9USU1FT1VUID0gMTAwMDA7XG5cbiAgY2FuQWN0aXZhdGUoKTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4ge1xuICAgIHJldHVybiAhdGhpcy5jYXJ0Q29uZmlnU2VydmljZS5pc0NhcnRWYWxpZGF0aW9uRW5hYmxlZCgpXG4gICAgICA/IG9mKHRydWUpXG4gICAgICA6IHRoaXMuY2FydFZhbGlkYXRpb25TZXJ2aWNlLnZhbGlkYXRlQ2FydCgpLnBpcGUoXG4gICAgICAgICAgd2l0aExhdGVzdEZyb20odGhpcy5hY3RpdmVDYXJ0U2VydmljZS5nZXRFbnRyaWVzKCkpLFxuICAgICAgICAgIG1hcCgoW2NhcnRNb2RpZmljYXRpb25MaXN0LCBjYXJ0RW50cmllc10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FydFZhbGlkYXRpb25TdGF0ZVNlcnZpY2UudXBkYXRlVmFsaWRhdGlvblJlc3VsdEFuZFJvdXRpbmdJZChcbiAgICAgICAgICAgICAgY2FydE1vZGlmaWNhdGlvbkxpc3Q/LmNhcnRNb2RpZmljYXRpb25zXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoY2FydE1vZGlmaWNhdGlvbkxpc3Q/LmNhcnRNb2RpZmljYXRpb25zPy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25SZXN1bHRNZXNzYWdlO1xuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBjYXJ0RW50cmllcy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgICBjYXJ0RW50cmllc1swXS5wcm9kdWN0LmNvZGUgPT09XG4gICAgICAgICAgICAgICAgICBjYXJ0TW9kaWZpY2F0aW9uTGlzdD8uY2FydE1vZGlmaWNhdGlvbnNbMF0uZW50cnkucHJvZHVjdFxuICAgICAgICAgICAgICAgICAgICAuY29kZSAmJlxuICAgICAgICAgICAgICAgIGNhcnRNb2RpZmljYXRpb25MaXN0Py5jYXJ0TW9kaWZpY2F0aW9uc1swXS5zdGF0dXNDb2RlID09PVxuICAgICAgICAgICAgICAgICAgQ2FydFZhbGlkYXRpb25TdGF0dXNDb2RlLk5PX1NUT0NLXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICAgICAga2V5OiAndmFsaWRhdGlvbi5jYXJ0RW50cnlSZW1vdmVkJyxcbiAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBjYXJ0TW9kaWZpY2F0aW9uTGlzdD8uY2FydE1vZGlmaWNhdGlvbnNbMF0uZW50cnlcbiAgICAgICAgICAgICAgICAgICAgICAucHJvZHVjdC5uYW1lLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25SZXN1bHRNZXNzYWdlID0ge1xuICAgICAgICAgICAgICAgICAga2V5OiAndmFsaWRhdGlvbi5jYXJ0RW50cmllc0NoYW5nZUR1cmluZ0NoZWNrb3V0JyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgdGhpcy5nbG9iYWxNZXNzYWdlU2VydmljZS5hZGQoXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvblJlc3VsdE1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgR2xvYmFsTWVzc2FnZVR5cGUuTVNHX1RZUEVfRVJST1IsXG4gICAgICAgICAgICAgICAgdGhpcy5HTE9CQUxfTUVTU0FHRV9USU1FT1VUXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2FydFNlcnZpY2UucmVsb2FkQWN0aXZlQ2FydCgpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIucGFyc2VVcmwodGhpcy5zZW1hbnRpY1BhdGhTZXJ2aWNlLmdldCgnY2FydCcpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgfVxufVxuIl19