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',
fetchAction: 'hikesActions.fetchHikes',
getPayload: (props) => ({ isPrimed: props.isPrimed })
getPayload: ({ hikes }) => ({ isPrimed: (hikes && !!hikes.length) })
},
stampit(React, {
displayName: 'HikesMap',
propTypes: {
hikes: PropTypes.array,
isPrimed: PropTypes.bool
hikes: PropTypes.array
},
render() {

View File

@ -1,4 +1,3 @@
import { helpers } from 'rx';
import { Actions } from 'thundercats';
import assign from 'object.assign';
import debugFactory from 'debug';
@ -13,18 +12,7 @@ export default Actions({
// start fetching hikes
fetchHikes: null,
// set hikes on store
setHikes(hikes) {
return {
currentHike: hikes[0],
hikes,
isPrimed: true
};
},
reEmit() {
return helpers.identity;
},
setHikes: null,
fetchCurrentHike: null,
setCurrentHike: null
@ -35,13 +23,26 @@ export default Actions({
instance.fetchHikes.subscribe(
({ 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) => {
if (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';
const { fromMany, setter, transformer } = Store;
const { fromMany } = Store;
const initialValue = {
hikes: [],
isPrimed: false,
currentHike: {}
};
@ -13,15 +12,9 @@ export default Store(initialValue)
const [cat] = args;
let {
setHikes,
setCurrentHike,
reEmit
setCurrentHike
} = cat.getActions('hikesActions');
instance.register(
fromMany(
setter(setHikes),
setCurrentHike,
transformer(reEmit)
)
);
instance.register(fromMany(setHikes, setCurrentHike));
return instance;
});