@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
41 lines • 5.34 kB
JavaScript
import { Injectable } from '@angular/core';
import { isNotUndefined, } from '@spartacus/core';
import { of } from 'rxjs';
import { distinctUntilChanged, filter, map, switchMap } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/core";
export class CurrentProductService {
constructor(routingService, productService) {
this.routingService = routingService;
this.productService = productService;
this.DEFAULT_PRODUCT_SCOPE = "details" /* DETAILS */;
}
/**
* Returns an observable for the current product
* @returns Product
* @returns null if product can't be found
*
* @param scopes
*/
getProduct(scopes) {
return this.getCode().pipe(distinctUntilChanged(), switchMap((productCode) => {
return productCode
? this.productService.get(productCode, scopes || this.DEFAULT_PRODUCT_SCOPE)
: of(null);
}), filter(isNotUndefined));
}
getCode() {
return this.routingService
.getRouterState()
.pipe(map((state) => state.state.params['productCode']));
}
}
CurrentProductService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrentProductService, deps: [{ token: i1.RoutingService }, { token: i1.ProductService }], target: i0.ɵɵFactoryTarget.Injectable });
CurrentProductService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrentProductService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CurrentProductService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.RoutingService }, { type: i1.ProductService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVudC1wcm9kdWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL2Ntcy1jb21wb25lbnRzL3Byb2R1Y3QvY3VycmVudC1wcm9kdWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsY0FBYyxHQUtmLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSzlFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDVSxjQUE4QixFQUM5QixjQUE4QjtRQUQ5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBR3JCLDBCQUFxQiwyQkFBd0I7SUFGN0QsQ0FBQztJQUlKOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FDUixNQUEwRDtRQUUxRCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQ3hCLG9CQUFvQixFQUFFLEVBQ3RCLFNBQVMsQ0FBQyxDQUFDLFdBQW1CLEVBQUUsRUFBRTtZQUNoQyxPQUFPLFdBQVc7Z0JBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsV0FBVyxFQUNYLE1BQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQ3JDO2dCQUNILENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixDQUFDLENBQUMsRUFDRixNQUFNLENBQUMsY0FBYyxDQUFDLENBQ3ZCLENBQUM7SUFDSixDQUFDO0lBRVMsT0FBTztRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWM7YUFDdkIsY0FBYyxFQUFFO2FBQ2hCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDOztrSEFwQ1UscUJBQXFCO3NIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTsyRkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgaXNOb3RVbmRlZmluZWQsXG4gIFByb2R1Y3QsXG4gIFByb2R1Y3RTY29wZSxcbiAgUHJvZHVjdFNlcnZpY2UsXG4gIFJvdXRpbmdTZXJ2aWNlLFxufSBmcm9tICdAc3BhcnRhY3VzL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQ3VycmVudFByb2R1Y3RTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0aW5nU2VydmljZTogUm91dGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBwcm9kdWN0U2VydmljZTogUHJvZHVjdFNlcnZpY2VcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBERUZBVUxUX1BST0RVQ1RfU0NPUEUgPSBQcm9kdWN0U2NvcGUuREVUQUlMUztcblxuICAvKipcbiAgICogUmV0dXJucyBhbiBvYnNlcnZhYmxlIGZvciB0aGUgY3VycmVudCBwcm9kdWN0XG4gICAqIEByZXR1cm5zIFByb2R1Y3RcbiAgICogQHJldHVybnMgbnVsbCBpZiBwcm9kdWN0IGNhbid0IGJlIGZvdW5kXG4gICAqXG4gICAqIEBwYXJhbSBzY29wZXNcbiAgICovXG4gIGdldFByb2R1Y3QoXG4gICAgc2NvcGVzPzogKFByb2R1Y3RTY29wZSB8IHN0cmluZylbXSB8IFByb2R1Y3RTY29wZSB8IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFByb2R1Y3QgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29kZSgpLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKChwcm9kdWN0Q29kZTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9kdWN0Q29kZVxuICAgICAgICAgID8gdGhpcy5wcm9kdWN0U2VydmljZS5nZXQoXG4gICAgICAgICAgICAgIHByb2R1Y3RDb2RlLFxuICAgICAgICAgICAgICBzY29wZXMgfHwgdGhpcy5ERUZBVUxUX1BST0RVQ1RfU0NPUEVcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IG9mKG51bGwpO1xuICAgICAgfSksXG4gICAgICBmaWx0ZXIoaXNOb3RVbmRlZmluZWQpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRDb2RlKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGluZ1NlcnZpY2VcbiAgICAgIC5nZXRSb3V0ZXJTdGF0ZSgpXG4gICAgICAucGlwZShtYXAoKHN0YXRlKSA9PiBzdGF0ZS5zdGF0ZS5wYXJhbXNbJ3Byb2R1Y3RDb2RlJ10pKTtcbiAgfVxufVxuIl19