import React from 'react'; import PropTypes from 'prop-types'; import Label from 'coral-ui/components/Label'; import Slot from 'coral-framework/components/Slot'; import { t } from 'coral-framework/services/i18n'; import FlagLabel from 'coral-ui/components/FlagLabel'; import cn from 'classnames'; import styles from './CommentLabels.css'; import { ADMIN, MODERATOR, STAFF } from 'coral-framework/constants/roles'; const staffRoles = [ADMIN, MODERATOR, STAFF]; function isUserFlagged(actions) { return actions.some( action => action.__typename === 'FlagAction' && action.user ); } function getUserFlaggedType(actions) { return actions.some( action => action.__typename === 'FlagAction' && action.user && staffRoles.includes(action.user.role) ) ? 'Staff' : 'User'; } function hasSuspectedWords(actions) { return actions.some( action => action.__typename === 'FlagAction' && action.reason === 'SUSPECT_WORD' ); } function hasHistoryFlag(actions) { return actions.some( action => action.__typename === 'FlagAction' && action.reason === 'TRUST' ); } const CommentLabels = ({ comment, comment: { className, status, actions, hasParent }, }) => { const slotPassthrough = { comment, }; return (
{hasParent && ( )} {status === 'PREMOD' && ( )} {isUserFlagged(actions) && ( {getUserFlaggedType(actions)} )} {hasSuspectedWords(actions) && ( {t('flags.reasons.comment.suspect_word')} )} {hasHistoryFlag(actions) && ( {t('flags.reasons.comment.trust')} )}
); }; CommentLabels.propTypes = { comment: PropTypes.shape({ className: PropTypes.string, status: PropTypes.string, actions: PropTypes.array, hasParent: PropTypes.bool, }), }; export default CommentLabels;