From 9818b851db907b0757739470d1eb95f5ce146160 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Wed, 7 Jun 2017 15:40:36 -0600 Subject: [PATCH 01/29] clean up the ModerationHeader component --- .../Moderation/components/Moderation.js | 6 ++- .../Moderation/components/ModerationHeader.js | 48 +++++++++++-------- .../routes/Moderation/components/styles.css | 5 ++ 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index c788da993..3efe48bdc 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -32,6 +32,10 @@ export default class Moderation extends Component { this.toggleModal(false); } + openSearch = () => { + + } + moderate = (accept) => () => { const {acceptComment, rejectComment} = this.props; const {selectedIndex} = this.state; @@ -128,7 +132,7 @@ export default class Moderation extends Component { return (
- + ( +const ModerationHeader = (props) => { + + const allStreams = props.asset + ? {t('modqueue.all_streams')} + : ; + + const title = props.asset + ? ( + + {props.asset.title} + + ) + : {t('modqueue.all_streams')} ; + + return (
- { - props.asset ? -
- {t('modqueue.all_streams')} - - {props.asset.title} - - - Select Stream -
- : -
- - {t('modqueue.all_streams')} - {t('modqueue.select_stream')} -
- } +
+ {allStreams} + {title} + {t('modqueue.select_stream')} +
-); + ); +}; + +ModerationHeader.propTypes = { + openSearch: PropTypes.func.isRequired +}; + export default ModerationHeader; diff --git a/client/coral-admin/src/routes/Moderation/components/styles.css b/client/coral-admin/src/routes/Moderation/components/styles.css index d10311f74..b0c2cc5ac 100644 --- a/client/coral-admin/src/routes/Moderation/components/styles.css +++ b/client/coral-admin/src/routes/Moderation/components/styles.css @@ -467,3 +467,8 @@ span { .bulkSelectInput { cursor: pointer; } + +.searchTrigger { + position: relative; + top: .3em; +} From 06da4d7d269eb50a7eff200c1262b4c89ebce428 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Wed, 7 Jun 2017 16:36:27 -0600 Subject: [PATCH 02/29] toggle story search --- client/coral-admin/src/actions/moderation.js | 2 ++ .../coral-admin/src/constants/moderation.js | 2 ++ client/coral-admin/src/reducers/moderation.js | 6 +++++ .../Moderation/components/Moderation.js | 14 +++++++++-- .../Moderation/components/ModerationHeader.js | 24 +++++++++++-------- .../routes/Moderation/components/styles.css | 1 + .../Moderation/containers/Moderation.js | 2 ++ 7 files changed, 39 insertions(+), 12 deletions(-) diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index 37e09590d..9f1c40c94 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -51,3 +51,5 @@ export const toggleSelectCommentInUserDetail = (id, active) => { id }; }; + +export const toggleStorySearch = (active) => ({type: active ? actions.SHOW_STORY_SEARCH : actions.HIDE_STORY_SEARCH}); diff --git a/client/coral-admin/src/constants/moderation.js b/client/coral-admin/src/constants/moderation.js index 374de616a..29cf03143 100644 --- a/client/coral-admin/src/constants/moderation.js +++ b/client/coral-admin/src/constants/moderation.js @@ -12,3 +12,5 @@ export const CHANGE_USER_DETAIL_STATUSES = 'CHANGE_USER_DETAIL_STATUSES'; export const SELECT_USER_DETAIL_COMMENT = 'SELECT_USER_DETAIL_COMMENT'; export const UNSELECT_USER_DETAIL_COMMENT = 'UNSELECT_USER_DETAIL_COMMENT'; export const CLEAR_USER_DETAIL_SELECTIONS = 'CLEAR_USER_DETAIL_SELECTIONS'; +export const SHOW_STORY_SEARCH = 'SHOW_STORY_SEARCH'; +export const HIDE_STORY_SEARCH = 'HIDE_STORY_SEARCH'; diff --git a/client/coral-admin/src/reducers/moderation.js b/client/coral-admin/src/reducers/moderation.js index 1b95bdb90..4bab9eda1 100644 --- a/client/coral-admin/src/reducers/moderation.js +++ b/client/coral-admin/src/reducers/moderation.js @@ -12,6 +12,8 @@ const initialState = fromJS({ userDetailStatuses: ['NONE', 'ACCEPTED', 'REJECTED', 'PREMOD'], userDetailSelectedIds: new Set(), banDialog: false, + storySearchVisible: false, + storySearchString: '', shortcutsNoteVisible: window.localStorage.getItem('coral:shortcutsNote') || 'show', sortOrder: 'REVERSE_CHRONOLOGICAL', suspendUserDialog: { @@ -80,6 +82,10 @@ export default function moderation (state = initialState, action) { return state.update('userDetailSelectedIds', (set) => set.add(action.id)); case actions.UNSELECT_USER_DETAIL_COMMENT: return state.update('userDetailSelectedIds', (set) => set.delete(action.id)); + case actions.SHOW_STORY_SEARCH: + return state.set('storySearchVisible', true); + case actions.HIDE_STORY_SEARCH: + return state.set('storySearchVisible', false); case actions.SET_SORT_ORDER: return state.set('sortOrder', action.order); default : diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 3efe48bdc..f7338cf6b 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -32,8 +32,14 @@ export default class Moderation extends Component { this.toggleModal(false); } - openSearch = () => { + closeSearch = () => { + console.log('closeSearch'); + this.props.toggleStorySearch(false); + } + openSearch = () => { + console.log('openSearch'); + this.props.toggleStorySearch(true); } moderate = (accept) => () => { @@ -132,7 +138,11 @@ export default class Moderation extends Component { return (
- + { +const ModerationHeader = ({asset, searchVisible, openSearch, closeSearch}) => { - const allStreams = props.asset + const trigger = searchVisible ? closeSearch : openSearch; + const searchTriggerIcon = ; + + const allStreams = asset ? {t('modqueue.all_streams')} : ; - const title = props.asset - ? ( - - {props.asset.title} - - ) - : {t('modqueue.all_streams')} ; + const title = asset + ? {asset.title} {searchTriggerIcon} + : {t('modqueue.all_streams')} {searchTriggerIcon}; return (
@@ -32,7 +31,12 @@ const ModerationHeader = (props) => { }; ModerationHeader.propTypes = { - openSearch: PropTypes.func.isRequired + asset: PropTypes.shape({ + title: PropTypes.string, + id: PropTypes.string + }), + openSearch: PropTypes.func.isRequired, + closeSearch: PropTypes.func.isRequired }; export default ModerationHeader; diff --git a/client/coral-admin/src/routes/Moderation/components/styles.css b/client/coral-admin/src/routes/Moderation/components/styles.css index b0c2cc5ac..a6bf7e89e 100644 --- a/client/coral-admin/src/routes/Moderation/components/styles.css +++ b/client/coral-admin/src/routes/Moderation/components/styles.css @@ -471,4 +471,5 @@ span { .searchTrigger { position: relative; top: .3em; + background-color: blue; } diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 537aa1d65..31ac05450 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -21,6 +21,7 @@ import { showSuspendUserDialog, hideSuspendUserDialog, hideShortcutsNote, + toggleStorySearch, viewUserDetail, hideUserDetail, setSortOrder, @@ -299,6 +300,7 @@ const mapDispatchToProps = (dispatch) => ({ showBanUserDialog, hideBanUserDialog, hideShortcutsNote, + toggleStorySearch, showSuspendUserDialog, hideSuspendUserDialog, viewUserDetail, From de665b3a0d85b8ecce41e9ef7e9f6fc0e4d106b4 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 9 Jun 2017 14:10:21 -0600 Subject: [PATCH 03/29] show stories in dropdown --- client/coral-admin/src/actions/moderation.js | 2 + .../coral-admin/src/constants/moderation.js | 1 + client/coral-admin/src/reducers/moderation.js | 2 + .../Moderation/components/Moderation.js | 2 + .../src/routes/Moderation/components/Story.js | 22 ++++++ .../Moderation/components/StorySearch.css | 69 +++++++++++++++++++ .../Moderation/components/StorySearch.js | 47 +++++++++++++ .../Moderation/containers/Moderation.js | 2 +- .../Moderation/containers/StorySearch.js | 60 ++++++++++++++++ graph/loaders/assets.js | 12 ++++ graph/resolvers/root_query.js | 6 +- graph/typeDefs.graphql | 12 +++- 12 files changed, 233 insertions(+), 4 deletions(-) create mode 100644 client/coral-admin/src/routes/Moderation/components/Story.js create mode 100644 client/coral-admin/src/routes/Moderation/components/StorySearch.css create mode 100644 client/coral-admin/src/routes/Moderation/components/StorySearch.js create mode 100644 client/coral-admin/src/routes/Moderation/containers/StorySearch.js diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index 9f1c40c94..0833c856e 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -53,3 +53,5 @@ export const toggleSelectCommentInUserDetail = (id, active) => { }; export const toggleStorySearch = (active) => ({type: active ? actions.SHOW_STORY_SEARCH : actions.HIDE_STORY_SEARCH}); + +export const storySearchChange = (e) => ({type: actions.CHANGE_ASSET_SEARCH_STRING, value: e.target.value}); diff --git a/client/coral-admin/src/constants/moderation.js b/client/coral-admin/src/constants/moderation.js index 29cf03143..37f048e23 100644 --- a/client/coral-admin/src/constants/moderation.js +++ b/client/coral-admin/src/constants/moderation.js @@ -14,3 +14,4 @@ export const UNSELECT_USER_DETAIL_COMMENT = 'UNSELECT_USER_DETAIL_COMMENT'; export const CLEAR_USER_DETAIL_SELECTIONS = 'CLEAR_USER_DETAIL_SELECTIONS'; export const SHOW_STORY_SEARCH = 'SHOW_STORY_SEARCH'; export const HIDE_STORY_SEARCH = 'HIDE_STORY_SEARCH'; +export const CHANGE_ASSET_SEARCH_STRING = 'CHANGE_ASSET_SEARCH_STRING'; diff --git a/client/coral-admin/src/reducers/moderation.js b/client/coral-admin/src/reducers/moderation.js index 4bab9eda1..349ff517a 100644 --- a/client/coral-admin/src/reducers/moderation.js +++ b/client/coral-admin/src/reducers/moderation.js @@ -86,6 +86,8 @@ export default function moderation (state = initialState, action) { return state.set('storySearchVisible', true); case actions.HIDE_STORY_SEARCH: return state.set('storySearchVisible', false); + case actions.CHANGE_ASSET_SEARCH_STRING: + return state.set('storySearchString', action.value); case actions.SET_SORT_ORDER: return state.set('sortOrder', action.order); default : diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index f7338cf6b..7582d10d1 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -10,6 +10,7 @@ import ModerationHeader from './ModerationHeader'; import NotFoundAsset from './NotFoundAsset'; import ModerationKeysModal from '../../../components/ModerationKeysModal'; import UserDetail from '../containers/UserDetail'; +import StorySearch from '../containers/StorySearch'; export default class Moderation extends Component { state = { @@ -209,6 +210,7 @@ export default class Moderation extends Component { acceptComment={props.acceptComment} rejectComment={props.rejectComment} /> )} +
); } diff --git a/client/coral-admin/src/routes/Moderation/components/Story.js b/client/coral-admin/src/routes/Moderation/components/Story.js new file mode 100644 index 000000000..ee9d462d3 --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/components/Story.js @@ -0,0 +1,22 @@ +import React, {PropTypes} from 'react'; +import styles from './StorySearch.css'; + +const Story = ({author, title, createdAt, open}) => { + return ( +
  • +

    {title}

    +

    + By {author}{createdAt}{open ? 'Open' : 'Closed'} +

    +
  • + ); +}; + +Story.propTypes = { + author: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + createdAt: PropTypes.string.isRequired, + open: PropTypes.bool.isRequired +}; + +export default Story; diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css new file mode 100644 index 000000000..e5b6e4a93 --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -0,0 +1,69 @@ +.container { + position: fixed; + background-color: white; + top: 100px; + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + width: 50%; + box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.15); +} + +.positionShim { + left: -50%; +} + +.headInput { + background-color: #efefef; + padding: 10px 30px; +} + +.searchInput { + width: calc(100% - 100px); + padding: 8px; + height: 100%; + font-size: 16px; + margin-right: 10px; + position: relative; + top: 2px; +} + +.cta { + padding: 15px; + font-weight: bold; + font-size: 14px; + margin: 0; +} + +.storyList { + padding: 10px; + margin: 0; + list-style: none; + border-top: 1px solid #ddd; +} + +.story { + padding: 10px; + border-bottom: 1px solid #ddd; +} + +.title, .meta { + margin: 0; +} + +.author, .createdAt, .status { + display: inline-block; + font-size: .8em; + color: #aaa; +} + +.author { + display: inline-block; + width: 200px; +} + +.createdAt { + display: inline-block; + width: 200px; +} diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js new file mode 100644 index 000000000..ce16e5b15 --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -0,0 +1,47 @@ +import React, {PropTypes} from 'react'; +import styles from './StorySearch.css'; +import {Button, Spinner} from 'coral-ui'; +import Story from './Story'; + +const StorySearch = (props) => { + + const { + root: {assets = []}, + data: {loading} + } = props; + + return ( +
    +
    +
    + + +
    +
    +

    Moderate comments on All Stories

    +
      + { + loading + ? + : assets.map((story, i) => { + const storyOpen = story.closedAt === null || new Date(story.closedAt) > new Date(); + return ; + }) + } +
    +
    +
    +
    + ); +}; + +StorySearch.propTypes = { + storySearchChange: PropTypes.func.isRequired +}; + +export default StorySearch; diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 31ac05450..24a3d748d 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -209,7 +209,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets: assets { + assets: assets(query: {}) { id title url diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js new file mode 100644 index 000000000..cfe2a5bea --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -0,0 +1,60 @@ +import React from 'react'; +import {connect} from 'react-redux'; +import {bindActionCreators} from 'redux'; +import {compose, gql} from 'react-apollo'; +import StorySearch from '../components/StorySearch'; +import withQuery from 'coral-framework/hocs/withQuery'; +import {storySearchChange} from 'coral-admin/src/actions/moderation'; + +class StorySearchContainer extends React.Component { + searchChange = (e) => { + this.props.storySearchChange(e.target.value); + this.props.data.refetch(); + } + + componentDidUpdate (prevProps) { + if (prevProps.moderation.storySearchString !== this.props.moderation.storySearchString) { + this.props.data.refetch(); + } + } + + render () { + return ; + } +} + +export const withAssetSearchQuery = withQuery(gql` + query SearchStories($value: String = "") { + assets(query: {value: $value}) { + id + title + url + created_at + closedAt + author + } + } +`, { + options: ({moderation: {storySearchString = ''}}) => { + return { + variables: { + value: storySearchString + } + }; + } +}); + +const mapStateToProps = (state) => ({ + moderation: state.moderation.toJS() +}); + +const mapDispatchToProps = (dispatch) => ({ + ...bindActionCreators({ + storySearchChange + }, dispatch) +}); + +export default compose( + connect(mapStateToProps, mapDispatchToProps), + withAssetSearchQuery +)(StorySearchContainer); diff --git a/graph/loaders/assets.js b/graph/loaders/assets.js index 11f77df60..b32b37b60 100644 --- a/graph/loaders/assets.js +++ b/graph/loaders/assets.js @@ -19,6 +19,17 @@ const genAssetsByID = (context, ids) => AssetModel.find({ } }).then(util.singleJoinBy(ids, 'id')); +/** + * [getAssetsByQuery description] + * @param {Object} context the context of the request + * @param {String} value text string to search agains the documents + * @param {Number} limit limit the number of results + * @return {Promise} resolves the assets + */ +const getAssetsByQuery = (context, value, limit) => { + return AssetsService.search(value, null, limit); +}; + /** * This endpoint find or creates an asset at the given url when it is loaded. * @param {Object} context the context of the request @@ -65,6 +76,7 @@ module.exports = (context) => ({ // this operation create a new asset if one isn't found. getByURL: (url) => findOrCreateAssetByURL(context, url), + search: (value, limit) => getAssetsByQuery(context, value, limit), getByID: new DataLoader((ids) => genAssetsByID(context, ids)), getForMetrics: () => getAssetsForMetrics(context), getAll: new util.SingletonResolver(() => AssetModel.find({})) diff --git a/graph/resolvers/root_query.js b/graph/resolvers/root_query.js index e2cd58828..637af9018 100644 --- a/graph/resolvers/root_query.js +++ b/graph/resolvers/root_query.js @@ -6,12 +6,14 @@ const { } = require('../../perms/constants'); const RootQuery = { - assets(_, args, {loaders: {Assets}, user}) { + assets(_, {query}, {loaders: {Assets}, user}) { if (user == null || !user.can(SEARCH_ASSETS)) { return null; } - return Assets.getAll.load(); + const {value = '', limit} = query; + + return Assets.search(value, limit); }, asset(_, query, {loaders: {Assets}}) { if (query.id) { diff --git a/graph/typeDefs.graphql b/graph/typeDefs.graphql index 187e5bba5..2da5dca12 100644 --- a/graph/typeDefs.graphql +++ b/graph/typeDefs.graphql @@ -112,6 +112,16 @@ input UsersQuery { sort: SORT_ORDER = REVERSE_CHRONOLOGICAL } +# AssetsQuery allows teh ability to query assets by specific fields +input AssetsQuery { + + # a search string to match against titles, authors, urls, etc. + value: String = "" + + # Limit the number of results to be returned + limit: Int = 10 +} + ################################################################################ ## Comments ################################################################################ @@ -586,7 +596,7 @@ type RootQuery { comment(id: ID!): Comment # All assets. Requires the `ADMIN` role. - assets: [Asset] + assets(query: AssetsQuery!): [Asset] # Find or create an asset by url, or just find with the ID. asset(id: ID, url: String): Asset From aa289ecbfec038c3ae7786102f1e56aaaf947111 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Fri, 9 Jun 2017 14:32:12 -0600 Subject: [PATCH 04/29] less terrible looking --- .../src/routes/Moderation/components/Moderation.js | 2 +- .../Moderation/components/ModerationHeader.js | 4 ++-- .../src/routes/Moderation/components/Story.js | 8 +++++--- .../routes/Moderation/components/StorySearch.css | 13 ++++++++++--- .../src/routes/Moderation/components/StorySearch.js | 9 +++++++-- .../src/routes/Moderation/components/styles.css | 1 - 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 7582d10d1..511d3f089 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -210,7 +210,7 @@ export default class Moderation extends Component { acceptComment={props.acceptComment} rejectComment={props.rejectComment} /> )} - +
    ); } diff --git a/client/coral-admin/src/routes/Moderation/components/ModerationHeader.js b/client/coral-admin/src/routes/Moderation/components/ModerationHeader.js index 9aa9788fb..0ab2eb762 100644 --- a/client/coral-admin/src/routes/Moderation/components/ModerationHeader.js +++ b/client/coral-admin/src/routes/Moderation/components/ModerationHeader.js @@ -14,8 +14,8 @@ const ModerationHeader = ({asset, searchVisible, openSearch, closeSearch}) => { : ; const title = asset - ? {asset.title} {searchTriggerIcon} - : {t('modqueue.all_streams')} {searchTriggerIcon}; + ? {asset.title} {searchTriggerIcon} + : {t('modqueue.all_streams')} {searchTriggerIcon}; return (
    diff --git a/client/coral-admin/src/routes/Moderation/components/Story.js b/client/coral-admin/src/routes/Moderation/components/Story.js index ee9d462d3..59f6d6fa1 100644 --- a/client/coral-admin/src/routes/Moderation/components/Story.js +++ b/client/coral-admin/src/routes/Moderation/components/Story.js @@ -1,18 +1,20 @@ import React, {PropTypes} from 'react'; +import {Link} from 'react-router'; import styles from './StorySearch.css'; -const Story = ({author, title, createdAt, open}) => { +const Story = ({author, title, createdAt, open, id}) => { return ( -
  • +

    {title}

    By {author}{createdAt}{open ? 'Open' : 'Closed'}

    -
  • + ); }; Story.propTypes = { + id: PropTypes.string.isRequired, author: PropTypes.string.isRequired, title: PropTypes.string.isRequired, createdAt: PropTypes.string.isRequired, diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index e5b6e4a93..ccccd210b 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -38,32 +38,39 @@ .storyList { padding: 10px; - margin: 0; - list-style: none; border-top: 1px solid #ddd; } .story { padding: 10px; border-bottom: 1px solid #ddd; + cursor: pointer; + display: block; + text-decoration: none; + + &:hover { + background-color: #efefef; + } } .title, .meta { margin: 0; + color: black; } .author, .createdAt, .status { display: inline-block; font-size: .8em; - color: #aaa; } .author { display: inline-block; width: 200px; + color: #aaa; } .createdAt { display: inline-block; width: 200px; + color: #aaa; } diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index ce16e5b15..a841fd96d 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -10,6 +10,10 @@ const StorySearch = (props) => { data: {loading} } = props; + if (!props.visible) { + return null; + } + return (
    @@ -19,7 +23,7 @@ const StorySearch = (props) => {

    Moderate comments on All Stories

    -
      +
      { loading ? @@ -27,13 +31,14 @@ const StorySearch = (props) => { const storyOpen = story.closedAt === null || new Date(story.closedAt) > new Date(); return ; }) } -
    +
    diff --git a/client/coral-admin/src/routes/Moderation/components/styles.css b/client/coral-admin/src/routes/Moderation/components/styles.css index a6bf7e89e..b0c2cc5ac 100644 --- a/client/coral-admin/src/routes/Moderation/components/styles.css +++ b/client/coral-admin/src/routes/Moderation/components/styles.css @@ -471,5 +471,4 @@ span { .searchTrigger { position: relative; top: .3em; - background-color: blue; } From 8a3833ec119fede559cc71513d3993c68e487c74 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 12 Jun 2017 16:30:59 -0300 Subject: [PATCH 05/29] Merge issues --- graph/typeDefs.graphql | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/graph/typeDefs.graphql b/graph/typeDefs.graphql index 5f2d5a8c3..a4c4b8c5c 100644 --- a/graph/typeDefs.graphql +++ b/graph/typeDefs.graphql @@ -112,7 +112,7 @@ input AssetsQuery { # Limit the number of results to be returned limit: Int = 10 - +} ################################################################################ ## Tags ################################################################################ @@ -155,7 +155,6 @@ type TagLink { # The date that the TagLink was created. created_at: Date! ->>>>>>> master } ################################################################################ From e160dfaa3e0faedceeeacd88e28883b56e889f86 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Wed, 14 Jun 2017 18:40:44 -0300 Subject: [PATCH 06/29] Style and functionality --- .../Moderation/components/Moderation.js | 4 +- .../src/routes/Moderation/components/Story.js | 16 ++++-- .../Moderation/components/StorySearch.css | 57 +++++++++++++++++-- .../Moderation/components/StorySearch.js | 20 +++++-- client/coral-ui/components/Button.css | 10 ++++ views/admin.ejs | 5 ++ 6 files changed, 94 insertions(+), 18 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 511d3f089..3a23a1a86 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -34,12 +34,10 @@ export default class Moderation extends Component { } closeSearch = () => { - console.log('closeSearch'); this.props.toggleStorySearch(false); } openSearch = () => { - console.log('openSearch'); this.props.toggleStorySearch(true); } @@ -210,7 +208,7 @@ export default class Moderation extends Component { acceptComment={props.acceptComment} rejectComment={props.rejectComment} /> )} - + ); } diff --git a/client/coral-admin/src/routes/Moderation/components/Story.js b/client/coral-admin/src/routes/Moderation/components/Story.js index 59f6d6fa1..b87611b24 100644 --- a/client/coral-admin/src/routes/Moderation/components/Story.js +++ b/client/coral-admin/src/routes/Moderation/components/Story.js @@ -1,15 +1,21 @@ import React, {PropTypes} from 'react'; -import {Link} from 'react-router'; import styles from './StorySearch.css'; -const Story = ({author, title, createdAt, open, id}) => { +const formatDate = (date) => { + const d = new Date(date); + return `${d.getMonth() + 1}/${d.getDate()}/${d.getFullYear()}`; +}; + +const Story = ({author, title, createdAt, open, id, goToStory}) => { return ( - +
  • goToStory(id)}>

    {title}

    - By {author}{createdAt}{open ? 'Open' : 'Closed'} + By {author} + {formatDate(createdAt)} + {open ? 'Open' : 'Closed'}

    - +
  • ); }; diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index ccccd210b..4224a38fb 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -1,5 +1,5 @@ .container { - position: fixed; + position: absolute; background-color: white; top: 100px; left: 0; @@ -8,6 +8,8 @@ margin-right: auto; width: 50%; box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.15); + z-index: 100; + max-width: 820px; } .positionShim { @@ -16,7 +18,9 @@ .headInput { background-color: #efefef; - padding: 10px 30px; + padding: 17px 56px; + height: 80px; + box-sizing: border-box; } .searchInput { @@ -27,26 +31,34 @@ margin-right: 10px; position: relative; top: 2px; + box-sizing: border-box; + border-radius: 3px; + border: solid 1px #dfdfdf; + max-height: 45px; + max-width: 600px; } .cta { - padding: 15px; + padding: 32px 30px; + letter-spacing: 1px; font-weight: bold; - font-size: 14px; + font-size: 17px; margin: 0; + height: 74px; + box-sizing: border-box; } .storyList { - padding: 10px; border-top: 1px solid #ddd; } .story { - padding: 10px; + padding: 10px 63px; border-bottom: 1px solid #ddd; cursor: pointer; display: block; text-decoration: none; + height: 66px; &:hover { background-color: #efefef; @@ -56,13 +68,20 @@ .title, .meta { margin: 0; color: black; + font-size: 17px; + /* margin: 0 0 -4px; */ } .author, .createdAt, .status { + font-size: 17px; display: inline-block; font-size: .8em; } +.createdAt { + text-align: center; +} + .author { display: inline-block; width: 200px; @@ -74,3 +93,29 @@ width: 200px; color: #aaa; } + +.searchButton { + width: 90px; + height: 35px; +} + +.recentStories { + padding: 10px 24px; +} + +.recentStories i { + font-size: 20px; + line-height: 26px; +} + +.accessStories { + font-size: 18px; +} + +.headlineRecent { + font-size: 17px; + font-weight: 500; + padding: 17px; + letter-spacing: 0.7px; +} + diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index a841fd96d..4da0febbe 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -1,6 +1,7 @@ import React, {PropTypes} from 'react'; import styles from './StorySearch.css'; -import {Button, Spinner} from 'coral-ui'; +import {Button, Spinner, Icon} from 'coral-ui'; +import {withRouter} from 'react-router'; import Story from './Story'; const StorySearch = (props) => { @@ -14,16 +15,25 @@ const StorySearch = (props) => { return null; } + const goToStory = (id) => { + props.router.push(`/admin/moderate/${id}`); + props.closeSearch(); + }; + return (
    - +

    Moderate comments on All Stories

    +
    + + Most Recent Stories +
    { loading ? @@ -35,7 +45,9 @@ const StorySearch = (props) => { title={story.title} createdAt={new Date(story.created_at).toISOString()} open={storyOpen} - author={story.author} />; + author={story.author} + goToStory={goToStory} + />; }) }
    @@ -49,4 +61,4 @@ StorySearch.propTypes = { storySearchChange: PropTypes.func.isRequired }; -export default StorySearch; +export default withRouter(StorySearch); diff --git a/client/coral-ui/components/Button.css b/client/coral-ui/components/Button.css index 5100d44a4..671c55bad 100644 --- a/client/coral-ui/components/Button.css +++ b/client/coral-ui/components/Button.css @@ -84,6 +84,16 @@ background: #4f5c67; } +.type--blue { + color: white; + background: #083b97; +} + +.type--blue:hover { + color: white; + background: #083b97; +} + .type--darkGrey { color: white; background: #616161; diff --git a/views/admin.ejs b/views/admin.ejs index 946284622..4ef4112da 100644 --- a/views/admin.ejs +++ b/views/admin.ejs @@ -29,6 +29,11 @@ background-color: #FAFAFA; font-family: 'Roboto', sans-serif; } + + #root > div { + height: 100%; + } + /* putting this here until I can get webpack to behave */ .react-tagsinput { background-color: #fff; From 685695bf4336bd50f01c8727dc79ff0516406c8d Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 15 Jun 2017 14:32:50 -0300 Subject: [PATCH 07/29] Clear search value --- client/coral-admin/src/actions/moderation.js | 14 ++++++++++++-- .../src/routes/Moderation/components/Moderation.js | 9 +++++++-- .../routes/Moderation/components/StorySearch.js | 2 +- .../src/routes/Moderation/containers/Moderation.js | 2 ++ .../routes/Moderation/containers/StorySearch.js | 3 ++- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index 0833c856e..2b8c1e599 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -52,6 +52,16 @@ export const toggleSelectCommentInUserDetail = (id, active) => { }; }; -export const toggleStorySearch = (active) => ({type: active ? actions.SHOW_STORY_SEARCH : actions.HIDE_STORY_SEARCH}); +export const toggleStorySearch = (active) => ({ + type: active ? actions.SHOW_STORY_SEARCH : actions.HIDE_STORY_SEARCH +}); -export const storySearchChange = (e) => ({type: actions.CHANGE_ASSET_SEARCH_STRING, value: e.target.value}); +export const storySearchChange = (value) => ({ + type: actions.CHANGE_ASSET_SEARCH_STRING, + value +}); + +export const storySearchClear = () => ({ + type: actions.CHANGE_ASSET_SEARCH_STRING, + value: '' +}); diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 3a23a1a86..4d82803a8 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -34,7 +34,9 @@ export default class Moderation extends Component { } closeSearch = () => { - this.props.toggleStorySearch(false); + const {storySearchClear, toggleStorySearch} = this.props; + toggleStorySearch(false); + storySearchClear(); } openSearch = () => { @@ -208,7 +210,10 @@ export default class Moderation extends Component { acceptComment={props.acceptComment} rejectComment={props.rejectComment} /> )} - +
    ); } diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index 4da0febbe..b1c44baff 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -19,7 +19,7 @@ const StorySearch = (props) => { props.router.push(`/admin/moderate/${id}`); props.closeSearch(); }; - + return (
    diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 24a3d748d..eac900d40 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -25,6 +25,7 @@ import { viewUserDetail, hideUserDetail, setSortOrder, + storySearchClear } from 'actions/moderation'; import {Spinner} from 'coral-ui'; @@ -306,6 +307,7 @@ const mapDispatchToProps = (dispatch) => ({ viewUserDetail, hideUserDetail, setSortOrder, + storySearchClear }, dispatch), }); diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js index cfe2a5bea..c2c43c6ee 100644 --- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -8,7 +8,8 @@ import {storySearchChange} from 'coral-admin/src/actions/moderation'; class StorySearchContainer extends React.Component { searchChange = (e) => { - this.props.storySearchChange(e.target.value); + const value = e.target.value; + this.props.storySearchChange(value); this.props.data.refetch(); } From 18061e3e1cd87fe3d1cf1503ca7baa7b1bd4bf38 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 15 Jun 2017 17:32:14 -0300 Subject: [PATCH 08/29] new func and style --- client/coral-admin/src/actions/moderation.js | 5 ++-- .../coral-admin/src/components/ui/Layout.js | 2 +- .../coral-admin/src/constants/moderation.js | 3 ++- client/coral-admin/src/reducers/moderation.js | 4 +++- .../Moderation/components/StorySearch.css | 23 ++++++++++-------- .../Moderation/components/StorySearch.js | 19 +++++++++++---- .../Moderation/containers/Moderation.js | 2 -- .../Moderation/containers/StorySearch.js | 24 ++++++++++++++----- 8 files changed, 53 insertions(+), 29 deletions(-) diff --git a/client/coral-admin/src/actions/moderation.js b/client/coral-admin/src/actions/moderation.js index 2b8c1e599..a684c6085 100644 --- a/client/coral-admin/src/actions/moderation.js +++ b/client/coral-admin/src/actions/moderation.js @@ -57,11 +57,10 @@ export const toggleStorySearch = (active) => ({ }); export const storySearchChange = (value) => ({ - type: actions.CHANGE_ASSET_SEARCH_STRING, + type: actions.STORY_SEARCH_CHANGE_VALUE, value }); export const storySearchClear = () => ({ - type: actions.CHANGE_ASSET_SEARCH_STRING, - value: '' + type: actions.STORY_SEARCH_CLEAR }); diff --git a/client/coral-admin/src/components/ui/Layout.js b/client/coral-admin/src/components/ui/Layout.js index 11432e570..10433048e 100644 --- a/client/coral-admin/src/components/ui/Layout.js +++ b/client/coral-admin/src/components/ui/Layout.js @@ -10,7 +10,7 @@ const Layout = ({ toggleShortcutModal, restricted = false, ...props}) => ( - +
    {
    - - + +

    Moderate comments on All Stories

    @@ -57,8 +66,8 @@ const StorySearch = (props) => { ); }; -StorySearch.propTypes = { - storySearchChange: PropTypes.func.isRequired -}; +// StorySearch.propTypes = { +// storySearchChange: PropTypes.func.isRequired +// }; export default withRouter(StorySearch); diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index eac900d40..24a3d748d 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -25,7 +25,6 @@ import { viewUserDetail, hideUserDetail, setSortOrder, - storySearchClear } from 'actions/moderation'; import {Spinner} from 'coral-ui'; @@ -307,7 +306,6 @@ const mapDispatchToProps = (dispatch) => ({ viewUserDetail, hideUserDetail, setSortOrder, - storySearchClear }, dispatch), }); diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js index c2c43c6ee..0fc4a79aa 100644 --- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -7,20 +7,32 @@ import withQuery from 'coral-framework/hocs/withQuery'; import {storySearchChange} from 'coral-admin/src/actions/moderation'; class StorySearchContainer extends React.Component { - searchChange = (e) => { + + handleSearchChange = (e) => { const value = e.target.value; this.props.storySearchChange(value); - this.props.data.refetch(); } - componentDidUpdate (prevProps) { - if (prevProps.moderation.storySearchString !== this.props.moderation.storySearchString) { - this.props.data.refetch(); + handleEnter = (e) => { + if (e.key === 'Enter') { + e.preventDefault(); + this.search(); } } + search = () => { + this.props.data.refetch(); + } + render () { - return ; + return ( + + ); } } From 01237362751d406c73cc1a624e7cafd0338d5f83 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 15 Jun 2017 17:42:22 -0300 Subject: [PATCH 09/29] Deleting unnecesary connects --- .../src/routes/Moderation/components/Moderation.js | 4 +++- .../routes/Moderation/components/StorySearch.js | 7 +++++-- .../src/routes/Moderation/containers/Moderation.js | 4 ++++ .../routes/Moderation/containers/StorySearch.js | 14 -------------- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index 4d82803a8..4833367bb 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -211,8 +211,10 @@ export default class Moderation extends Component { rejectComment={props.rejectComment} /> )}
    ); diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index b5d746114..ab151f2ca 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -7,11 +7,13 @@ import Story from './Story'; const StorySearch = (props) => { const { - root: {assets = []}, + root: { + assets = [] + }, data: {loading} } = props; - if (!props.visible) { + if (!props.moderation.storySearchVisible) { return null; } @@ -27,6 +29,7 @@ const StorySearch = (props) => {
    ); diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index 796bc9266..d161b4efd 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -1,3 +1,14 @@ +.overlay { + position: absolute; + background-color: transparent; + top: 0; + left: 0; + right: 0; + bottom: 0; + width: 100%; + z-index: 99; +} + .container { position: absolute; background-color: white; diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index 38f8057db..8989f8ed3 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -2,7 +2,6 @@ import React from 'react'; import PropTypes from 'prop-types'; import styles from './StorySearch.css'; import {Button, Spinner, Icon} from 'coral-ui'; -import {withRouter} from 'react-router'; import Story from './Story'; const StorySearch = (props) => { @@ -18,52 +17,49 @@ const StorySearch = (props) => { return null; } - const goToStory = (id) => { - props.router.push(`/admin/moderate/${id}`); - props.closeSearch(); - }; - return ( -
    -
    -
    - - -
    -
    -

    Moderate comments on All Stories

    -
    -
    - - Most Recent Stories +
    +
    +
    +
    + + +
    +
    +

    Moderate comments on All Stories

    +
    +
    + + Most Recent Stories +
    + { + loading + ? + : assets.map((story, i) => { + const storyOpen = story.closedAt === null || new Date(story.closedAt) > new Date(); + return ; + }) + }
    - { - loading - ? - : assets.map((story, i) => { - const storyOpen = story.closedAt === null || new Date(story.closedAt) > new Date(); - return ; - }) - }
    @@ -72,9 +68,11 @@ const StorySearch = (props) => { }; StorySearch.propTypes = { - handleSearchChange: PropTypes.func.isRequired, search: PropTypes.func.isRequired, - moderation: PropTypes.object.isRequired + goToStory: PropTypes.func.isRequired, + closeSearch: PropTypes.func.isRequired, + moderation: PropTypes.object.isRequired, + handleSearchChange: PropTypes.func.isRequired }; -export default withRouter(StorySearch); +export default StorySearch; diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js index c7c3863db..d2790eccf 100644 --- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -1,6 +1,7 @@ import React from 'react'; import {compose, gql} from 'react-apollo'; import StorySearch from '../components/StorySearch'; +import {withRouter} from 'react-router'; import withQuery from 'coral-framework/hocs/withQuery'; class StorySearchContainer extends React.Component { @@ -31,12 +32,19 @@ class StorySearchContainer extends React.Component { this.props.storySearchChange(searchValue); } + goToStory = (id) => { + const {router, closeSearch} = this.props; + router.push(`/admin/moderate/${id}`); + closeSearch(); + } + render () { return ( @@ -66,5 +74,6 @@ export const withAssetSearchQuery = withQuery(gql` }); export default compose( - withAssetSearchQuery + withAssetSearchQuery, + withRouter )(StorySearchContainer); From d386316f8af484da28cd66753ad4a69aaee6804e Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 08:19:22 -0300 Subject: [PATCH 14/29] Styles, copy, funtionality, state changes and clicks. Ready to be tested. --- .../Moderation/components/StorySearch.css | 16 ++++++++--- .../Moderation/components/StorySearch.js | 27 ++++++++++++++----- .../Moderation/containers/StorySearch.js | 4 +-- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index d161b4efd..9ea56df0d 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -1,12 +1,12 @@ .overlay { position: absolute; - background-color: transparent; - top: 0; + top: 58px; left: 0; right: 0; bottom: 0; width: 100%; z-index: 99; + opacity: 0; } .container { @@ -77,6 +77,10 @@ &:hover { background-color: #efefef; } + + &:last-child { + border-bottom: none; + } } .title, .meta { @@ -112,11 +116,11 @@ height: 35px; } -.recentStories { +.searchResults { padding: 10px 24px; } -.recentStories i { +.searchResults i { font-size: 16px; vertical-align: middle; } @@ -133,3 +137,7 @@ margin-left: 10px; } +.noResults { + padding: 10px 24px 15px 49px; +} + diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index 8989f8ed3..c174c892f 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -18,8 +18,8 @@ const StorySearch = (props) => { } return ( -
    -
    +
    +
    { onChange={props.handleSearchChange} onKeyDown={props.handleEnter} value={props.searchValue} + autoFocus />
    +
    ); }; diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js index d2790eccf..f52c290b5 100644 --- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -74,6 +74,6 @@ export const withAssetSearchQuery = withQuery(gql` }); export default compose( - withAssetSearchQuery, - withRouter + withRouter, + withAssetSearchQuery )(StorySearchContainer); From 89cf13b4cf872628090d16f9028fd328698f4ea1 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 15:05:22 -0300 Subject: [PATCH 15/29] Updates --- graph/loaders/assets.js | 4 ++-- graph/resolvers/root_query.js | 4 +--- graph/typeDefs.graphql | 2 +- services/assets.js | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/graph/loaders/assets.js b/graph/loaders/assets.js index b32b37b60..7e924e14a 100644 --- a/graph/loaders/assets.js +++ b/graph/loaders/assets.js @@ -26,8 +26,8 @@ const genAssetsByID = (context, ids) => AssetModel.find({ * @param {Number} limit limit the number of results * @return {Promise} resolves the assets */ -const getAssetsByQuery = (context, value, limit) => { - return AssetsService.search(value, null, limit); +const getAssetsByQuery = (context, query) => { + return AssetsService.search(query); }; /** diff --git a/graph/resolvers/root_query.js b/graph/resolvers/root_query.js index 637af9018..9889b62f2 100644 --- a/graph/resolvers/root_query.js +++ b/graph/resolvers/root_query.js @@ -11,9 +11,7 @@ const RootQuery = { return null; } - const {value = '', limit} = query; - - return Assets.search(value, limit); + return Assets.search(query); }, asset(_, query, {loaders: {Assets}}) { if (query.id) { diff --git a/graph/typeDefs.graphql b/graph/typeDefs.graphql index a4c4b8c5c..c946cca94 100644 --- a/graph/typeDefs.graphql +++ b/graph/typeDefs.graphql @@ -634,7 +634,7 @@ type RootQuery { comment(id: ID!): Comment # All assets. Requires the `ADMIN` role. - assets(query: AssetsQuery!): [Asset] + assets(query: AssetsQuery): [Asset] # Find or create an asset by url, or just find with the ID. asset(id: ID, url: String): Asset diff --git a/services/assets.js b/services/assets.js index b81513b72..5a5b924f3 100644 --- a/services/assets.js +++ b/services/assets.js @@ -109,7 +109,7 @@ module.exports = class AssetsService { * @param {String} value string to search by. * @return {Promise} */ - static search(value = '', skip = null, limit = null) { + static search({value = '', skip = null, limit = null}) { if (value.length === 0) { return AssetsService.all(skip, limit); } else { From fe94a5a6d144984cda1f631d737274228c6674b9 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 15:08:10 -0300 Subject: [PATCH 16/29] Limit 10 --- .../coral-admin/src/routes/Moderation/containers/Moderation.js | 2 +- .../coral-admin/src/routes/Moderation/containers/StorySearch.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index e60a6b914..822db3d08 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -212,7 +212,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets: assets(query: {}) { + assets: assets(query: {limit: 10}) { id title url diff --git a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js index f52c290b5..334248e33 100644 --- a/client/coral-admin/src/routes/Moderation/containers/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/containers/StorySearch.js @@ -54,7 +54,7 @@ class StorySearchContainer extends React.Component { export const withAssetSearchQuery = withQuery(gql` query SearchStories($value: String = "") { - assets(query: {value: $value}) { + assets(query: {value: $value, limit: 10}) { id title url From e30d5a9c627a27435134a37fe6ab88e6a88da28b Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 15:41:32 -0300 Subject: [PATCH 17/29] Sizing --- .../coral-admin/src/routes/Moderation/components/Story.js | 6 +++--- .../src/routes/Moderation/components/StorySearch.css | 7 ++++--- .../src/routes/Moderation/containers/Moderation.js | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Story.js b/client/coral-admin/src/routes/Moderation/components/Story.js index b87611b24..6c3a4b02f 100644 --- a/client/coral-admin/src/routes/Moderation/components/Story.js +++ b/client/coral-admin/src/routes/Moderation/components/Story.js @@ -9,12 +9,12 @@ const formatDate = (date) => { const Story = ({author, title, createdAt, open, id, goToStory}) => { return (
  • goToStory(id)}> -

    {title}

    -

    + {title} +

    By {author} {formatDate(createdAt)} {open ? 'Open' : 'Closed'} -

    +
  • ); }; diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index 9ea56df0d..cbca8e17d 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -67,12 +67,13 @@ } .story { - padding: 10px 63px; + padding: 5px 63px; border-bottom: 1px solid #ddd; cursor: pointer; display: block; text-decoration: none; height: 50px; + box-sizing: border-box; &:hover { background-color: #efefef; @@ -86,7 +87,7 @@ .title, .meta { margin: 0; color: black; - font-size: 17px; + font-size: 15px; } .author, .createdAt, .status { @@ -117,7 +118,7 @@ } .searchResults { - padding: 10px 24px; + padding: 7px 24px; } .searchResults i { diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 822db3d08..e60a6b914 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -212,7 +212,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets: assets(query: {limit: 10}) { + assets: assets(query: {}) { id title url From 4403decbe9d031c6f5b449159d7f1ff696c8764c Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 15:50:58 -0300 Subject: [PATCH 18/29] Handling dropdown on Esc <3 --- .../src/routes/Moderation/components/StorySearch.css | 2 +- .../src/routes/Moderation/components/StorySearch.js | 2 +- .../src/routes/Moderation/containers/StorySearch.js | 8 ++++++++ 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index cbca8e17d..6dd5b1071 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -67,7 +67,7 @@ } .story { - padding: 5px 63px; + padding: 7px 63px; border-bottom: 1px solid #ddd; cursor: pointer; display: block; diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.js b/client/coral-admin/src/routes/Moderation/components/StorySearch.js index c174c892f..f42ceaadd 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.js +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.js @@ -19,7 +19,7 @@ const StorySearch = (props) => { return (
    -
    +
    { + if (e.key === 'Escape') { + e.preventDefault(); + this.props.closeSearch(); + } + } + handleEnter = (e) => { if (e.key === 'Enter') { e.preventDefault(); @@ -43,6 +50,7 @@ class StorySearchContainer extends React.Component { Date: Fri, 16 Jun 2017 16:18:02 -0300 Subject: [PATCH 19/29] Updated BE --- graph/loaders/assets.js | 5 ++--- routes/api/assets/index.js | 4 ++-- test/server/routes/api/assets/index.js | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/graph/loaders/assets.js b/graph/loaders/assets.js index 7e924e14a..020eafbcb 100644 --- a/graph/loaders/assets.js +++ b/graph/loaders/assets.js @@ -22,8 +22,7 @@ const genAssetsByID = (context, ids) => AssetModel.find({ /** * [getAssetsByQuery description] * @param {Object} context the context of the request - * @param {String} value text string to search agains the documents - * @param {Number} limit limit the number of results + * @param {Object} query the query * @return {Promise} resolves the assets */ const getAssetsByQuery = (context, query) => { @@ -76,7 +75,7 @@ module.exports = (context) => ({ // this operation create a new asset if one isn't found. getByURL: (url) => findOrCreateAssetByURL(context, url), - search: (value, limit) => getAssetsByQuery(context, value, limit), + search: (query) => getAssetsByQuery(context, query), getByID: new DataLoader((ids) => genAssetsByID(context, ids)), getForMetrics: () => getAssetsForMetrics(context), getAll: new util.SingletonResolver(() => AssetModel.find({})) diff --git a/routes/api/assets/index.js b/routes/api/assets/index.js index 3bb3ef778..f02b49f7e 100644 --- a/routes/api/assets/index.js +++ b/routes/api/assets/index.js @@ -48,13 +48,13 @@ router.get('/', (req, res, next) => { Promise.all([ // Find the actuall assets. - FilterOpenAssets(AssetsService.search(search), filter) + FilterOpenAssets(AssetsService.search({value: search}), filter) .sort({[field]: (sort === 'asc') ? 1 : -1}) .skip(parseInt(skip)) .limit(parseInt(limit)), // Get the count of actual assets. - FilterOpenAssets(AssetsService.search(search), filter) + FilterOpenAssets(AssetsService.search({value: search}), filter) .count() ]) .then(([result, count]) => { diff --git a/test/server/routes/api/assets/index.js b/test/server/routes/api/assets/index.js index 80708688b..62c4cdb47 100644 --- a/test/server/routes/api/assets/index.js +++ b/test/server/routes/api/assets/index.js @@ -43,6 +43,7 @@ describe('/api/v1/assets', () => { .set(passport.inject({roles: ['ADMIN']})) .then((res) => { const body = res.body; + console.log(body) expect(body).to.have.property('count', 2); expect(body).to.have.property('result'); From 367c5707472c57471659019e5103881bd5918a8b Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 16:21:39 -0300 Subject: [PATCH 20/29] ModQueue query --- .../coral-admin/src/routes/Moderation/containers/Moderation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index e60a6b914..167064834 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -212,7 +212,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets: assets(query: {}) { + assets: assets(query: {limit: 0}) { id title url From 61591a9716c7c04377325c16285f0a02783b86ae Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Fri, 16 Jun 2017 16:24:00 -0300 Subject: [PATCH 21/29] Removing extra log --- test/server/routes/api/assets/index.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/server/routes/api/assets/index.js b/test/server/routes/api/assets/index.js index 62c4cdb47..63d3acb75 100644 --- a/test/server/routes/api/assets/index.js +++ b/test/server/routes/api/assets/index.js @@ -43,8 +43,7 @@ describe('/api/v1/assets', () => { .set(passport.inject({roles: ['ADMIN']})) .then((res) => { const body = res.body; - console.log(body) - + expect(body).to.have.property('count', 2); expect(body).to.have.property('result'); From 614f31d0da58804d260862ef498e47588efb8993 Mon Sep 17 00:00:00 2001 From: IAmSamHankins Date: Fri, 16 Jun 2017 15:39:24 -0400 Subject: [PATCH 22/29] styling of search results bar --- .../routes/Moderation/components/StorySearch.css | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index 6dd5b1071..d5b1d3afb 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -62,18 +62,19 @@ letter-spacing: 0.7px; } -.storyList { +/*.storyList { border-top: 1px solid #ddd; -} +}*/ .story { - padding: 7px 63px; + padding: 7px 50px; border-bottom: 1px solid #ddd; cursor: pointer; display: block; text-decoration: none; height: 50px; box-sizing: border-box; + transition: background-color 400ms; &:hover { background-color: #efefef; @@ -118,7 +119,8 @@ } .searchResults { - padding: 7px 24px; + padding: 7px 27px; + background: #F5F5F5; } .searchResults i { @@ -135,10 +137,9 @@ font-weight: 500; letter-spacing: 0.7px; vertical-align: middle; - margin-left: 10px; + margin-left: 8px; } .noResults { padding: 10px 24px 15px 49px; } - From e7eb300e12ab8ecd6a816be19e9a5194d65c74e5 Mon Sep 17 00:00:00 2001 From: IAmSamHankins Date: Fri, 16 Jun 2017 15:47:45 -0400 Subject: [PATCH 23/29] search input box styling --- .../src/routes/Moderation/components/StorySearch.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index d5b1d3afb..db1ffcfb6 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -29,8 +29,7 @@ .headInput { background-color: #efefef; - padding: 17px 56px; - height: 80px; + padding: 10px 27px; box-sizing: border-box; } @@ -41,12 +40,13 @@ font-size: 16px; margin-right: 5px; position: relative; - top: 2px; + top: 3px; box-sizing: border-box; border-radius: 3px; border: solid 1px #dfdfdf; max-height: 45px; max-width: 600px; + font-weight: 300; } .cta { From 6c5d94ec3b639e0722f1899dcd43841acd24c718 Mon Sep 17 00:00:00 2001 From: IAmSamHankins Date: Fri, 16 Jun 2017 16:40:17 -0400 Subject: [PATCH 24/29] adjustments to letter spacing, and container positioning. --- .../src/routes/Moderation/components/StorySearch.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/StorySearch.css b/client/coral-admin/src/routes/Moderation/components/StorySearch.css index db1ffcfb6..f0503f6b9 100644 --- a/client/coral-admin/src/routes/Moderation/components/StorySearch.css +++ b/client/coral-admin/src/routes/Moderation/components/StorySearch.css @@ -12,7 +12,7 @@ .container { position: absolute; background-color: white; - top: 100px; + top: 106px; left: 0; right: 0; margin-left: auto; @@ -59,7 +59,7 @@ font-size: 15px; font-weight: 500; padding: 12px 30px; - letter-spacing: 0.7px; + letter-spacing: 0.25px; } /*.storyList { @@ -135,7 +135,7 @@ .headlineRecent { font-size: 15px; font-weight: 500; - letter-spacing: 0.7px; + letter-spacing: 0.25px; vertical-align: middle; margin-left: 8px; } From 77fddba84112b53cf48a63026d91147fe61c602c Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 19 Jun 2017 11:05:16 -0300 Subject: [PATCH 25/29] removing overflow hidden --- client/coral-admin/src/components/ui/Layout.css | 1 - 1 file changed, 1 deletion(-) diff --git a/client/coral-admin/src/components/ui/Layout.css b/client/coral-admin/src/components/ui/Layout.css index 792440d97..a3cc7b7b6 100644 --- a/client/coral-admin/src/components/ui/Layout.css +++ b/client/coral-admin/src/components/ui/Layout.css @@ -1,6 +1,5 @@ .layout { max-width: 1280px; margin: 0 auto; - overflow: hidden; background-color: #FAFAFA; } From 853c1e407efa9633f4e8f99adb65e70e9961353a Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 19 Jun 2017 20:33:34 +0700 Subject: [PATCH 26/29] Simplify args --- .../src/routes/Moderation/containers/Moderation.js | 2 +- services/assets.js | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 167064834..382fd5756 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -212,7 +212,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets: assets(query: {limit: 0}) { + assets { id title url diff --git a/services/assets.js b/services/assets.js index 5a5b924f3..74bc1aa3a 100644 --- a/services/assets.js +++ b/services/assets.js @@ -104,13 +104,12 @@ module.exports = class AssetsService { } /** - * Finds assets matching keywords on the model. If `value` is an empty string, - * then it will not even perform a text search query. + * Finds assets matching keywords on the model. * @param {String} value string to search by. * @return {Promise} */ - static search({value = '', skip = null, limit = null}) { - if (value.length === 0) { + static search({value, skip, limit} = {}) { + if (!value) { return AssetsService.all(skip, limit); } else { return AssetModel From e1bc1476ead8e85fc41087cd82f3c6cd6895a2c9 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 19 Jun 2017 21:02:44 +0700 Subject: [PATCH 27/29] Remove the need for querying all assets --- .../routes/Moderation/components/Moderation.js | 17 ++++++++++------- .../routes/Moderation/containers/Moderation.js | 16 +++------------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index a0a5b3705..bcd76da05 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -11,6 +11,7 @@ import NotFoundAsset from './NotFoundAsset'; import ModerationKeysModal from '../../../components/ModerationKeysModal'; import UserDetail from '../containers/UserDetail'; import StorySearch from '../containers/StorySearch'; +import {Spinner} from 'coral-ui'; export default class Moderation extends Component { state = { @@ -102,18 +103,20 @@ export default class Moderation extends Component { } render () { - const {root, moderation, settings, assets, viewUserDetail, hideUserDetail, ...props} = this.props; + const {root, moderation, settings, viewUserDetail, hideUserDetail, ...props} = this.props; const providedAssetId = this.props.params.id; const activeTab = this.props.route.path === ':id' ? 'premod' : this.props.route.path; + const {asset} = root; - let asset; + if (providedAssetId && !asset) { + if (asset === undefined) { - if (providedAssetId) { - asset = assets.find((asset) => asset.id === this.props.params.id); - - if (!asset) { - return ; + // Still loading. + return ; } + + // Not found. + return ; } const comments = root[activeTab]; diff --git a/client/coral-admin/src/routes/Moderation/containers/Moderation.js b/client/coral-admin/src/routes/Moderation/containers/Moderation.js index 382fd5756..c3ace0ebc 100644 --- a/client/coral-admin/src/routes/Moderation/containers/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/containers/Moderation.js @@ -2,7 +2,6 @@ import React, {Component} from 'react'; import {connect} from 'react-redux'; import {bindActionCreators} from 'redux'; import {compose, gql} from 'react-apollo'; -import isEqual from 'lodash/isEqual'; import withQuery from 'coral-framework/hocs/withQuery'; import {getDefinitionName} from 'coral-framework/utils'; import * as notification from 'coral-admin/src/services/notification'; @@ -12,7 +11,6 @@ import update from 'immutability-helper'; import {withSetUserStatus, withSuspendUser, withSetCommentStatus} from 'coral-framework/graphql/mutations'; import {fetchSettings} from 'actions/settings'; -import {updateAssets} from 'actions/assets'; import { toggleModal, singleView, @@ -39,13 +37,6 @@ class ModerationContainer extends Component { this.props.fetchSettings(); } - componentWillReceiveProps(nextProps) { - const {updateAssets} = this.props; - if(!isEqual(nextProps.root.assets, this.props.root.assets)) { - updateAssets(nextProps.root.assets); - } - } - suspendUser = async (args) => { this.props.hideSuspendUserDialog(); try { @@ -175,7 +166,7 @@ const commentConnectionFragment = gql` `; const withModQueueQuery = withQuery(gql` - query CoralAdmin_Moderation($asset_id: ID, $sort: SORT_ORDER) { + query CoralAdmin_Moderation($asset_id: ID, $sort: SORT_ORDER, $allAssets: Boolean!) { all: comments(query: { statuses: [NONE, PREMOD, ACCEPTED, REJECTED], asset_id: $asset_id, @@ -212,7 +203,7 @@ const withModQueueQuery = withQuery(gql` }) { ...CoralAdmin_Moderation_CommentConnection } - assets { + asset(id: $asset_id) @skip(if: $allAssets) { id title url @@ -248,6 +239,7 @@ const withModQueueQuery = withQuery(gql` variables: { asset_id: id, sort: sortOrder, + allAssets: id === null } }; }, @@ -291,14 +283,12 @@ const mapStateToProps = (state) => ({ moderation: state.moderation.toJS(), settings: state.settings.toJS(), auth: state.auth.toJS(), - assets: state.assets.get('assets') }); const mapDispatchToProps = (dispatch) => ({ ...bindActionCreators({ toggleModal, singleView, - updateAssets, fetchSettings, showBanUserDialog, hideBanUserDialog, From f954d2be903368e07bf4700236555bee55fddff7 Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 19 Jun 2017 21:23:30 +0700 Subject: [PATCH 28/29] Better loading detection --- .../src/routes/Moderation/components/Moderation.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index bcd76da05..ec858eaed 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -108,17 +108,18 @@ export default class Moderation extends Component { const activeTab = this.props.route.path === ':id' ? 'premod' : this.props.route.path; const {asset} = root; - if (providedAssetId && !asset) { - if (asset === undefined) { - - // Still loading. - return ; - } + if (providedAssetId && asset === null) { // Not found. return ; } + if (providedAssetId && (asset === undefined || asset.id !== providedAssetId)) { + + // Still loading. + return ; + } + const comments = root[activeTab]; let activeTabCount; switch(activeTab) { From 0cd3921f4467e7b4cca5f8cc7fb8183fc532f04a Mon Sep 17 00:00:00 2001 From: Chi Vinh Le Date: Mon, 19 Jun 2017 21:29:33 +0700 Subject: [PATCH 29/29] Simplification --- .../routes/Moderation/components/Moderation.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/client/coral-admin/src/routes/Moderation/components/Moderation.js b/client/coral-admin/src/routes/Moderation/components/Moderation.js index ec858eaed..c2036247d 100644 --- a/client/coral-admin/src/routes/Moderation/components/Moderation.js +++ b/client/coral-admin/src/routes/Moderation/components/Moderation.js @@ -108,16 +108,17 @@ export default class Moderation extends Component { const activeTab = this.props.route.path === ':id' ? 'premod' : this.props.route.path; const {asset} = root; - if (providedAssetId && asset === null) { + if (providedAssetId) { + if (asset === null) { - // Not found. - return ; - } + // Not found. + return ; + } + if (asset === undefined || asset.id !== providedAssetId) { - if (providedAssetId && (asset === undefined || asset.id !== providedAssetId)) { - - // Still loading. - return ; + // Still loading. + return ; + } } const comments = root[activeTab];