From 7a239c02abed223b3572d4c83742f8bd644bd730 Mon Sep 17 00:00:00 2001 From: David Jay Date: Wed, 4 Jan 2017 15:56:52 -0500 Subject: [PATCH] Limiting to user actions. --- client/coral-admin/src/components/ModerationList.js | 12 ++++++------ .../ModerationQueue/ModerationContainer.js | 5 ++++- .../containers/ModerationQueue/ModerationQueue.js | 6 +----- client/coral-admin/src/reducers/actions.js | 4 ++-- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/client/coral-admin/src/components/ModerationList.js b/client/coral-admin/src/components/ModerationList.js index dc576717c..02f873c5b 100644 --- a/client/coral-admin/src/components/ModerationList.js +++ b/client/coral-admin/src/components/ModerationList.js @@ -18,11 +18,11 @@ export default class ModerationList extends React.Component { static propTypes = { isActive: PropTypes.bool, singleView: PropTypes.bool, - commentIds: PropTypes.arrayOf(PropTypes.string).isRequired, - actionIds: PropTypes.arrayOf(PropTypes.string).isRequired, - comments: PropTypes.object.isRequired, + commentIds: PropTypes.arrayOf(PropTypes.string), + actionIds: PropTypes.arrayOf(PropTypes.string), + comments: PropTypes.object, users: PropTypes.object.isRequired, - actions: PropTypes.object.isRequired, + actions: PropTypes.object, onClickAction: PropTypes.func.isRequired, // list of actions (flags, etc) associated with the comments @@ -141,7 +141,7 @@ export default class ModerationList extends React.Component { mapModItems = (itemId, index) => { - const {comments, users, actions, modActions, suspectWords, hideActive} = this.props; + const {comments = {}, users, actions = {}, modActions, suspectWords, hideActive} = this.props; const {active} = this.state; // Because ids are unique, the id will either appear as an action or as a comment. @@ -186,7 +186,7 @@ export default class ModerationList extends React.Component { } render () { - const {singleView, commentIds, actionIds, comments, actions, key} = this.props; + const {singleView, commentIds = [], actionIds = [], comments, actions, key} = this.props; // Combine moderations and actions into a single stream and sort by most recently updated. const moderationIds = [ ...commentIds, ...actionIds ].sort((a, b) => { diff --git a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js index b58500d71..7e0c68a03 100644 --- a/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js +++ b/client/coral-admin/src/containers/ModerationQueue/ModerationContainer.js @@ -61,16 +61,19 @@ class ModerationContainer extends React.Component { } render () { - const {comments} = this.props; + const {comments, actions} = this.props; + const premodIds = comments.ids.filter(id => comments.byId[id].status === 'premod'); const rejectedIds = comments.ids.filter(id => comments.byId[id].status === 'rejected'); const flaggedIds = comments.ids.filter(id => comments.byId[id].flagged === true); + const userActionIds = actions.ids.filter(id => actions.byId[id].item_type === 'user'); return ( ( commentIds={props.premodIds} comments={props.comments.byId} users={props.users.byId} - actionIds={props.actions.ids} + actionIds={props.userActionIds} actions={props.actions.byId} onClickAction={props.updateStatus} onClickShowBanDialog={props.showBanUserDialog} @@ -50,8 +50,6 @@ export default (props) => ( commentIds={props.rejectedIds} comments={props.comments.byId} users={props.users.byId} - actionIds={props.actions.ids} - actions={props.actions.byId} onClickAction={props.updateStatus} modActions={['approve']} loading={props.comments.loading} @@ -65,8 +63,6 @@ export default (props) => ( commentIds={props.flaggedIds} comments={props.comments.byId} users={props.users.byId} - actionIds={props.actions.ids} - actions={props.actions.byId} onClickAction={props.updateStatus} modActions={['reject', 'approve']} loading={props.comments.loading}/> diff --git a/client/coral-admin/src/reducers/actions.js b/client/coral-admin/src/reducers/actions.js index 22b3cba34..e6878b50f 100644 --- a/client/coral-admin/src/reducers/actions.js +++ b/client/coral-admin/src/reducers/actions.js @@ -1,4 +1,4 @@ -import {Map, Set} from 'immutable'; +import {Map, Set, fromJS} from 'immutable'; import * as types from '../constants/actions'; const initialState = Map({ @@ -20,5 +20,5 @@ const addActions = (state, action) => { memo[action.item_id] = action; return memo; }, {}); - return state.set('byId', map).set('ids', ids); + return state.set('byId', fromJS(map)).set('ids', new Set(ids)); };