diff --git a/common/app/routes/Hikes/components/Map.jsx b/common/app/routes/Hikes/components/Map.jsx index 7ea53ec326..b94e68f6fa 100644 --- a/common/app/routes/Hikes/components/Map.jsx +++ b/common/app/routes/Hikes/components/Map.jsx @@ -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() { diff --git a/common/app/routes/Hikes/flux/Actions.js b/common/app/routes/Hikes/flux/Actions.js index e748bf903b..0d2d315920 100644 --- a/common/app/routes/Hikes/flux/Actions.js +++ b/common/app/routes/Hikes/flux/Actions.js @@ -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] || {} + } + }); }); } ); diff --git a/common/app/routes/Hikes/flux/Store.js b/common/app/routes/Hikes/flux/Store.js index 387e3ff0e4..1af8badd67 100644 --- a/common/app/routes/Hikes/flux/Store.js +++ b/common/app/routes/Hikes/flux/Store.js @@ -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; });