diff --git a/client/coral-admin/src/components/Header.js b/client/coral-admin/src/components/Header.js index cc9062f67..e6bd73f52 100644 --- a/client/coral-admin/src/components/Header.js +++ b/client/coral-admin/src/components/Header.js @@ -7,7 +7,8 @@ import styles from './Header.css'; import t from 'coral-framework/services/i18n'; import { Logo } from './Logo'; import { can } from 'coral-framework/services/perms'; -import Indicator from './Indicator'; +import ModerationIndicator from '../routes/Moderation/containers/Indicator'; +import CommunityIndicator from '../routes/Community/containers/Indicator'; const CoralHeader = ({ handleLogout, @@ -30,9 +31,7 @@ const CoralHeader = ({ activeClassName={styles.active} > {t('configure.moderate')} - {(root.premodCount !== 0 || root.reportedCount !== 0) && ( - - )} + )} {t('configure.community')} - {root.flaggedUsernamesCount !== 0 && } + {can(auth.user, 'UPDATE_CONFIG') && ( diff --git a/client/coral-admin/src/containers/Header.js b/client/coral-admin/src/containers/Header.js index 49e2cab05..dae096517 100644 --- a/client/coral-admin/src/containers/Header.js +++ b/client/coral-admin/src/containers/Header.js @@ -1,22 +1,18 @@ import { gql } from 'react-apollo'; import withQuery from 'coral-framework/hocs/withQuery'; import Header from '../components/Header'; +import CommunityIndicator from '../routes/Community/containers/Indicator'; +import ModerationIndicator from '../routes/Moderation/containers/Indicator'; +import { getDefinitionName } from 'coral-framework/utils'; export default withQuery( gql` query TalkAdmin_Header { - __typename - premodCount: commentCount(query: { statuses: [PREMOD] }) - reportedCount: commentCount( - query: { statuses: [NONE, PREMOD, SYSTEM_WITHHELD], action_type: FLAG } - ) - flaggedUsernamesCount: userCount( - query: { - action_type: FLAG - state: { status: { username: [SET, CHANGED] } } - } - ) + ...${getDefinitionName(ModerationIndicator.fragments.root)} + ...${getDefinitionName(CommunityIndicator.fragments.root)} } + ${ModerationIndicator.fragments.root} + ${CommunityIndicator.fragments.root} `, { options: { diff --git a/client/coral-admin/src/routes/Community/containers/Indicator.js b/client/coral-admin/src/routes/Community/containers/Indicator.js new file mode 100644 index 000000000..04a351fb6 --- /dev/null +++ b/client/coral-admin/src/routes/Community/containers/Indicator.js @@ -0,0 +1,24 @@ +import { compose, gql } from 'react-apollo'; +import Indicator from '../../../components/Indicator'; +import { withFragments } from 'plugin-api/beta/client/hocs'; +import { branch, renderNothing } from 'recompose'; + +const hideIfNoData = hasNoData => branch(hasNoData, renderNothing); + +const enhance = compose( + withFragments({ + root: gql` + fragment TalkAdmin_Community_Indicator_root on RootQuery { + flaggedUsernamesCount: userCount( + query: { + action_type: FLAG + state: { status: { username: [SET, CHANGED] } } + } + ) + } + `, + }), + hideIfNoData(props => !props.root.flaggedUsernamesCount) +); + +export default enhance(Indicator); diff --git a/client/coral-admin/src/routes/Moderation/containers/Indicator.js b/client/coral-admin/src/routes/Moderation/containers/Indicator.js new file mode 100644 index 000000000..bd33a58ef --- /dev/null +++ b/client/coral-admin/src/routes/Moderation/containers/Indicator.js @@ -0,0 +1,25 @@ +import { compose, gql } from 'react-apollo'; +import Indicator from '../../../components/Indicator'; +import { withFragments } from 'plugin-api/beta/client/hocs'; +import { branch, renderNothing } from 'recompose'; + +const hideIfNoData = hasNoData => branch(hasNoData, renderNothing); + +const enhance = compose( + withFragments({ + root: gql` + fragment TalkAdmin_Moderation_Indicator_root on RootQuery { + premodCount: commentCount(query: { statuses: [PREMOD] }) + reportedCount: commentCount( + query: { + statuses: [NONE, PREMOD, SYSTEM_WITHHELD] + action_type: FLAG + } + ) + } + `, + }), + hideIfNoData(props => !props.root.premodCount && !props.root.reportedCount) +); + +export default enhance(Indicator);