66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
import { Cat } from 'thundercats';
|
|
import stamp from 'stampit';
|
|
import { Disposable, Observable } from 'rx';
|
|
|
|
import { post$, postJSON$ } from '../utils/ajax-stream.js';
|
|
import { AppActions, AppStore } from './flux';
|
|
import { HikesActions } from './routes/Hikes/flux';
|
|
import { JobActions } from './routes/Jobs/flux';
|
|
|
|
const ajaxStamp = stamp({
|
|
methods: {
|
|
postJSON$,
|
|
post$
|
|
}
|
|
});
|
|
|
|
export default Cat().init(({ instance: cat, args: [services] }) => {
|
|
const serviceStamp = stamp({
|
|
methods: {
|
|
readService$(resource, params, config) {
|
|
|
|
return Observable.create(function(observer) {
|
|
services.read(resource, params, config, (err, res) => {
|
|
if (err) {
|
|
return observer.onError(err);
|
|
}
|
|
|
|
observer.onNext(res);
|
|
observer.onCompleted();
|
|
});
|
|
|
|
return Disposable.create(function() {
|
|
observer.dispose();
|
|
});
|
|
});
|
|
},
|
|
createService$(resource, params, body, config) {
|
|
return Observable.create(function(observer) {
|
|
services.create(resource, params, body, config, (err, res) => {
|
|
if (err) {
|
|
return observer.onError(err);
|
|
}
|
|
|
|
observer.onNext(res);
|
|
observer.onCompleted();
|
|
});
|
|
|
|
return Disposable.create(function() {
|
|
observer.dispose();
|
|
});
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
cat.register(HikesActions.compose(serviceStamp, ajaxStamp), null, services);
|
|
cat.register(AppActions.compose(serviceStamp), null, services);
|
|
cat.register(
|
|
JobActions.compose(serviceStamp, ajaxStamp),
|
|
null,
|
|
cat,
|
|
services
|
|
);
|
|
cat.register(AppStore, null, cat);
|
|
});
|