From 66d0e0445f5ce40984ca75c35595922ba2b3797d Mon Sep 17 00:00:00 2001 From: Tomasz Knapik <hi@tmkn.org> Date: Tue, 15 Jan 2019 15:04:01 +0000 Subject: [PATCH] Update names in reducers --- .dev-env | 1 + .../src/app/src/components/Listing/index.js | 28 +++++++++------- .../src/app/src/components/ListingGroup.js | 6 ++-- .../src/app/src/components/ListingItem.js | 6 ++-- .../src/app/src/containers/ByStatusListing.js | 6 ++-- .../src/app/src/redux/reducers/submissions.js | 33 ++++++++++--------- .../app/src/redux/selectors/submissions.js | 18 +++++----- 7 files changed, 56 insertions(+), 42 deletions(-) create mode 100644 .dev-env diff --git a/.dev-env b/.dev-env new file mode 100644 index 000000000..4704c2d06 --- /dev/null +++ b/.dev-env @@ -0,0 +1 @@ +API_BASE_URL="http://apply.localhost:8000" diff --git a/opentech/static_src/src/app/src/components/Listing/index.js b/opentech/static_src/src/app/src/components/Listing/index.js index 421625e1f..3bedffe6c 100644 --- a/opentech/static_src/src/app/src/components/Listing/index.js +++ b/opentech/static_src/src/app/src/components/Listing/index.js @@ -12,19 +12,25 @@ export default class Listing extends React.Component { const { isLoading, isError, items } = this.props; if (isLoading) { - return <ListingItem title={"Loading..."} />; + return <p>Loading...</p>; } else if (isError) { - return <ListingItem title={"Something went wrong. Please try again later."} />; + return <p>Something went wrong. Please try again later.</p>; } else if (items.length === 0) { - return <ListingItem title={"No results found."} />; + return <p>No results found.</p>; } - return this.getOrderedItems().filter(v => v.items.length !== 0).map(v => - <ListingGroup key={`listing-group-${v.group}`} item={v.group}> - {v.items.map(item => - <ListingItem key={`listing-item-${item.id}`} title={item.title}/> - )} - </ListingGroup> + return ( + <ul className="listing__list"> + {this.getOrderedItems().filter(v => v.items.length !== 0).map(v => { + return ( + <ListingGroup key={`listing-group-${v.group}`} item={v}> + {v.items.map(item => { + return <ListingItem key={`listing-item-${item.id}`} item={item}/>; + })} + </ListingGroup> + ); + })} + </ul> ); } @@ -65,9 +71,7 @@ export default class Listing extends React.Component { </select> </form> </div> - <ul className="listing__list"> - {this.renderListItems()} - </ul> + {this.renderListItems()} </div> ); } diff --git a/opentech/static_src/src/app/src/components/ListingGroup.js b/opentech/static_src/src/app/src/components/ListingGroup.js index 0e072445d..72c97d53b 100644 --- a/opentech/static_src/src/app/src/components/ListingGroup.js +++ b/opentech/static_src/src/app/src/components/ListingGroup.js @@ -7,7 +7,7 @@ export default class ListingGroup extends React.Component { render() { return ( <> - <ListingHeading title={this.props.item} count={this.props.children.length} /> + <ListingHeading title={this.props.item.group} count={this.props.children.length} /> <ul> {this.props.children} </ul> @@ -17,5 +17,7 @@ export default class ListingGroup extends React.Component { } ListingGroup.propTypes = { - item: PropTypes.object, + item: PropTypes.shape({ + group: PropTypes.string, + }), }; diff --git a/opentech/static_src/src/app/src/components/ListingItem.js b/opentech/static_src/src/app/src/components/ListingItem.js index 3e6e1326c..1207c65e8 100644 --- a/opentech/static_src/src/app/src/components/ListingItem.js +++ b/opentech/static_src/src/app/src/components/ListingItem.js @@ -6,12 +6,14 @@ export default class ListingItem extends React.Component { render() { return ( <li className="listing__item"> - <a className="listing__link">{this.props.title}</a> + <a className="listing__link">{this.props.item.title}</a> </li> ); } } ListingItem.propTypes = { - title: PropTypes.string, + item: PropTypes.shape({ + title: PropTypes.string, + }), }; diff --git a/opentech/static_src/src/app/src/containers/ByStatusListing.js b/opentech/static_src/src/app/src/containers/ByStatusListing.js index c5fd7a7a2..aaeb99202 100644 --- a/opentech/static_src/src/app/src/containers/ByStatusListing.js +++ b/opentech/static_src/src/app/src/containers/ByStatusListing.js @@ -4,7 +4,7 @@ import { connect } from 'react-redux' import Listing from '@components/Listing'; import { - getCurrentRound, + getCurrentRoundID, getCurrentRoundSubmissions, getSubmissionsByRoundErrorState, getSubmissionsByRoundLoadingState, @@ -37,6 +37,8 @@ class ByStatusListing extends React.Component { items={this.props.items} groupBy={'status'} order={[ + // TODO: Set the proper order of statuses. + 'post_external_review_discussion', 'in_discussion', 'more_info', 'internal_review', @@ -51,7 +53,7 @@ class ByStatusListing extends React.Component { const mapStateToProps = state => ({ items: getCurrentRoundSubmissions(state), - roundId: getCurrentRound(state), + roundId: getCurrentRoundID(state), isError: getSubmissionsByRoundErrorState(state), isLoading: getSubmissionsByRoundLoadingState(state), }); diff --git a/opentech/static_src/src/app/src/redux/reducers/submissions.js b/opentech/static_src/src/app/src/redux/reducers/submissions.js index c866758b7..4970ddeb3 100644 --- a/opentech/static_src/src/app/src/redux/reducers/submissions.js +++ b/opentech/static_src/src/app/src/redux/reducers/submissions.js @@ -7,10 +7,10 @@ import { const initialState = { currentRound: null, - items: {}, - itemsByRound: {}, - itemsByRoundLoadingError: false, - itemsByRoundLoading: false, + submissionsByID: {}, + submissionsByRoundID: {}, + itemsLoadingError: false, + itemsLoading: false, }; export default function submissions(state = initialState, action) { @@ -23,31 +23,34 @@ export default function submissions(state = initialState, action) { case UPDATE_SUBMISSIONS_BY_ROUND: return { ...state, - items: { - ...state.items, + submissionsByID: { + ...state.submissionsByID, ...action.data.results.reduce((newItems, v) => { - newItems[v.id] = { ...v }; + newItems[v.id] = { + ...state.submissionsByID[v.id], + ...v + }; return newItems; }, {}), }, - itemsByRound: { - ...state.itemsByRound, + submissionsByRoundID: { + ...state.submissionsByRoundID, [action.roundId]: action.data.results.map(v => v.id), }, - itemsByRoundLoading: false, - itemsByRoundLoadingError: false, + itemsLoading: false, + itemsLoadingError: false, }; case FAIL_LOADING_SUBMISSIONS_BY_ROUND: return { ...state, - itemsByRoundLoading: false, - itemsByRoundLoadingError: true, + itemsLoading: false, + itemsLoadingError: true, }; case START_LOADING_SUBMISSIONS_BY_ROUND: return { ...state, - itemsByRoundLoading: true, - itemsByRoundLoadingError: false, + itemsLoading: true, + itemsLoadingError: false, }; default: return state; diff --git a/opentech/static_src/src/app/src/redux/selectors/submissions.js b/opentech/static_src/src/app/src/redux/selectors/submissions.js index 6b29a2fb9..4121e9f91 100644 --- a/opentech/static_src/src/app/src/redux/selectors/submissions.js +++ b/opentech/static_src/src/app/src/redux/selectors/submissions.js @@ -1,25 +1,25 @@ import { createSelector } from 'reselect'; -const getSubmissions = state => state.submissions.items; +const getSubmissions = state => state.submissions.submissionsByID; -const getSubmissionIDsByRound = state => state.submissions.itemsByRound; +const getSubmissionIDsByRound = state => state.submissions.submissionsByRoundID; -const getCurrentRound = state => state.submissions.currentRound; +const getCurrentRoundID = state => state.submissions.currentRound; const getCurrentRoundSubmissions = createSelector( - [ getSubmissionIDsByRound, getCurrentRound , getSubmissions], - (submissionsByRound, currentRound, submissions) => { - return (submissionsByRound[currentRound] || []).map(v => submissions[v]) + [ getSubmissionIDsByRound, getCurrentRoundID , getSubmissions], + (submissionsByRound, currentRoundID, submissions) => { + return (submissionsByRound[currentRoundID] || []).map(roundID => submissions[roundID]); } ); -const getSubmissionsByRoundErrorState = state => state.submissions.itemsByRoundLoadingError; +const getSubmissionsByRoundErrorState = state => state.submissions.itemsLoadingError; -const getSubmissionsByRoundLoadingState = state => state.submissions.itemsByRoundLoading; +const getSubmissionsByRoundLoadingState = state => state.submissions.itemsLoading; export { - getCurrentRound, + getCurrentRoundID, getCurrentRoundSubmissions, getSubmissionsByRoundErrorState, getSubmissionsByRoundLoadingState, -- GitLab