mst-effect
Version:
Designed to be used with MobX-State-Tree to create asynchronous actions using RxJS.
22 lines (21 loc) • 909 B
JavaScript
import { catchError, tap } from 'rxjs/operators';
import { EFFECT_ACTIONS_HANDLER } from '../const';
export function subscribe(self, factory, actions$) {
if (!self[EFFECT_ACTIONS_HANDLER]) {
console.warn(`[mst-effect]: Make sure the 'types' is imported from 'mst-effect' instead of 'mobx-state-tree'`);
}
return actions$
.pipe(tap((actions) => { var _a; return (_a = self[EFFECT_ACTIONS_HANDLER]) === null || _a === void 0 ? void 0 : _a.call(self, actions); }), logAngIgnoreError(factory))
.subscribe();
function logAngIgnoreError(factory) {
return catchError((err, caught) => {
/* eslint-disable no-console */
console.group('[mst-effect]: error');
console.log(factory);
console.error(err);
console.groupEnd();
/* eslint-enable no-console */
return caught;
});
}
}