import React, { Component } from 'react'; import PropTypes from 'prop-types'; import styles from './FlagDetails.css'; import { t } from 'plugin-api/beta/client/services'; import { Slot, IfSlotIsNotEmpty, CommentDetail, } from 'plugin-api/beta/client/components'; class FlagDetails extends Component { render() { const { comment: { actions }, more, data, root, comment } = this.props; const flagActions = actions && actions.filter(a => a.__typename === 'FlagAction'); const summaries = flagActions.reduce((sum, action) => { if (!(action.reason in sum)) { sum[action.reason] = { count: 0, actions: [] }; } sum[action.reason].count++; if (action.user) { sum[action.reason].userFlagged = true; } return sum; }, {}); const reasons = Object.keys(summaries); const queryData = { root, comment, }; return ( {reasons.map(reason => (
  • {t(`flags.reasons.comment.${reason.toLowerCase()}`)}{' '} {summaries[reason].userFlagged && `(${summaries[reason].count})`}
  • ))} } > {more && ( )}
    ); } } FlagDetails.propTypes = { more: PropTypes.bool, data: PropTypes.object, root: PropTypes.object, comment: PropTypes.shape({ actions: PropTypes.arrayOf( PropTypes.shape({ message: PropTypes.string, user: PropTypes.shape({ username: PropTypes.string }), }) ).isRequired, }).isRequired, }; export default FlagDetails;