From dd72b57d56c96508c272c8864a78293607b5f55c Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Thu, 16 Jul 2015 17:10:15 -0700 Subject: [PATCH] fetch/set current hike shouldn't pass state around --- common/app/routes/Hikes/components/Map.jsx | 5 ++-- common/app/routes/Hikes/flux/Actions.js | 31 +++++++++++----------- common/app/routes/Hikes/flux/Store.js | 15 +++-------- 3 files changed, 22 insertions(+), 29 deletions(-) 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; });