summaryrefslogtreecommitdiffstats
path: root/webapp/components/channel_members_dropdown.jsx
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-04-28 13:16:03 -0400
committerChristopher Speller <crspeller@gmail.com>2017-04-28 13:16:03 -0400
commit96906482cecb0df21c8e1a40a2ba00c13c0182a7 (patch)
tree3bb35ca9fe2a3beb212b5350116f7bb488d7a119 /webapp/components/channel_members_dropdown.jsx
parent302ec17beed9128101ef61d69b45d3ee29e16f1e (diff)
downloadchat-96906482cecb0df21c8e1a40a2ba00c13c0182a7.tar.gz
chat-96906482cecb0df21c8e1a40a2ba00c13c0182a7.tar.bz2
chat-96906482cecb0df21c8e1a40a2ba00c13c0182a7.zip
PLT-6214 Move channel store and actions over to redux (#6235)
* Move channel store and actions over to redux * Fix style errors * Fix unit test * Various fixes * More fixes * Revert config changes
Diffstat (limited to 'webapp/components/channel_members_dropdown.jsx')
-rw-r--r--webapp/components/channel_members_dropdown.jsx264
1 files changed, 0 insertions, 264 deletions
diff --git a/webapp/components/channel_members_dropdown.jsx b/webapp/components/channel_members_dropdown.jsx
deleted file mode 100644
index e44108f3c..000000000
--- a/webapp/components/channel_members_dropdown.jsx
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
-// See License.txt for license information.
-
-import ChannelStore from 'stores/channel_store.jsx';
-import TeamStore from 'stores/team_store.jsx';
-import UserStore from 'stores/user_store.jsx';
-
-import {removeUserFromChannel, makeUserChannelAdmin, makeUserChannelMember} from 'actions/channel_actions.jsx';
-
-import * as AsyncClient from 'utils/async_client.jsx';
-import * as Utils from 'utils/utils.jsx';
-import {canManageMembers} from 'utils/channel_utils.jsx';
-import {Constants} from 'utils/constants.jsx';
-
-import React from 'react';
-import {FormattedMessage} from 'react-intl';
-
-export default class ChannelMembersDropdown extends React.Component {
- constructor(props) {
- super(props);
-
- this.handleRemoveFromChannel = this.handleRemoveFromChannel.bind(this);
- this.handleMakeChannelMember = this.handleMakeChannelMember.bind(this);
- this.handleMakeChannelAdmin = this.handleMakeChannelAdmin.bind(this);
-
- this.state = {
- serverError: null,
- user: null,
- role: null
- };
- }
-
- handleRemoveFromChannel() {
- removeUserFromChannel(
- this.props.channel.id,
- this.props.user.id,
- () => {
- AsyncClient.getChannelStats(this.props.channel.id);
- },
- (err) => {
- this.setState({serverError: err.message});
- }
- );
- }
-
- handleMakeChannelMember() {
- makeUserChannelMember(
- this.props.channel.id,
- this.props.user.id,
- () => {
- AsyncClient.getChannelStats(this.props.channel.id);
- },
- (err) => {
- this.setState({serverError: err.message});
- }
- );
- }
-
- handleMakeChannelAdmin() {
- makeUserChannelAdmin(
- this.props.channel.id,
- this.props.user.id,
- () => {
- AsyncClient.getChannelStats(this.props.channel.id);
- },
- (err) => {
- this.setState({serverError: err.message});
- }
- );
- }
-
- // Checks if the user this menu is for is a channel admin or not.
- isChannelAdmin() {
- if (Utils.isChannelAdmin(this.props.channelMember.roles)) {
- return true;
- }
-
- return false;
- }
-
- // Checks if the current user has the power to change the roles of this member.
- canChangeMemberRoles() {
- if (UserStore.isSystemAdminForCurrentUser()) {
- return true;
- } else if (TeamStore.isTeamAdminForCurrentTeam()) {
- return true;
- } else if (ChannelStore.isChannelAdminForCurrentChannel()) {
- return true;
- }
-
- return false;
- }
-
- // Checks if the current user has the power to remove this member from the channel.
- canRemoveMember() {
- return canManageMembers(this.props.channel, UserStore.isSystemAdminForCurrentUser(), TeamStore.isTeamAdminForCurrentTeam(), ChannelStore.isChannelAdminForCurrentChannel());
- }
-
- render() {
- let serverError = null;
- if (this.state.serverError) {
- serverError = (
- <div className='has-error'>
- <label className='has-error control-label'>{this.state.serverError}</label>
- </div>
- );
- }
-
- if (this.props.user.id === UserStore.getCurrentId()) {
- return null;
- }
-
- if (this.canChangeMemberRoles()) {
- let role = (
- <FormattedMessage
- id='channel_members_dropdown.channel_member'
- defaultMessage='Channel Member'
- />
- );
-
- if (this.isChannelAdmin()) {
- role = (
- <FormattedMessage
- id='channel_members_dropdown.channel_admin'
- defaultMessage='Channel Admin'
- />
- );
- }
-
- let removeFromChannel = null;
- if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
- removeFromChannel = (
- <li role='presentation'>
- <a
- id='removeFromChannel'
- role='menuitem'
- href='#'
- onClick={this.handleRemoveFromChannel}
- >
- <FormattedMessage
- id='channel_members_dropdown.remove_from_channel'
- defaultMessage='Remove From Channel'
- />
- </a>
- </li>
- );
- }
-
- let makeChannelMember = null;
- if (this.isChannelAdmin()) {
- makeChannelMember = (
- <li role='presentation'>
- <a
- id='makeChannelMember'
- role='menuitem'
- href='#'
- onClick={this.handleMakeChannelMember}
- >
- <FormattedMessage
- id='channel_members_dropdown.make_channel_member'
- defaultMessage='Make Channel Member'
- />
- </a>
- </li>
- );
- }
-
- let makeChannelAdmin = null;
- if (!this.isChannelAdmin()) {
- makeChannelAdmin = (
- <li role='presentation'>
- <a
- id='makeChannelAdmin'
- role='menuitem'
- href='#'
- onClick={this.handleMakeChannelAdmin}
- >
- <FormattedMessage
- id='channel_members_dropdown.make_channel_admin'
- defaultMessage='Make Channel Admin'
- />
- </a>
- </li>
- );
- }
-
- return (
- <div className='dropdown member-drop'>
- <a
- id='channelMemberDropdown'
- href='#'
- className='dropdown-toggle theme'
- type='button'
- data-toggle='dropdown'
- aria-expanded='true'
- >
- <span>{role} </span>
- <span className='fa fa-chevron-down'/>
- </a>
- <ul
- className='dropdown-menu member-menu'
- role='menu'
- >
- {makeChannelMember}
- {makeChannelAdmin}
- {removeFromChannel}
- </ul>
- {serverError}
- </div>
- );
- } else if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
- return (
- <button
- id='removeMember'
- type='button'
- className='btn btn-danger btn-message'
- onClick={this.handleRemoveFromChannel}
- >
- <FormattedMessage
- id='channel_members_dropdown.remove_member'
- defaultMessage='Remove Member'
- />
- </button>
- );
- } else if (this.isChannelAdmin()) {
- if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
- return (
- <div/>
- );
- }
-
- return (
- <div>
- <FormattedMessage
- id='channel_members_dropdown.channel_admin'
- defaultMessage='Channel Admin'
- />
- </div>
- );
- }
-
- if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
- return (
- <div/>
- );
- }
-
- return (
- <div>
- <FormattedMessage
- id='channel_members_dropdown.channel_member'
- defaultMessage='Channel Member'
- />
- </div>
- );
- }
-}
-
-ChannelMembersDropdown.propTypes = {
- channel: React.PropTypes.object.isRequired,
- user: React.PropTypes.object.isRequired,
- teamMember: React.PropTypes.object.isRequired,
- channelMember: React.PropTypes.object.isRequired
-};