@sigi/react
Version:
React bindings for sigi framework
67 lines • 2.15 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Effect, EffectModule, ImmerReducer, Module } from '@sigi/core';
import { Injectable } from '@sigi/di';
import { endWith, map, mergeMap, Observable, of, switchMap } from 'rxjs';
let Service = class Service {
getName() {
return of('client service');
}
};
Service = __decorate([
Injectable()
], Service);
export { Service };
let ServiceModule = class ServiceModule extends EffectModule {
constructor(service) {
super();
this.service = service;
this.defaultState = { count: 0, name: '' };
}
setName(state, name) {
state.name = name;
}
setNameEffect(payload$) {
return payload$.pipe(switchMap(() => this.service.getName().pipe(map((name) => this.getActions().setName(name)), endWith(this.terminate()))));
}
setNameWithFailure(payload$) {
return payload$.pipe(mergeMap((p) => {
if (p) {
return of(this.retryOnClient().setNameWithFailure(), this.terminate());
}
return of(this.getActions().setName('From retry'));
}));
}
};
__decorate([
ImmerReducer(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, String]),
__metadata("design:returntype", void 0)
], ServiceModule.prototype, "setName", null);
__decorate([
Effect({
ssr: true,
}),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Observable]),
__metadata("design:returntype", void 0)
], ServiceModule.prototype, "setNameEffect", null);
__decorate([
Effect({
payloadGetter: (ctx, skip) => {
if (!ctx.failure) {
return skip;
}
return 1;
},
}),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Observable]),
__metadata("design:returntype", void 0)
], ServiceModule.prototype, "setNameWithFailure", null);
ServiceModule = __decorate([
Module('ServiceModule'),
__metadata("design:paramtypes", [Service])
], ServiceModule);
export { ServiceModule };
//# sourceMappingURL=service.js.map