summaryrefslogtreecommitdiffstats
path: root/webapp/components/channel_header.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/components/channel_header.jsx')
-rw-r--r--webapp/components/channel_header.jsx22
1 files changed, 16 insertions, 6 deletions
diff --git a/webapp/components/channel_header.jsx b/webapp/components/channel_header.jsx
index 992244915..91060f583 100644
--- a/webapp/components/channel_header.jsx
+++ b/webapp/components/channel_header.jsx
@@ -47,6 +47,7 @@ export default class ChannelHeader extends React.Component {
this.searchMentions = this.searchMentions.bind(this);
this.showRenameChannelModal = this.showRenameChannelModal.bind(this);
this.hideRenameChannelModal = this.hideRenameChannelModal.bind(this);
+ this.openRecentMentions = this.openRecentMentions.bind(this);
const state = this.getStateFromStores();
state.showEditChannelPurposeModal = false;
@@ -82,6 +83,7 @@ export default class ChannelHeader extends React.Component {
PreferenceStore.addChangeListener(this.onListenerChange);
UserStore.addChangeListener(this.onListenerChange);
$('.sidebar--left .dropdown-menu').perfectScrollbar();
+ document.addEventListener('keydown', this.openRecentMentions);
}
componentWillUnmount() {
ChannelStore.removeChangeListener(this.onListenerChange);
@@ -89,6 +91,7 @@ export default class ChannelHeader extends React.Component {
SearchStore.removeSearchChangeListener(this.onListenerChange);
PreferenceStore.removeChangeListener(this.onListenerChange);
UserStore.removeChangeListener(this.onListenerChange);
+ document.removeEventListener('keydown', this.openRecentMentions);
}
onListenerChange() {
const newState = this.getStateFromStores();
@@ -139,6 +142,12 @@ export default class ChannelHeader extends React.Component {
is_mention_search: true
});
}
+ openRecentMentions(e) {
+ if ((e.ctrlKey || e.metaKey) && e.shiftKey && e.keyCode === Constants.KeyCodes.M) {
+ e.preventDefault();
+ this.searchMentions(e);
+ }
+ }
showRenameChannelModal(e) {
e.preventDefault();
@@ -409,7 +418,8 @@ export default class ChannelHeader extends React.Component {
}
}
- if (!ChannelStore.isDefault(channel)) {
+ const canLeave = channel.type === Constants.PRIVATE_CHANNEL ? this.state.userCount > 1 : true;
+ if (!ChannelStore.isDefault(channel) && canLeave) {
dropdownContents.push(
<li
key='leave_channel'
@@ -469,11 +479,11 @@ export default class ChannelHeader extends React.Component {
overlay={popoverContent}
ref='headerOverlay'
>
- <div
- onClick={TextFormatting.handleClick}
- className='description'
- dangerouslySetInnerHTML={{__html: TextFormatting.formatText(channel.header, {singleline: true, mentionHighlight: false})}}
- />
+ <div
+ onClick={TextFormatting.handleClick}
+ className='description'
+ dangerouslySetInnerHTML={{__html: TextFormatting.formatText(channel.header, {singleline: true, mentionHighlight: false})}}
+ />
</OverlayTrigger>
</div>
</th>