@spartacus/core
Version:
Spartacus - the core framework
62 lines • 14.3 kB
JavaScript
import { __decorate } from "tslib";
import { Injectable } from '@angular/core';
import { Effect, ofType } from '@ngrx/effects';
import { of } from 'rxjs';
import { catchError, map, mergeMap } from 'rxjs/operators';
import * as fromCustomerCouponsAction from '../actions/customer-coupon.action';
import { normalizeHttpError } from '../../../util/normalize-http-error';
import * as i0 from "@angular/core";
import * as i1 from "@ngrx/effects";
import * as i2 from "../../connectors/customer-coupon/customer-coupon.connector";
export class CustomerCouponEffects {
constructor(actions$, customerCouponConnector) {
this.actions$ = actions$;
this.customerCouponConnector = customerCouponConnector;
this.loadCustomerCoupons$ = this.actions$.pipe(ofType(fromCustomerCouponsAction.LOAD_CUSTOMER_COUPONS), map((action) => action.payload), mergeMap((payload) => {
return this.customerCouponConnector
.getCustomerCoupons(payload.userId, payload.pageSize, payload.currentPage, payload.sort)
.pipe(map((coupons) => {
return new fromCustomerCouponsAction.LoadCustomerCouponsSuccess(coupons);
}), catchError((error) => of(new fromCustomerCouponsAction.LoadCustomerCouponsFail(normalizeHttpError(error)))));
}));
this.subscribeCustomerCoupon$ = this.actions$.pipe(ofType(fromCustomerCouponsAction.SUBSCRIBE_CUSTOMER_COUPON), map((action) => action.payload), mergeMap((payload) => {
return this.customerCouponConnector
.turnOnNotification(payload.userId, payload.couponCode)
.pipe(map((data) => {
return new fromCustomerCouponsAction.SubscribeCustomerCouponSuccess(data);
}), catchError((error) => of(new fromCustomerCouponsAction.SubscribeCustomerCouponFail(normalizeHttpError(error)))));
}));
this.unsubscribeCustomerCoupon$ = this.actions$.pipe(ofType(fromCustomerCouponsAction.UNSUBSCRIBE_CUSTOMER_COUPON), map((action) => action.payload), mergeMap((payload) => {
return this.customerCouponConnector
.turnOffNotification(payload.userId, payload.couponCode)
.pipe(map(() => {
return new fromCustomerCouponsAction.UnsubscribeCustomerCouponSuccess(payload.couponCode);
}), catchError((error) => of(new fromCustomerCouponsAction.UnsubscribeCustomerCouponFail(normalizeHttpError(error)))));
}));
this.claimCustomerCoupon$ = this.actions$.pipe(ofType(fromCustomerCouponsAction.CLAIM_CUSTOMER_COUPON), map((action) => action.payload), mergeMap((payload) => {
return this.customerCouponConnector
.claimCustomerCoupon(payload.userId, payload.couponCode)
.pipe(map((data) => {
return new fromCustomerCouponsAction.ClaimCustomerCouponSuccess(data);
}), catchError((error) => of(new fromCustomerCouponsAction.ClaimCustomerCouponFail(normalizeHttpError(error)))));
}));
}
}
CustomerCouponEffects.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CustomerCouponEffects, deps: [{ token: i1.Actions }, { token: i2.CustomerCouponConnector }], target: i0.ɵɵFactoryTarget.Injectable });
CustomerCouponEffects.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CustomerCouponEffects });
__decorate([
Effect()
], CustomerCouponEffects.prototype, "loadCustomerCoupons$", void 0);
__decorate([
Effect()
], CustomerCouponEffects.prototype, "subscribeCustomerCoupon$", void 0);
__decorate([
Effect()
], CustomerCouponEffects.prototype, "unsubscribeCustomerCoupon$", void 0);
__decorate([
Effect()
], CustomerCouponEffects.prototype, "claimCustomerCoupon$", void 0);
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: CustomerCouponEffects, decorators: [{
type: Injectable
}], ctorParameters: function () { return [{ type: i1.Actions }, { type: i2.CustomerCouponConnector }]; }, propDecorators: { loadCustomerCoupons$: [], subscribeCustomerCoupon$: [], unsubscribeCustomerCoupon$: [], claimCustomerCoupon$: [] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY291cG9uLmVmZmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL3VzZXIvc3RvcmUvZWZmZWN0cy9jdXN0b21lci1jb3Vwb24uZWZmZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxLQUFLLHlCQUF5QixNQUFNLG1DQUFtQyxDQUFDO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDOzs7O0FBR3hFLE1BQU0sT0FBTyxxQkFBcUI7SUFzSGhDLFlBQ1UsUUFBaUIsRUFDakIsdUJBQWdEO1FBRGhELGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQXRIMUQseUJBQW9CLEdBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNoQixNQUFNLENBQUMseUJBQXlCLENBQUMscUJBQXFCLENBQUMsRUFDdkQsR0FBRyxDQUNELENBQUMsTUFBcUQsRUFBRSxFQUFFLENBQ3hELE1BQU0sQ0FBQyxPQUFPLENBQ2pCLEVBQ0QsUUFBUSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbkIsT0FBTyxJQUFJLENBQUMsdUJBQXVCO2lCQUNoQyxrQkFBa0IsQ0FDakIsT0FBTyxDQUFDLE1BQU0sRUFDZCxPQUFPLENBQUMsUUFBUSxFQUNoQixPQUFPLENBQUMsV0FBVyxFQUNuQixPQUFPLENBQUMsSUFBSSxDQUNiO2lCQUNB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QixDQUFDLHVCQUF1QixDQUNuRCxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FDRixDQUNGLENBQ0YsQ0FBQztRQUNOLENBQUMsQ0FBQyxDQUNILENBQUM7SUFLRCxDQUFDOztrSEF6SE8scUJBQXFCO3NIQUFyQixxQkFBcUI7QUFFaEM7SUFEQyxNQUFNLEVBQUU7bUVBK0JMO0FBR0o7SUFEQyxNQUFNLEVBQUU7dUVBMEJMO0FBR0o7SUFEQyxNQUFNLEVBQUU7eUVBMEJMO0FBR0o7SUFEQyxNQUFNLEVBQUU7bUVBMEJMOzJGQXBITyxxQkFBcUI7a0JBRGpDLFVBQVU7b0lBR1Qsb0JBQW9CLE1BaUNwQix3QkFBd0IsTUE0QnhCLDBCQUEwQixNQTRCMUIsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9ucywgRWZmZWN0LCBvZlR5cGUgfSBmcm9tICdAbmdyeC9lZmZlY3RzJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIG1lcmdlTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0ICogYXMgZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbiBmcm9tICcuLi9hY3Rpb25zL2N1c3RvbWVyLWNvdXBvbi5hY3Rpb24nO1xuaW1wb3J0IHsgQ3VzdG9tZXJDb3Vwb25Db25uZWN0b3IgfSBmcm9tICcuLi8uLi9jb25uZWN0b3JzL2N1c3RvbWVyLWNvdXBvbi9jdXN0b21lci1jb3Vwb24uY29ubmVjdG9yJztcbmltcG9ydCB7IEN1c3RvbWVyQ291cG9uU2VhcmNoUmVzdWx0IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvY3VzdG9tZXItY291cG9uLm1vZGVsJztcbmltcG9ydCB7IG5vcm1hbGl6ZUh0dHBFcnJvciB9IGZyb20gJy4uLy4uLy4uL3V0aWwvbm9ybWFsaXplLWh0dHAtZXJyb3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDb3Vwb25FZmZlY3RzIHtcbiAgQEVmZmVjdCgpXG4gIGxvYWRDdXN0b21lckNvdXBvbnMkOiBPYnNlcnZhYmxlPGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uQ3VzdG9tZXJDb3Vwb25BY3Rpb24+ID1cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5MT0FEX0NVU1RPTUVSX0NPVVBPTlMpLFxuICAgICAgbWFwKFxuICAgICAgICAoYWN0aW9uOiBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLkxvYWRDdXN0b21lckNvdXBvbnMpID0+XG4gICAgICAgICAgYWN0aW9uLnBheWxvYWRcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21lckNvdXBvbkNvbm5lY3RvclxuICAgICAgICAgIC5nZXRDdXN0b21lckNvdXBvbnMoXG4gICAgICAgICAgICBwYXlsb2FkLnVzZXJJZCxcbiAgICAgICAgICAgIHBheWxvYWQucGFnZVNpemUsXG4gICAgICAgICAgICBwYXlsb2FkLmN1cnJlbnRQYWdlLFxuICAgICAgICAgICAgcGF5bG9hZC5zb3J0XG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChjb3Vwb25zOiBDdXN0b21lckNvdXBvblNlYXJjaFJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gbmV3IGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uTG9hZEN1c3RvbWVyQ291cG9uc1N1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgY291cG9uc1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT5cbiAgICAgICAgICAgICAgb2YoXG4gICAgICAgICAgICAgICAgbmV3IGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uTG9hZEN1c3RvbWVyQ291cG9uc0ZhaWwoXG4gICAgICAgICAgICAgICAgICBub3JtYWxpemVIdHRwRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICBARWZmZWN0KClcbiAgc3Vic2NyaWJlQ3VzdG9tZXJDb3Vwb24kOiBPYnNlcnZhYmxlPGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uQ3VzdG9tZXJDb3Vwb25BY3Rpb24+ID1cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5TVUJTQ1JJQkVfQ1VTVE9NRVJfQ09VUE9OKSxcbiAgICAgIG1hcChcbiAgICAgICAgKGFjdGlvbjogZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5TdWJzY3JpYmVDdXN0b21lckNvdXBvbikgPT5cbiAgICAgICAgICBhY3Rpb24ucGF5bG9hZFxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbWVyQ291cG9uQ29ubmVjdG9yXG4gICAgICAgICAgLnR1cm5Pbk5vdGlmaWNhdGlvbihwYXlsb2FkLnVzZXJJZCwgcGF5bG9hZC5jb3Vwb25Db2RlKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLlN1YnNjcmliZUN1c3RvbWVyQ291cG9uU3VjY2VzcyhcbiAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PlxuICAgICAgICAgICAgICBvZihcbiAgICAgICAgICAgICAgICBuZXcgZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5TdWJzY3JpYmVDdXN0b21lckNvdXBvbkZhaWwoXG4gICAgICAgICAgICAgICAgICBub3JtYWxpemVIdHRwRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKTtcblxuICBARWZmZWN0KClcbiAgdW5zdWJzY3JpYmVDdXN0b21lckNvdXBvbiQ6IE9ic2VydmFibGU8ZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5DdXN0b21lckNvdXBvbkFjdGlvbj4gPVxuICAgIHRoaXMuYWN0aW9ucyQucGlwZShcbiAgICAgIG9mVHlwZShmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLlVOU1VCU0NSSUJFX0NVU1RPTUVSX0NPVVBPTiksXG4gICAgICBtYXAoXG4gICAgICAgIChhY3Rpb246IGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uVW5zdWJzY3JpYmVDdXN0b21lckNvdXBvbikgPT5cbiAgICAgICAgICBhY3Rpb24ucGF5bG9hZFxuICAgICAgKSxcbiAgICAgIG1lcmdlTWFwKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1c3RvbWVyQ291cG9uQ29ubmVjdG9yXG4gICAgICAgICAgLnR1cm5PZmZOb3RpZmljYXRpb24ocGF5bG9hZC51c2VySWQsIHBheWxvYWQuY291cG9uQ29kZSlcbiAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBuZXcgZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5VbnN1YnNjcmliZUN1c3RvbWVyQ291cG9uU3VjY2VzcyhcbiAgICAgICAgICAgICAgICBwYXlsb2FkLmNvdXBvbkNvZGVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgICAgICAgIG9mKFxuICAgICAgICAgICAgICAgIG5ldyBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLlVuc3Vic2NyaWJlQ3VzdG9tZXJDb3Vwb25GYWlsKFxuICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSHR0cEVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgQEVmZmVjdCgpXG4gIGNsYWltQ3VzdG9tZXJDb3Vwb24kOiBPYnNlcnZhYmxlPGZyb21DdXN0b21lckNvdXBvbnNBY3Rpb24uQ3VzdG9tZXJDb3Vwb25BY3Rpb24+ID1cbiAgICB0aGlzLmFjdGlvbnMkLnBpcGUoXG4gICAgICBvZlR5cGUoZnJvbUN1c3RvbWVyQ291cG9uc0FjdGlvbi5DTEFJTV9DVVNUT01FUl9DT1VQT04pLFxuICAgICAgbWFwKFxuICAgICAgICAoYWN0aW9uOiBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLkNsYWltQ3VzdG9tZXJDb3Vwb24pID0+XG4gICAgICAgICAgYWN0aW9uLnBheWxvYWRcbiAgICAgICksXG4gICAgICBtZXJnZU1hcCgocGF5bG9hZCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXN0b21lckNvdXBvbkNvbm5lY3RvclxuICAgICAgICAgIC5jbGFpbUN1c3RvbWVyQ291cG9uKHBheWxvYWQudXNlcklkLCBwYXlsb2FkLmNvdXBvbkNvZGUpXG4gICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIG5ldyBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLkNsYWltQ3VzdG9tZXJDb3Vwb25TdWNjZXNzKFxuICAgICAgICAgICAgICAgIGRhdGFcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+XG4gICAgICAgICAgICAgIG9mKFxuICAgICAgICAgICAgICAgIG5ldyBmcm9tQ3VzdG9tZXJDb3Vwb25zQWN0aW9uLkNsYWltQ3VzdG9tZXJDb3Vwb25GYWlsKFxuICAgICAgICAgICAgICAgICAgbm9ybWFsaXplSHR0cEVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhY3Rpb25zJDogQWN0aW9ucyxcbiAgICBwcml2YXRlIGN1c3RvbWVyQ291cG9uQ29ubmVjdG9yOiBDdXN0b21lckNvdXBvbkNvbm5lY3RvclxuICApIHt9XG59XG4iXX0=