fetch/set current hike shouldn't pass state around

This commit is contained in:
Berkeley Martinez
2015-07-16 17:10:15 -07:00
parent 2d5013d9ae
commit dd72b57d56
3 changed files with 22 additions and 29 deletions

View File

@ -8,14 +8,13 @@ export default contain(
{ {
store: 'hikesStore', store: 'hikesStore',
fetchAction: 'hikesActions.fetchHikes', fetchAction: 'hikesActions.fetchHikes',
getPayload: (props) => ({ isPrimed: props.isPrimed }) getPayload: ({ hikes }) => ({ isPrimed: (hikes && !!hikes.length) })
}, },
stampit(React, { stampit(React, {
displayName: 'HikesMap', displayName: 'HikesMap',
propTypes: { propTypes: {
hikes: PropTypes.array, hikes: PropTypes.array
isPrimed: PropTypes.bool
}, },
render() { render() {

View File

@ -1,4 +1,3 @@
import { helpers } from 'rx';
import { Actions } from 'thundercats'; import { Actions } from 'thundercats';
import assign from 'object.assign'; import assign from 'object.assign';
import debugFactory from 'debug'; import debugFactory from 'debug';
@ -13,18 +12,7 @@ export default Actions({
// start fetching hikes // start fetching hikes
fetchHikes: null, fetchHikes: null,
// set hikes on store // set hikes on store
setHikes(hikes) { setHikes: null,
return {
currentHike: hikes[0],
hikes,
isPrimed: true
};
},
reEmit() {
return helpers.identity;
},
fetchCurrentHike: null, fetchCurrentHike: null,
setCurrentHike: null setCurrentHike: null
@ -35,13 +23,26 @@ export default Actions({
instance.fetchHikes.subscribe( instance.fetchHikes.subscribe(
({ isPrimed }) => { ({ isPrimed }) => {
if (isPrimed) { if (isPrimed) {
return instance.reEmit(); return instance.setHikes({
transformer: (oldState) => {
const { hikes } = oldState;
const newState = {
currentHike: (oldState.currentHike || hikes[0] || {})
};
return assign({}, oldState, newState);
}
});
} }
service.read('hikes', null, null, (err, hikes) => { service.read('hikes', null, null, (err, hikes) => {
if (err) { if (err) {
debug('an error occurred fetching hikes', err); debug('an error occurred fetching hikes', err);
} }
instance.setHikes(hikes); instance.setHikes({
set: {
hikes: hikes,
currentHike: hikes[0] || {}
}
});
}); });
} }
); );

View File

@ -1,9 +1,8 @@
import { Store } from 'thundercats'; import { Store } from 'thundercats';
const { fromMany, setter, transformer } = Store; const { fromMany } = Store;
const initialValue = { const initialValue = {
hikes: [], hikes: [],
isPrimed: false,
currentHike: {} currentHike: {}
}; };
@ -13,15 +12,9 @@ export default Store(initialValue)
const [cat] = args; const [cat] = args;
let { let {
setHikes, setHikes,
setCurrentHike, setCurrentHike
reEmit
} = cat.getActions('hikesActions'); } = cat.getActions('hikesActions');
instance.register( instance.register(fromMany(setHikes, setCurrentHike));
fromMany(
setter(setHikes),
setCurrentHike,
transformer(reEmit)
)
);
return instance; return instance;
}); });