diff --git a/client/coral-admin/src/actions/auth.js b/client/coral-admin/src/actions/auth.js index 4e949f7b7..89b56d4dc 100644 --- a/client/coral-admin/src/actions/auth.js +++ b/client/coral-admin/src/actions/auth.js @@ -9,9 +9,13 @@ export const handleLogin = (email, password, recaptchaResponse) => dispatch => { params.headers = {'X-Recaptcha-Response': recaptchaResponse}; } return coralApi('/auth/local', params) - .then(result => { - const isAdmin = !!result.user.roles.filter(i => i === 'ADMIN').length; - dispatch(checkLoginSuccess(result.user, isAdmin)); + .then(({user}) => { + if (!user) { + return dispatch(checkLoginFailure('not logged in')); + } + + const isAdmin = !!user.roles.filter(i => i === 'ADMIN').length; + dispatch(checkLoginSuccess(user, isAdmin)); }) .catch(error => { diff --git a/client/coral-admin/src/components/BanUserDialog.js b/client/coral-admin/src/components/BanUserDialog.js index 3e82babc6..ee5830249 100644 --- a/client/coral-admin/src/components/BanUserDialog.js +++ b/client/coral-admin/src/components/BanUserDialog.js @@ -47,6 +47,8 @@ const BanUserDialog = ({open, handleClose, handleBanUser, rejectComment, user, c BanUserDialog.propTypes = { handleBanUser: PropTypes.func.isRequired, handleClose: PropTypes.func.isRequired, + rejectComment: PropTypes.func.isRequired, + commentId: PropTypes.string, user: PropTypes.object.isRequired, }; diff --git a/client/coral-admin/src/containers/Dashboard/Dashboard.js b/client/coral-admin/src/containers/Dashboard/Dashboard.js index e43db9628..f5d0aa39b 100644 --- a/client/coral-admin/src/containers/Dashboard/Dashboard.js +++ b/client/coral-admin/src/containers/Dashboard/Dashboard.js @@ -4,65 +4,16 @@ import {compose} from 'react-apollo'; import {connect} from 'react-redux'; import {getMetrics} from 'coral-admin/src/graphql/queries'; import FlagWidget from './FlagWidget'; -import LikeWidget from './LikeWidget'; import ActivityWidget from './ActivityWidget'; +import CountdownTimer from 'coral-admin/src/components/CountdownTimer'; import {showBanUserDialog, hideBanUserDialog} from 'coral-admin/src/actions/moderation'; -import I18n from 'coral-framework/modules/i18n/i18n'; -import translations from 'coral-admin/src/translations'; -import {Spinner, Icon} from 'coral-ui'; -const lang = new I18n(translations); -const refreshIntervalSeconds = 60 * 5; +import {Spinner} from 'coral-ui'; class Dashboard extends React.Component { - constructor (props) { - super(props); - - try { - if (window.localStorage.getItem('coral:dashboardNote') === null) { - window.localStorage.setItem('coral:dashboardNote', 'show'); - } - } catch (e) { - - // above will fail in Private Mode in some browsers. - } - - this.state = { - secondsUntilRefresh: refreshIntervalSeconds, - dashboardNote: window.localStorage.getItem('coral:dashboardNote') || 'show' - }; - } - - componentWillMount () { - setInterval(() => { // the countdown timer - let nextCount = this.state.secondsUntilRefresh - 1; - if (nextCount < 0) { - nextCount = refreshIntervalSeconds; - this.props.data.refetch(); - } - this.setState({secondsUntilRefresh: nextCount}); - }, 1000); - } - - dismissNote = () => { - try { - window.localStorage.setItem('coral:dashboardNote', 'hide'); - } catch (e) { - - // when setItem fails in Safari Private mode - this.setState({dashboardNote: 'hide'}); - } - } - - formatTime = () => { - const minutes = Math.floor(this.state.secondsUntilRefresh / 60); - let seconds = (this.state.secondsUntilRefresh % 60).toString(); - if (seconds.length < 2) { - seconds = `0${seconds}`; - } - - return `${minutes}:${seconds}`; + reloadData = () => { + this.props.data.refetch(); } render () { @@ -71,23 +22,13 @@ class Dashboard extends React.Component { return ; } - const {data: {assetsByLike, assetsByFlag, assetsByActivity}} = this.props; - const hideReloadNote = window.localStorage.getItem('coral:dashboardNote') === 'hide' || - this.state.dashboardNote === 'hide'; // for Safari Incognito + const {data: {assetsByActivity, assetsByFlag}} = this.props; return (
-

- × - {lang.t('dashboard.next-update', this.formatTime())} {lang.t('dashboard.auto-update')} -

+
- -
diff --git a/client/coral-admin/src/containers/Dashboard/Widget.css b/client/coral-admin/src/containers/Dashboard/Widget.css index b4515786f..9d7ae441e 100644 --- a/client/coral-admin/src/containers/Dashboard/Widget.css +++ b/client/coral-admin/src/containers/Dashboard/Widget.css @@ -14,10 +14,6 @@ box-sizing: border-box; } -.widget * { - box-sizing: border-box; -} - .heading { margin: 0; padding-left: 10px; diff --git a/client/coral-admin/src/graphql/queries/metricsQuery.graphql b/client/coral-admin/src/graphql/queries/metricsQuery.graphql index f0dff8965..07093fd8d 100644 --- a/client/coral-admin/src/graphql/queries/metricsQuery.graphql +++ b/client/coral-admin/src/graphql/queries/metricsQuery.graphql @@ -4,7 +4,7 @@ query Metrics ($from: Date!, $to: Date!) { assetsByFlag: assetMetrics(from: $from, to: $to, sort: FLAG) { ...metrics } - assetsByLike: assetMetrics(from: $from, to: $to, sort: LIKE) { + assetsByActivity: assetMetrics(from: $from, to: $to, sort: ACTIVITY) { ...metrics } assetsByActivity: assetMetrics(from: $from, to: $to, sort: ACTIVITY) {