fetch/set current hike shouldn't pass state around
This commit is contained in:
@ -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() {
|
||||||
|
@ -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] || {}
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
@ -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;
|
||||||
});
|
});
|
||||||
|
Reference in New Issue
Block a user