From 838a3bad2e4fd815454c2654e889d6aac9e07613 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Wed, 13 Sep 2017 13:21:27 -0300 Subject: [PATCH 01/13] 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 From 0ae2919defd68226a056f4c2378b58981d80dbdf Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Wed, 13 Sep 2017 13:42:32 -0300 Subject: [PATCH 02/13] Perms and excludeIf --- perms/mutationReducer.js | 3 +++ .../client/containers/BanUserAction.js | 5 +++-- .../client/containers/ModerationActions.js | 8 ++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/perms/mutationReducer.js b/perms/mutationReducer.js index 2e8718ed1..6b0bd0dde 100644 --- a/perms/mutationReducer.js +++ b/perms/mutationReducer.js @@ -10,13 +10,16 @@ module.exports = (user, perm) => { case types.EDIT_COMMENT: return true; case types.ADD_COMMENT_TAG: + return check(user, ['ADMIN', 'MODERATOR', 'STAFF']); case types.REMOVE_COMMENT_TAG: return check(user, ['ADMIN', 'MODERATOR', 'STAFF']); case types.UPDATE_USER_ROLES: case types.REJECT_USERNAME: case types.SET_USER_STATUS: + return check(user, ['ADMIN', 'MODERATOR']); case types.SUSPEND_USER: case types.SET_COMMENT_STATUS: + return check(user, ['ADMIN', 'MODERATOR']); case types.UPDATE_CONFIG: case types.UPDATE_SETTINGS: case types.UPDATE_WORDLIST: diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js index c6f543bf6..ab1b9359a 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -4,7 +4,7 @@ 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'; +import {connect, withSetCommentStatus, withSetUserStatus, excludeIf} from 'plugin-api/beta/client/hocs'; class BanUserActionContainer extends React.Component { @@ -53,7 +53,8 @@ const mapDispatchToProps = (dispatch) => const enhance = compose( connect(null, mapDispatchToProps), withSetCommentStatus, - withSetUserStatus + withSetUserStatus, + excludeIf(({root: {me}, comment}) => !me || me.id === comment.user.id), ); 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 1489135c0..7a089463f 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js @@ -42,6 +42,7 @@ class ModerationActionsContainer extends React.Component { } render() { + console.log(this.props.root, this.props.comment) return const enhance = compose( connect(mapStateToProps, mapDispatchToProps), withFragments({ + root: gql` + fragment TalkModerationActions_root on RootQuery { + me { + id + } + }` + , asset: gql` fragment TalkModerationActions_asset on Asset { id From bdd5e47427464b53ca6f70a3ea36db7a54e991d5 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Wed, 13 Sep 2017 17:38:04 -0300 Subject: [PATCH 03/13] Icon, translations --- .../client/components/BanUserAction.js | 5 +++-- .../client/containers/ModerationActions.js | 1 - .../talk-plugin-moderation-actions/client/translations.yml | 4 +++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js index 60067e0f3..a9c497c0b 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js @@ -4,10 +4,11 @@ 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: {}}) => ( +export default ({banUser}) => ( ); diff --git a/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js b/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js index 7a089463f..80df3fc2a 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/ModerationActions.js @@ -42,7 +42,6 @@ class ModerationActionsContainer extends React.Component { } render() { - console.log(this.props.root, this.props.comment) return Date: Thu, 14 Sep 2017 09:14:15 -0300 Subject: [PATCH 04/13] Adding dialog --- .../client/actions.js | 10 ++- .../client/components/BanUserAction.js | 4 +- .../client/components/BanUserDialog.css | 4 ++ .../client/components/BanUserDialog.js | 21 ++++++ .../client/constants.js | 2 + .../client/containers/BanUserAction.js | 43 ++---------- .../client/containers/BanUserDialog.js | 69 +++++++++++++++++++ .../client/index.js | 2 + .../client/reducer.js | 13 +++- .../client/translations.yml | 10 ++- 10 files changed, 136 insertions(+), 42 deletions(-) create mode 100644 plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css create mode 100644 plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js create mode 100644 plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js diff --git a/plugins/talk-plugin-moderation-actions/client/actions.js b/plugins/talk-plugin-moderation-actions/client/actions.js index de4714d21..9811bee91 100644 --- a/plugins/talk-plugin-moderation-actions/client/actions.js +++ b/plugins/talk-plugin-moderation-actions/client/actions.js @@ -1,4 +1,4 @@ -import {OPEN_MENU, CLOSE_MENU} from './constants'; +import {OPEN_MENU, CLOSE_MENU, OPEN_DIALOG, CLOSE_DIALOG} from './constants'; export const openMenu = (id) => ({ type: OPEN_MENU, @@ -8,3 +8,11 @@ export const openMenu = (id) => ({ export const closeMenu = () => ({ type: CLOSE_MENU, }); + +export const openDialog = () => ({ + type: OPEN_DIALOG, +}); + +export const closeDialog = () => ({ + type: CLOSE_DIALOG, +}); diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js index a9c497c0b..4ee28c24e 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js @@ -4,10 +4,10 @@ import {t} from 'plugin-api/beta/client/services'; import {Icon} from 'plugin-api/beta/client/components/ui'; import cn from 'classnames'; -export default ({banUser}) => ( +export default ({openDialog}) => ( diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css new file mode 100644 index 000000000..bb7d6733f --- /dev/null +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css @@ -0,0 +1,4 @@ +.dialog { + border: none; + box-shadow: 0 9px 46px 8px rgba(0, 0, 0, 0.14), 0 11px 15px -7px rgba(0, 0, 0, 0.12), 0 24px 38px 3px rgba(0, 0, 0, 0.2); +} \ No newline at end of file diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js new file mode 100644 index 000000000..271e8a710 --- /dev/null +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js @@ -0,0 +1,21 @@ +import React from 'react'; +import styles from './BanUserDialog.css'; +import {t} from 'plugin-api/beta/client/services'; +import {Dialog, Button} from 'plugin-api/beta/client/components/ui'; + +export default ({showDialog, closeDialog, banUser}) => ( + +

{t('talk-plugin-moderation-actions.ban_user_dialog_headline')}

+

+ {t('talk-plugin-moderation-actions.ban_user_dialog_copy')} +

+
+ + +
+
+); diff --git a/plugins/talk-plugin-moderation-actions/client/constants.js b/plugins/talk-plugin-moderation-actions/client/constants.js index de3d5c909..54e4329ff 100644 --- a/plugins/talk-plugin-moderation-actions/client/constants.js +++ b/plugins/talk-plugin-moderation-actions/client/constants.js @@ -2,3 +2,5 @@ const prefix = 'TALK_MODERATION_ACTIONS'; export const OPEN_MENU = `${prefix}_OPEN_MENU`; export const CLOSE_MENU = `${prefix}_CLOSE_MENU`; +export const OPEN_DIALOG = `${prefix}_OPEN_DIALOG`; +export const CLOSE_DIALOG = `${prefix}_CLOSE_DIALOG`; diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js index ab1b9359a..62019cdcd 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -1,59 +1,28 @@ import React from 'react'; import {compose} from 'react-apollo'; +import {openDialog} from '../actions'; 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, excludeIf} from 'plugin-api/beta/client/hocs'; +import {notify} from 'plugin-api/beta/client/actions/notification'; +import {connect, excludeIf} 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 + openDialog }, dispatch); const enhance = compose( connect(null, mapDispatchToProps), - withSetCommentStatus, - withSetUserStatus, excludeIf(({root: {me}, comment}) => !me || me.id === comment.user.id), ); diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js new file mode 100644 index 000000000..f1c18b3e7 --- /dev/null +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js @@ -0,0 +1,69 @@ + +import React from 'react'; +import {compose} from 'react-apollo'; +import {bindActionCreators} from 'redux'; +import {closeDialog} from '../actions'; +import {notify} from 'plugin-api/beta/client/actions/notification'; +import {connect, withSetCommentStatus, withSetUserStatus} from 'plugin-api/beta/client/hocs'; +import {getErrorMessages} from 'plugin-api/beta/client/utils'; +import BanUserDialog from '../components/BanUserDialog'; + +class BanUserDialogContainer 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 mapStateToProps = ({talkPluginModerationActions: state}) => ({ + showDialog: state.showDialog, +}); + +const mapDispatchToProps = (dispatch) => + bindActionCreators({ + notify, + closeDialog + }, dispatch); + +const enhance = compose( + connect(mapStateToProps, mapDispatchToProps), + withSetCommentStatus, + withSetUserStatus +); + +export default enhance(BanUserDialogContainer); \ No newline at end of file diff --git a/plugins/talk-plugin-moderation-actions/client/index.js b/plugins/talk-plugin-moderation-actions/client/index.js index fefcac710..c4d3a0dfc 100644 --- a/plugins/talk-plugin-moderation-actions/client/index.js +++ b/plugins/talk-plugin-moderation-actions/client/index.js @@ -1,9 +1,11 @@ import ModerationActions from './containers/ModerationActions'; +import BanUserDialog from './containers/BanUserDialog'; import translations from './translations.yml'; import reducer from './reducer'; export default { slots: { + embed: [BanUserDialog], commentInfoBar: [ModerationActions], }, reducer, diff --git a/plugins/talk-plugin-moderation-actions/client/reducer.js b/plugins/talk-plugin-moderation-actions/client/reducer.js index d8531708b..4165fbf15 100644 --- a/plugins/talk-plugin-moderation-actions/client/reducer.js +++ b/plugins/talk-plugin-moderation-actions/client/reducer.js @@ -1,7 +1,8 @@ -import {OPEN_MENU, CLOSE_MENU} from './constants'; +import {OPEN_MENU, CLOSE_MENU, OPEN_DIALOG, CLOSE_DIALOG} from './constants'; const initialState = { showMenuForComment: null, + showDialog: false }; export default function reducer(state = initialState, action) { @@ -16,6 +17,16 @@ export default function reducer(state = initialState, action) { ...state, showMenuForComment: null }; + case OPEN_DIALOG: + return { + ...state, + showDialog: true + }; + case CLOSE_DIALOG: + return { + ...state, + showDialog: false + }; default : return state; } diff --git a/plugins/talk-plugin-moderation-actions/client/translations.yml b/plugins/talk-plugin-moderation-actions/client/translations.yml index 5912f851d..4f1d58060 100644 --- a/plugins/talk-plugin-moderation-actions/client/translations.yml +++ b/plugins/talk-plugin-moderation-actions/client/translations.yml @@ -5,10 +5,18 @@ en: approved_comment: "Approved" moderation_actions: "Moderation Actions" ban_user: "Ban User" + ban_user_dialog_copy: "Are you sure you would like to ban this user?" + ban_user_dialog_cancel: "Cancel" + ban_user_dialog_yes: "Yes. Ban user" + ban_user_dialog_headline: Ban User es: talk-plugin-moderation-actions: reject_comment: "Rechazar" approve_comment: "Aprobar" approved_comment: "Aprobado" moderation_actions: "Acciones de Moderación" - ban_user: "Bannear usuario" \ No newline at end of file + ban_user: "Banear usuario" + ban_user_dialog_copy: "Está seguro de querer banear a este usuario?" + ban_user_dialog_cancel: "Cancelar" + ban_user_dialog_yes: "Si. Banear usuario" + ban_user_dialog_headline: "Ban User" \ No newline at end of file From 837a586234eba5949266b56c6cd8f08f707db81e Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 14 Sep 2017 09:26:33 -0300 Subject: [PATCH 05/13] Ban User confirmation box --- .../client/actions.js | 3 ++- .../client/components/BanUserAction.js | 4 ++-- .../client/containers/BanUserAction.js | 7 +++++-- .../client/containers/BanUserDialog.js | 14 +++++++++----- .../client/reducer.js | 9 ++++++--- 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/plugins/talk-plugin-moderation-actions/client/actions.js b/plugins/talk-plugin-moderation-actions/client/actions.js index 9811bee91..8bca6bde2 100644 --- a/plugins/talk-plugin-moderation-actions/client/actions.js +++ b/plugins/talk-plugin-moderation-actions/client/actions.js @@ -9,8 +9,9 @@ export const closeMenu = () => ({ type: CLOSE_MENU, }); -export const openDialog = () => ({ +export const openDialog = (comment) => ({ type: OPEN_DIALOG, + comment }); export const closeDialog = () => ({ diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js index 4ee28c24e..36f9b1489 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserAction.js @@ -4,10 +4,10 @@ import {t} from 'plugin-api/beta/client/services'; import {Icon} from 'plugin-api/beta/client/components/ui'; import cn from 'classnames'; -export default ({openDialog}) => ( +export default ({onBanUser}) => ( diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js index 62019cdcd..18ca2b743 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -3,13 +3,16 @@ import {compose} from 'react-apollo'; import {openDialog} from '../actions'; import {bindActionCreators} from 'redux'; import BanUserAction from '../components/BanUserAction'; -import {notify} from 'plugin-api/beta/client/actions/notification'; import {connect, excludeIf} from 'plugin-api/beta/client/hocs'; class BanUserActionContainer extends React.Component { + onBanUser = () => { + this.props.openDialog(this.props.comment); + } + render() { return ; diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js index f1c18b3e7..8302b05bf 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js @@ -2,7 +2,7 @@ import React from 'react'; import {compose} from 'react-apollo'; import {bindActionCreators} from 'redux'; -import {closeDialog} from '../actions'; +import {closeDialog, closeMenu} from '../actions'; import {notify} from 'plugin-api/beta/client/actions/notification'; import {connect, withSetCommentStatus, withSetUserStatus} from 'plugin-api/beta/client/hocs'; import {getErrorMessages} from 'plugin-api/beta/client/utils'; @@ -14,7 +14,8 @@ class BanUserDialogContainer extends React.Component { const { notify, comment, - hideMenu, + closeMenu, + closeDialog, setCommentStatus, setUserStatus } = this.props; @@ -25,7 +26,8 @@ class BanUserDialogContainer extends React.Component { status: 'BANNED' }); - hideMenu(); + closeMenu(); + closeDialog(); if (comment.status !== 'REJECTED') { await setCommentStatus({ @@ -52,12 +54,14 @@ class BanUserDialogContainer extends React.Component { const mapStateToProps = ({talkPluginModerationActions: state}) => ({ showDialog: state.showDialog, + comment: state.comment }); const mapDispatchToProps = (dispatch) => bindActionCreators({ notify, - closeDialog + closeDialog, + closeMenu }, dispatch); const enhance = compose( @@ -66,4 +70,4 @@ const enhance = compose( withSetUserStatus ); -export default enhance(BanUserDialogContainer); \ No newline at end of file +export default enhance(BanUserDialogContainer); diff --git a/plugins/talk-plugin-moderation-actions/client/reducer.js b/plugins/talk-plugin-moderation-actions/client/reducer.js index 4165fbf15..c57df5f6f 100644 --- a/plugins/talk-plugin-moderation-actions/client/reducer.js +++ b/plugins/talk-plugin-moderation-actions/client/reducer.js @@ -2,7 +2,8 @@ import {OPEN_MENU, CLOSE_MENU, OPEN_DIALOG, CLOSE_DIALOG} from './constants'; const initialState = { showMenuForComment: null, - showDialog: false + showDialog: false, + comment: null }; export default function reducer(state = initialState, action) { @@ -20,12 +21,14 @@ export default function reducer(state = initialState, action) { case OPEN_DIALOG: return { ...state, - showDialog: true + showDialog: true, + comment: action.comment }; case CLOSE_DIALOG: return { ...state, - showDialog: false + showDialog: false, + comment: null }; default : return state; From 5231c2d627c06bd7ef5ec558a0140f1136ef3301 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 14 Sep 2017 17:28:54 -0300 Subject: [PATCH 06/13] Removing perms mods --- perms/mutationReducer.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/perms/mutationReducer.js b/perms/mutationReducer.js index 6b0bd0dde..2e8718ed1 100644 --- a/perms/mutationReducer.js +++ b/perms/mutationReducer.js @@ -10,16 +10,13 @@ module.exports = (user, perm) => { case types.EDIT_COMMENT: return true; case types.ADD_COMMENT_TAG: - return check(user, ['ADMIN', 'MODERATOR', 'STAFF']); case types.REMOVE_COMMENT_TAG: return check(user, ['ADMIN', 'MODERATOR', 'STAFF']); case types.UPDATE_USER_ROLES: case types.REJECT_USERNAME: case types.SET_USER_STATUS: - return check(user, ['ADMIN', 'MODERATOR']); case types.SUSPEND_USER: case types.SET_COMMENT_STATUS: - return check(user, ['ADMIN', 'MODERATOR']); case types.UPDATE_CONFIG: case types.UPDATE_SETTINGS: case types.UPDATE_WORDLIST: From 20c41483011ca4d7de67078c0e38479a176def07 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Thu, 14 Sep 2017 17:37:47 -0300 Subject: [PATCH 07/13] Close and styling --- .../client/components/BanUserDialog.css | 21 +++++++++++++++++++ .../client/components/BanUserDialog.js | 1 + 2 files changed, 22 insertions(+) diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css index bb7d6733f..d7d31b2aa 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.css @@ -1,4 +1,25 @@ .dialog { border: none; box-shadow: 0 9px 46px 8px rgba(0, 0, 0, 0.14), 0 11px 15px -7px rgba(0, 0, 0, 0.12), 0 24px 38px 3px rgba(0, 0, 0, 0.2); +} + +.buttons { + text-align: right; + padding-top: 10px; +} + +.close { + font-size: 20px; + line-height: 14px; + top: 10px; + right: 10px; + position: absolute; + display: block; + font-weight: bold; + color: #363636; + cursor: pointer; +} + +.close:hover { + color: #6b6b6b; } \ No newline at end of file diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js index 271e8a710..0ead836af 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js @@ -5,6 +5,7 @@ import {Dialog, Button} from 'plugin-api/beta/client/components/ui'; export default ({showDialog, closeDialog, banUser}) => ( + ×

{t('talk-plugin-moderation-actions.ban_user_dialog_headline')}

{t('talk-plugin-moderation-actions.ban_user_dialog_copy')} From 8bfc7e942c00bee4294b3c825f4b5d1c5ba5236c Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 18 Sep 2017 10:04:39 -0300 Subject: [PATCH 08/13] Renaming --- .../client/actions.js | 13 +++++++------ .../client/constants.js | 4 ++-- .../client/containers/BanUserAction.js | 10 ++++++---- .../client/containers/BanUserDialog.js | 10 ++++++---- .../client/reducer.js | 3 ++- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/plugins/talk-plugin-moderation-actions/client/actions.js b/plugins/talk-plugin-moderation-actions/client/actions.js index 8bca6bde2..4f58247d4 100644 --- a/plugins/talk-plugin-moderation-actions/client/actions.js +++ b/plugins/talk-plugin-moderation-actions/client/actions.js @@ -1,4 +1,4 @@ -import {OPEN_MENU, CLOSE_MENU, OPEN_DIALOG, CLOSE_DIALOG} from './constants'; +import {OPEN_MENU, CLOSE_MENU, OPEN_BAN_DIALOG, CLOSE_BAN_DIALOG} from './constants'; export const openMenu = (id) => ({ type: OPEN_MENU, @@ -9,11 +9,12 @@ export const closeMenu = () => ({ type: CLOSE_MENU, }); -export const openDialog = (comment) => ({ - type: OPEN_DIALOG, - comment +export const openBanDialog = ({commentId, authorId}) => ({ + type: OPEN_BAN_DIALOG, + commentId, + authorId }); -export const closeDialog = () => ({ - type: CLOSE_DIALOG, +export const closeBanDialog = () => ({ + type: CLOSE_BAN_DIALOG, }); diff --git a/plugins/talk-plugin-moderation-actions/client/constants.js b/plugins/talk-plugin-moderation-actions/client/constants.js index 54e4329ff..36523affd 100644 --- a/plugins/talk-plugin-moderation-actions/client/constants.js +++ b/plugins/talk-plugin-moderation-actions/client/constants.js @@ -2,5 +2,5 @@ const prefix = 'TALK_MODERATION_ACTIONS'; export const OPEN_MENU = `${prefix}_OPEN_MENU`; export const CLOSE_MENU = `${prefix}_CLOSE_MENU`; -export const OPEN_DIALOG = `${prefix}_OPEN_DIALOG`; -export const CLOSE_DIALOG = `${prefix}_CLOSE_DIALOG`; +export const OPEN_BAN_DIALOG = `${prefix}_OPEN_BAN_DIALOG`; +export const CLOSE_BAN_DIALOG = `${prefix}_CLOSE_BAN_DIALOG`; diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js index 18ca2b743..bc68c4ed9 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -1,27 +1,29 @@ import React from 'react'; import {compose} from 'react-apollo'; -import {openDialog} from '../actions'; +import {openBanDialog} from '../actions'; import {bindActionCreators} from 'redux'; import BanUserAction from '../components/BanUserAction'; import {connect, excludeIf} from 'plugin-api/beta/client/hocs'; class BanUserActionContainer extends React.Component { onBanUser = () => { - this.props.openDialog(this.props.comment); + this.props.openBanDialog({ + commentId: this.props.comment.id, + authorId: this.props.comment.user.id + }); } render() { return ; } } const mapDispatchToProps = (dispatch) => bindActionCreators({ - openDialog + openBanDialog }, dispatch); const enhance = compose( diff --git a/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js index 8302b05bf..07ea934f4 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserDialog.js @@ -13,7 +13,8 @@ class BanUserDialogContainer extends React.Component { banUser = async () => { const { notify, - comment, + authorId, + commentId, closeMenu, closeDialog, setCommentStatus, @@ -22,7 +23,7 @@ class BanUserDialogContainer extends React.Component { try { await setUserStatus({ - userId: comment.user.id, + userId: authorId, status: 'BANNED' }); @@ -31,7 +32,7 @@ class BanUserDialogContainer extends React.Component { if (comment.status !== 'REJECTED') { await setCommentStatus({ - commentId: comment.id, + commentId: commentId, status: 'REJECTED' }); } @@ -54,7 +55,8 @@ class BanUserDialogContainer extends React.Component { const mapStateToProps = ({talkPluginModerationActions: state}) => ({ showDialog: state.showDialog, - comment: state.comment + commentId: state.commentId, + authorId: state.authorId }); const mapDispatchToProps = (dispatch) => diff --git a/plugins/talk-plugin-moderation-actions/client/reducer.js b/plugins/talk-plugin-moderation-actions/client/reducer.js index c57df5f6f..1aa3e0931 100644 --- a/plugins/talk-plugin-moderation-actions/client/reducer.js +++ b/plugins/talk-plugin-moderation-actions/client/reducer.js @@ -22,7 +22,8 @@ export default function reducer(state = initialState, action) { return { ...state, showDialog: true, - comment: action.comment + commentId: action.commentId, + authorId: action.authorId }; case CLOSE_DIALOG: return { From 100dd519eef73be456dbd4045ef7267771c17aee Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 18 Sep 2017 10:12:28 -0300 Subject: [PATCH 09/13] Replacing excludeIf --- .../client/components/ModerationActions.js | 4 ++-- .../client/containers/BanUserAction.js | 13 +++++++------ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js index cd5986d28..fa12500de 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js +++ b/plugins/talk-plugin-moderation-actions/client/components/ModerationActions.js @@ -11,7 +11,7 @@ import {Slot} from 'plugin-api/beta/client/components'; export default class ModerationActions extends React.Component { render() { - const {comment, asset, data, menuVisible, toogleMenu, hideMenu} = this.props; + const {comment, root, asset, data, menuVisible, toogleMenu, hideMenu} = this.props; return( @@ -30,7 +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 index bc68c4ed9..3452a755a 100644 --- a/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js +++ b/plugins/talk-plugin-moderation-actions/client/containers/BanUserAction.js @@ -14,10 +14,12 @@ class BanUserActionContainer extends React.Component { } render() { - return ; + const {root: {me}, comment} = this.props; + return (me.id !== comment.user.id) ? + : null; } } @@ -27,8 +29,7 @@ const mapDispatchToProps = (dispatch) => }, dispatch); const enhance = compose( - connect(null, mapDispatchToProps), - excludeIf(({root: {me}, comment}) => !me || me.id === comment.user.id), + connect(null, mapDispatchToProps) ); export default enhance(BanUserActionContainer); From 597d67f5d21f8f4809861952e044bb332c5cb216 Mon Sep 17 00:00:00 2001 From: Belen Curcio Date: Mon, 18 Sep 2017 10:28:02 -0300 Subject: [PATCH 10/13] Actions renamed --- .../client/actions.js | 5 ++-- .../client/components/BanUserDialog.js | 8 +++---- .../client/containers/BanUserAction.js | 1 + .../client/containers/BanUserDialog.js | 17 +++++++------- .../client/reducer.js | 23 +++++++++++-------- 5 files changed, 31 insertions(+), 23 deletions(-) diff --git a/plugins/talk-plugin-moderation-actions/client/actions.js b/plugins/talk-plugin-moderation-actions/client/actions.js index 4f58247d4..6e87f94ca 100644 --- a/plugins/talk-plugin-moderation-actions/client/actions.js +++ b/plugins/talk-plugin-moderation-actions/client/actions.js @@ -9,10 +9,11 @@ export const closeMenu = () => ({ type: CLOSE_MENU, }); -export const openBanDialog = ({commentId, authorId}) => ({ +export const openBanDialog = ({commentId, authorId, commentStatus}) => ({ type: OPEN_BAN_DIALOG, commentId, - authorId + authorId, + commentStatus }); export const closeBanDialog = () => ({ diff --git a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js index 0ead836af..3057bd7b2 100644 --- a/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js +++ b/plugins/talk-plugin-moderation-actions/client/components/BanUserDialog.js @@ -3,15 +3,15 @@ import styles from './BanUserDialog.css'; import {t} from 'plugin-api/beta/client/services'; import {Dialog, Button} from 'plugin-api/beta/client/components/ui'; -export default ({showDialog, closeDialog, banUser}) => ( -

- × +export default ({showBanDialog, closeBanDialog, banUser}) => ( + + ×

{t('talk-plugin-moderation-actions.ban_user_dialog_headline')}

{t('talk-plugin-moderation-actions.ban_user_dialog_copy')}

-