From 5d95a98b645a467f4167a90179231d5fdf681367 Mon Sep 17 00:00:00 2001 From: Berkeley Martinez Date: Tue, 10 May 2016 21:25:12 -0700 Subject: [PATCH] update current challenge on map click --- .../routes/challenges/components/map/Block.jsx | 17 +++++++++++------ .../routes/challenges/components/map/Map.jsx | 8 ++++---- .../routes/challenges/components/map/Show.jsx | 7 ++----- common/app/routes/challenges/redux/reducer.js | 5 ++--- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/common/app/routes/challenges/components/map/Block.jsx b/common/app/routes/challenges/components/map/Block.jsx index 0687a2731a..1d1bfddf94 100644 --- a/common/app/routes/challenges/components/map/Block.jsx +++ b/common/app/routes/challenges/components/map/Block.jsx @@ -1,21 +1,24 @@ import React, { PropTypes } from 'react'; import { Link } from 'react-router'; +import { connect } from 'react-redux'; import FA from 'react-fontawesome'; import PureComponent from 'react-pure-render/component'; import { Panel } from 'react-bootstrap'; import classnames from 'classnames'; +import { updateCurrentChallenge } from '../../redux/actions'; -export default class Block extends PureComponent { +const dispatchActions = { updateCurrentChallenge }; +export class Block extends PureComponent { static displayName = 'Block'; static propTypes = { title: PropTypes.string, time: PropTypes.string, challenges: PropTypes.array, - setChallenge: PropTypes.func + updateCurrentChallenge: PropTypes.func }; - renderChallenges(challenges, setChallenge) { + renderChallenges(challenges, updateCurrentChallenge) { if (!Array.isArray(challenges) || !challenges.length) { return
No Challenges Found
; } @@ -50,7 +53,7 @@ export default class Block extends PureComponent { key={ title }> setChallenge(challenge) }> + onClick={ () => updateCurrentChallenge(challenge) }> { title } complete { @@ -66,7 +69,7 @@ export default class Block extends PureComponent { } render() { - const { title, time, challenges, setChallenge } = this.props; + const { title, time, challenges, updateCurrentChallenge } = this.props; return ( - { this.renderChallenges(challenges, setChallenge) } + { this.renderChallenges(challenges, updateCurrentChallenge) } ); } } + +export default connect(null, dispatchActions)(Block); diff --git a/common/app/routes/challenges/components/map/Map.jsx b/common/app/routes/challenges/components/map/Map.jsx index ce24011de5..1b752eff09 100644 --- a/common/app/routes/challenges/components/map/Map.jsx +++ b/common/app/routes/challenges/components/map/Map.jsx @@ -18,7 +18,7 @@ export default class ShowMap extends PureComponent { updateFilter: PropTypes.func }; - renderSuperBlocks(superBlocks, setChallenge) { + renderSuperBlocks(superBlocks, updateCurrentChallenge) { if (!Array.isArray(superBlocks) || !superBlocks.length) { return
No Super Blocks
; } @@ -26,7 +26,7 @@ export default class ShowMap extends PureComponent { return ( ); }); @@ -34,7 +34,7 @@ export default class ShowMap extends PureComponent { render() { const { - setChallenge, + updateCurrentChallenge, superBlocks, updateFilter, clearFilter, @@ -77,7 +77,7 @@ export default class ShowMap extends PureComponent {
- { this.renderSuperBlocks(superBlocks, setChallenge) } + { this.renderSuperBlocks(superBlocks, updateCurrentChallenge) }
diff --git a/common/app/routes/challenges/components/map/Show.jsx b/common/app/routes/challenges/components/map/Show.jsx index c781bf581a..57a64ec246 100644 --- a/common/app/routes/challenges/components/map/Show.jsx +++ b/common/app/routes/challenges/components/map/Show.jsx @@ -9,15 +9,13 @@ import Map from './Map.jsx'; import { clearFilter, updateFilter, - updateCurrentChallenge, fetchChallenges } from '../../redux/actions'; const bindableActions = { clearFilter, fetchChallenges, - updateFilter, - updateCurrentChallenge + updateFilter }; const superBlocksSelector = createSelector( @@ -72,8 +70,7 @@ export class ShowMap extends PureComponent { clearFilter: PropTypes.func, filter: PropTypes.string, superBlocks: PropTypes.array, - updateFilter: PropTypes.func, - updateCurrentChallenge: PropTypes.func + updateFilter: PropTypes.func }; render() { diff --git a/common/app/routes/challenges/redux/reducer.js b/common/app/routes/challenges/redux/reducer.js index 85f06e5c60..837c35e0a2 100644 --- a/common/app/routes/challenges/redux/reducer.js +++ b/common/app/routes/challenges/redux/reducer.js @@ -1,7 +1,6 @@ import { handleActions } from 'redux-actions'; import types from './types'; -import { setChallenge, fetchChallengeCompleted } from '../../../redux/types'; const initialState = { challenge: '', @@ -23,11 +22,11 @@ function buildSeed({ challengeSeed = [] } = {}) { export default handleActions( { - [fetchChallengeCompleted]: (state, { payload = '' }) => ({ + [types.fetchChallengeCompleted]: (state, { payload = '' }) => ({ ...state, challenge: payload }), - [setChallenge]: (state, { payload: challenge }) => ({ + [types.updateCurrentChallenge]: (state, { payload: challenge }) => ({ ...state, challenge: challenge.dashedName, content: buildSeed(challenge)