summaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
authorRyan Wang <R-Wang97@users.noreply.github.com>2017-04-20 11:25:03 -0400
committerGeorge Goldberg <george@gberg.me>2017-04-20 16:25:03 +0100
commitff8b91027fd531880ea951bee1a0b63e506b0ae8 (patch)
tree124123e3ac17302fc1a395ede7b31c03f227f548 /webapp
parentf758f9ff3a617dd5939e1e7851fdbe10d03cd5a8 (diff)
downloadchat-ff8b91027fd531880ea951bee1a0b63e506b0ae8.tar.gz
chat-ff8b91027fd531880ea951bee1a0b63e506b0ae8.tar.bz2
chat-ff8b91027fd531880ea951bee1a0b63e506b0ae8.zip
Add modified view members modal to Town Square (#5695)
Diffstat (limited to 'webapp')
-rw-r--r--webapp/components/channel_header.jsx23
-rw-r--r--webapp/components/channel_members_dropdown.jsx17
-rw-r--r--webapp/components/channel_members_modal.jsx3
-rw-r--r--webapp/components/navbar.jsx20
-rw-r--r--webapp/components/popover_list_members.jsx21
5 files changed, 67 insertions, 17 deletions
diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx
index c51dce013..5ebe1b745 100644
--- a/webapp/components/channel_header.jsx
+++ b/webapp/components/channel_header.jsx
@@ -462,6 +462,27 @@ export default class ChannelHeader extends React.Component {
</li>
);
+ if (ChannelStore.isDefault(channel)) {
+ dropdownContents.push(
+ <li
+ id='channelManageMembers'
+ key='manage_members'
+ role='presentation'
+ >
+ <a
+ role='menuitem'
+ href='#'
+ onClick={() => this.setState({showMembersModal: true})}
+ >
+ <FormattedMessage
+ id='channel_header.viewMembers'
+ defaultMessage='View Members'
+ />
+ </a>
+ </li>
+ );
+ }
+
dropdownContents.push(
<li
id='channelNotificationPreferences'
@@ -723,7 +744,7 @@ export default class ChannelHeader extends React.Component {
);
let channelMembersModal;
- if (this.state.showMembersModal && channel.name !== Constants.DEFAULT_CHANNEL) {
+ if (this.state.showMembersModal) {
channelMembersModal = (
<ChannelMembersModal
onModalDismissed={() => this.setState({showMembersModal: false})}
diff --git a/webapp/components/channel_members_dropdown.jsx b/webapp/components/channel_members_dropdown.jsx
index decf97044..e44108f3c 100644
--- a/webapp/components/channel_members_dropdown.jsx
+++ b/webapp/components/channel_members_dropdown.jsx
@@ -10,6 +10,7 @@ import {removeUserFromChannel, makeUserChannelAdmin, makeUserChannelMember} from
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';
@@ -127,7 +128,7 @@ export default class ChannelMembersDropdown extends React.Component {
}
let removeFromChannel = null;
- if (this.canRemoveMember()) {
+ if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
removeFromChannel = (
<li role='presentation'>
<a
@@ -207,7 +208,7 @@ export default class ChannelMembersDropdown extends React.Component {
{serverError}
</div>
);
- } else if (this.canRemoveMember()) {
+ } else if (this.canRemoveMember() && this.props.channel.name !== Constants.DEFAULT_CHANNEL) {
return (
<button
id='removeMember'
@@ -222,6 +223,12 @@ export default class ChannelMembersDropdown extends React.Component {
</button>
);
} else if (this.isChannelAdmin()) {
+ if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
+ return (
+ <div/>
+ );
+ }
+
return (
<div>
<FormattedMessage
@@ -232,6 +239,12 @@ export default class ChannelMembersDropdown extends React.Component {
);
}
+ if (this.props.channel.name === Constants.DEFAULT_CHANNEL) {
+ return (
+ <div/>
+ );
+ }
+
return (
<div>
<FormattedMessage
diff --git a/webapp/components/channel_members_modal.jsx b/webapp/components/channel_members_modal.jsx
index de3a4a5e7..dab51a1bd 100644
--- a/webapp/components/channel_members_modal.jsx
+++ b/webapp/components/channel_members_modal.jsx
@@ -8,6 +8,7 @@ import UserStore from 'stores/user_store.jsx';
import ChannelStore from 'stores/channel_store.jsx';
import {canManageMembers} from 'utils/channel_utils.jsx';
+import {Constants} from 'utils/constants.jsx';
import React from 'react';
import {Modal} from 'react-bootstrap';
@@ -35,7 +36,7 @@ export default class ChannelMembersModal extends React.Component {
const isChannelAdmin = ChannelStore.isChannelAdminForCurrentChannel();
let addMembersButton = null;
- if (canManageMembers(this.state.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin)) {
+ if (canManageMembers(this.state.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin) && this.state.channel.name !== Constants.DEFAULT_CHANNEL) {
addMembersButton = (
<a
id='showInviteModal'
diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx
index db7dc71df..b9a096185 100644
--- a/webapp/components/navbar.jsx
+++ b/webapp/components/navbar.jsx
@@ -349,7 +349,25 @@ export default class Navbar extends React.Component {
</li>
);
- if (!ChannelStore.isDefault(channel)) {
+ if (ChannelStore.isDefault(channel)) {
+ manageMembersOption = (
+ <li
+ key='view_members'
+ role='presentation'
+ >
+ <a
+ role='menuitem'
+ href='#'
+ onClick={this.showMembersModal}
+ >
+ <FormattedMessage
+ id='channel_header.viewMembers'
+ defaultMessage='View Members'
+ />
+ </a>
+ </li>
+ );
+ } else {
addMembersOption = (
<li role='presentation'>
<ToggleModalButton
diff --git a/webapp/components/popover_list_members.jsx b/webapp/components/popover_list_members.jsx
index 268a87a6b..3af53cb70 100644
--- a/webapp/components/popover_list_members.jsx
+++ b/webapp/components/popover_list_members.jsx
@@ -70,17 +70,10 @@ export default class PopoverListMembers extends React.Component {
showMembersModal(e) {
e.preventDefault();
- if (ChannelStore.isDefault(this.props.channel)) {
- this.setState({
- showPopover: false,
- showTeamMembersModal: true
- });
- } else {
- this.setState({
- showPopover: false,
- showChannelMembersModal: true
- });
- }
+ this.setState({
+ showPopover: false,
+ showChannelMembersModal: true
+ });
}
render() {
@@ -158,7 +151,11 @@ export default class PopoverListMembers extends React.Component {
defaultMessage='Manage Members'
/>
);
- if (!canManageMembers(this.props.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin) && !ChannelStore.isDefault(this.props.channel)) {
+
+ const manageMembers = canManageMembers(this.props.channel, isSystemAdmin, isTeamAdmin, isChannelAdmin);
+ const isDefaultChannel = ChannelStore.isDefault(this.props.channel);
+
+ if ((manageMembers === false && isDefaultChannel === false) || isDefaultChannel) {
membersName = (
<FormattedMessage
id='members_popover.viewMembers'