mst-effect
Version:
Designed to be used with MobX-State-Tree to create asynchronous actions using RxJS.
20 lines (19 loc) • 665 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.effect = void 0;
const mobx_state_tree_1 = require("mobx-state-tree");
const rxjs_1 = require("rxjs");
const utils_1 = require("./utils");
function effect(self, factory) {
const payloadSource = new rxjs_1.Subject();
const effect$ = factory(payloadSource.asObservable());
const subscription = (0, utils_1.subscribe)(self, factory, effect$);
(0, mobx_state_tree_1.addDisposer)(self, () => {
payloadSource.complete();
subscription.unsubscribe();
});
return (payload) => {
payloadSource.next(payload);
};
}
exports.effect = effect;