diff options
author | Joram Wilander <jwawilander@gmail.com> | 2017-03-02 17:48:56 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-03-02 17:48:56 -0500 |
commit | 3a91d4e5e419a43ff19a0736ce697f8d611d36e3 (patch) | |
tree | e57ad85d49f8768a575f27c89d338a4ccaeda521 /webapp/components/navbar.jsx | |
parent | 8c5cee9521656bcffb371aad9dae4bea8fc70e29 (diff) | |
download | chat-3a91d4e5e419a43ff19a0736ce697f8d611d36e3.tar.gz chat-3a91d4e5e419a43ff19a0736ce697f8d611d36e3.tar.bz2 chat-3a91d4e5e419a43ff19a0736ce697f8d611d36e3.zip |
PLT-3077 Add group messaging (#5489)
* Implement server changes for group messaging
* Majority of client-side implementation
* Some server updates
* Added new React multiselect component
* Fix style issues
* Add custom renderer for options
* Fix model test
* Update ENTER functionality for multiselect control
* Remove buttons from multiselect UI control
* Updating group messaging UI (#5524)
* Move filter controls up a component level
* Scroll with arrow keys
* Updating mobile layout for multiselect (#5534)
* Fix race condition when backspacing quickly
* Hidden or new GMs show up for regular messages
* Add overriding of number remaining text
* Add UI filtering for team if config setting set
* Add icon to channel switcher and class prop to status icon
* Minor updates per feedback
* Improving group messaging UI (#5563)
* UX changes per feedback
* Update email for group messages
* UI fixes for group messaging (#5587)
* Fix missing localization string
* Add maximum users message when adding members to GM
* Fix input clearing on Android
* Updating group messaging UI (#5603)
* Updating UI for group messaging (#5604)
Diffstat (limited to 'webapp/components/navbar.jsx')
-rw-r--r-- | webapp/components/navbar.jsx | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/webapp/components/navbar.jsx b/webapp/components/navbar.jsx index a805a9de4..dee32416b 100644 --- a/webapp/components/navbar.jsx +++ b/webapp/components/navbar.jsx @@ -61,6 +61,8 @@ export default class Navbar extends React.Component { this.showChannelSwitchModal = this.showChannelSwitchModal.bind(this); this.hideChannelSwitchModal = this.hideChannelSwitchModal.bind(this); + this.openDirectMessageModal = this.openDirectMessageModal.bind(this); + const state = this.getStateFromStores(); state.showEditChannelPurposeModal = false; state.showEditChannelHeaderModal = false; @@ -206,6 +208,14 @@ export default class Navbar extends React.Component { }); } + openDirectMessageModal() { + AppDispatcher.handleViewAction({ + type: ActionTypes.TOGGLE_DM_MODAL, + value: true, + startingUsers: UserStore.getProfileListInChannel(this.state.channel.id, true) + }); + } + toggleFavorite = (e) => { e.preventDefault(); @@ -216,7 +226,7 @@ export default class Navbar extends React.Component { } }; - createDropdown(channel, channelTitle, isAdmin, isSystemAdmin, isChannelAdmin, isDirect, popoverContent) { + createDropdown(channel, channelTitle, isAdmin, isSystemAdmin, isChannelAdmin, isDirect, isGroup, popoverContent) { if (channel) { let channelTerm = ( <FormattedMessage @@ -258,6 +268,57 @@ export default class Navbar extends React.Component { </a> </li> ); + } else if (isGroup) { + setChannelHeaderOption = ( + <li role='presentation'> + <a + role='menuitem' + href='#' + onClick={this.showEditChannelHeaderModal} + > + <FormattedMessage + id='channel_header.channelHeader' + defaultMessage='Set Channel Header...' + /> + </a> + </li> + ); + + notificationPreferenceOption = ( + <li role='presentation'> + <ToggleModalButton + role='menuitem' + dialogType={ChannelNotificationsModal} + dialogProps={{ + channel, + channelMember: this.state.member, + currentUser: this.state.currentUser + }} + > + <FormattedMessage + id='navbar.preferences' + defaultMessage='Notification Preferences' + /> + </ToggleModalButton> + </li> + ); + + addMembersOption = ( + <li + role='presentation' + > + <a + role='menuitem' + href='#' + onClick={this.openDirectMessageModal} + > + <FormattedMessage + id='navbar.addMembers' + defaultMessage='Add Members' + /> + </a> + </li> + ); } else { viewInfoOption = ( <li role='presentation'> @@ -621,6 +682,7 @@ export default class Navbar extends React.Component { var isSystemAdmin = false; var isChannelAdmin = false; var isDirect = false; + let isGroup = false; var editChannelHeaderModal = null; var editChannelPurposeModal = null; @@ -660,6 +722,9 @@ export default class Navbar extends React.Component { isDirect = true; const teammateId = Utils.getUserIdFromChannelName(channel); channelTitle = Utils.displayUsername(teammateId); + } else if (channel.type === Constants.GM_CHANNEL) { + isGroup = true; + channelTitle = ChannelUtils.buildGroupChannelName(channel.id); } if (channel.header.length === 0) { @@ -757,7 +822,7 @@ export default class Navbar extends React.Component { </button> ); - var channelMenuDropdown = this.createDropdown(channel, channelTitle, isAdmin, isSystemAdmin, isChannelAdmin, isDirect, popoverContent); + var channelMenuDropdown = this.createDropdown(channel, channelTitle, isAdmin, isSystemAdmin, isChannelAdmin, isDirect, isGroup, popoverContent); return ( <div> |