From 838a3bad2e4fd815454c2654e889d6aac9e07613 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Wed, 13 Sep 2017 13:21:27 -0300 Subject: [PATCH] Ban In-Stream --- plugin-api/beta/client/hocs/index.js | 1 + .../client/components/BanUserAction.js | 13 ++++ .../client/components/ModerationActions.js | 2 + .../client/containers/BanUserAction.js | 59 +++++++++++++++++++ .../client/containers/ModerationActions.js | 5 +- 5 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js create mode 100644 plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js diff --git a/plugin-api/beta/client/hocs/index.js b/plugin-api/beta/client/hocs/index.js index d6d5a67a0..1359143e1 100644 --- a/plugin-api/beta/client/hocs/index.js +++ b/plugin-api/beta/client/hocs/index.js @@ -7,6 +7,7 @@ export {default as connect} from 'coral-framework/hocs/connect'; export {default as withEmit} from 'coral-framework/hocs/withEmit'; export { withIgnoreUser, + withSetUserStatus, withStopIgnoringUser, withSetCommentStatus, } from 'coral-framework/graphql/mutations'; diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js new file mode 100644 index 000000000..60067e0f3 --- /dev/null +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js @@ -0,0 +1,13 @@ +import React from 'react'; +import styles from './styles.css'; +import {t} from 'plugin-api/beta/client/services'; +import {Icon} from 'plugin-api/beta/client/components/ui'; +import cn from 'classnames'; + +export default ({banUser, comment: {}}) => ( + +); diff --git a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js index a4a753d60..cd5986d28 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js +++ b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js @@ -6,6 +6,7 @@ import {Icon} from 'plugin-api/beta/client/components/ui'; import ClickOutside from 'coral-framework/components/ClickOutside'; import RejectCommentAction from '../containers/RejectCommentAction'; import ApproveCommentAction from '../containers/ApproveCommentAction'; +import BanUserAction from '../containers/BanUserAction'; import {Slot} from 'plugin-api/beta/client/components'; export default class ModerationActions extends React.Component { @@ -29,6 +30,7 @@ export default class ModerationActions extends React.Component { /> + )} diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js new file mode 100644 index 000000000..c6f543bf6 --- /dev/null +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -0,0 +1,59 @@ +import React from 'react'; +import {compose} from 'react-apollo'; +import {bindActionCreators} from 'redux'; +import {getErrorMessages} from 'plugin-api/beta/client/utils'; +import {notify} from 'plugin-api/beta/client/actions/notification'; +import BanUserAction from '../components/BanUserAction'; +import {connect, withSetCommentStatus, withSetUserStatus} from 'plugin-api/beta/client/hocs'; + +class BanUserActionContainer extends React.Component { + + banUser = async () => { + const { + notify, + comment, + hideMenu, + setCommentStatus, + setUserStatus + } = this.props; + + try { + await setUserStatus({ + userId: comment.user.id, + status: 'BANNED' + }); + + hideMenu(); + + if (comment.status !== 'REJECTED') { + await setCommentStatus({ + commentId: comment.id, + status: 'REJECTED' + }); + } + } + catch(err) { + notify('error', getErrorMessages(err)); + } + } + + render() { + return ; + } +} + +const mapDispatchToProps = (dispatch) => + bindActionCreators({ + notify + }, dispatch); + +const enhance = compose( + connect(null, mapDispatchToProps), + withSetCommentStatus, + withSetUserStatus +); + +export default enhance(BanUserActionContainer); diff --git a/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js b/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js index 984c7f57a..1489135c0 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js @@ -47,9 +47,9 @@ class ModerationActionsContainer extends React.Component { root={this.props.root} asset={this.props.asset} comment={this.props.comment} - menuVisible={this.props.showMenuForComment === this.props.comment.id} toogleMenu={this.toogleMenu} hideMenu={this.hideMenu} + menuVisible={this.props.showMenuForComment === this.props.comment.id} />; } } @@ -77,6 +77,9 @@ const enhance = compose( fragment TalkModerationActions_comment on Comment { id status + user { + id + } tags { tag { name