summaryrefslogtreecommitdiffstats
path: root/webapp/components
diff options
context:
space:
mode:
authorDavid Lu <david.lu@hotmail.com>2016-06-04 23:23:07 -0700
committerenahum <nahumhbl@gmail.com>2016-06-05 03:23:07 -0300
commitcc4d23e27669ce85285b514a0606b4ea8c27d6e7 (patch)
treeaf28627ab19dfcb1044f4d8e486459d9d94b6f0a /webapp/components
parentcb868eb42bdd6a5a30fe111faa48875a4c13f09c (diff)
downloadchat-cc4d23e27669ce85285b514a0606b4ea8c27d6e7.tar.gz
chat-cc4d23e27669ce85285b514a0606b4ea8c27d6e7.tar.bz2
chat-cc4d23e27669ce85285b514a0606b4ea8c27d6e7.zip
added ctrlSend checking (#3196)
Diffstat (limited to 'webapp/components')
-rw-r--r--webapp/components/create_post.jsx2
-rw-r--r--webapp/components/edit_channel_header_modal.jsx29
-rw-r--r--webapp/components/edit_channel_purpose_modal.jsx35
-rw-r--r--webapp/components/edit_post_modal.jsx4
4 files changed, 63 insertions, 7 deletions
diff --git a/webapp/components/create_post.jsx b/webapp/components/create_post.jsx
index 5904d2f29..4c14b03de 100644
--- a/webapp/components/create_post.jsx
+++ b/webapp/components/create_post.jsx
@@ -84,7 +84,7 @@ class CreatePost extends React.Component {
previews: draft.previews,
submitting: false,
initialText: draft.messageText,
- ctrlSend: false,
+ ctrlSend: PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter'),
centerTextbox: PreferenceStore.get(Preferences.CATEGORY_DISPLAY_SETTINGS, Preferences.CHANNEL_DISPLAY_MODE, Preferences.CHANNEL_DISPLAY_MODE_DEFAULT) === Preferences.CHANNEL_DISPLAY_MODE_CENTERED,
showTutorialTip: false,
showPostDeletedModal: false
diff --git a/webapp/components/edit_channel_header_modal.jsx b/webapp/components/edit_channel_header_modal.jsx
index 6a7cccebb..ea411357d 100644
--- a/webapp/components/edit_channel_header_modal.jsx
+++ b/webapp/components/edit_channel_header_modal.jsx
@@ -6,6 +6,7 @@ import AppDispatcher from '../dispatcher/app_dispatcher.jsx';
import Client from 'utils/web_client.jsx';
import Constants from 'utils/constants.jsx';
import * as Utils from 'utils/utils.jsx';
+import PreferenceStore from 'stores/preference_store.jsx';
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
@@ -26,9 +27,12 @@ class EditChannelHeaderModal extends React.Component {
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
-
+ this.handleKeyDown = this.handleKeyDown.bind(this);
this.onShow = this.onShow.bind(this);
this.onHide = this.onHide.bind(this);
+ this.onPreferenceChange = this.onPreferenceChange.bind(this);
+
+ this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
this.state = {
header: props.channel.header,
@@ -40,10 +44,16 @@ class EditChannelHeaderModal extends React.Component {
if (this.props.show) {
this.onShow();
}
+
+ PreferenceStore.addChangeListener(this.onPreferenceChange);
+ }
+
+ componentWillUnmount() {
+ PreferenceStore.removeChangeListener(this.onPreferenceChange);
}
componentWillReceiveProps(nextProps) {
- if (this.props.channel.header !== nextProps.channel.header) {
+ if (this.props !== nextProps) {
this.setState({
header: nextProps.channel.header
});
@@ -62,6 +72,10 @@ class EditChannelHeaderModal extends React.Component {
});
}
+ onPreferenceChange() {
+ this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
+ }
+
handleSubmit() {
Client.updateChannelHeader(
this.props.channel.id,
@@ -99,6 +113,16 @@ class EditChannelHeaderModal extends React.Component {
this.props.onHide();
}
+ handleKeyDown(e) {
+ if (this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && e.ctrlKey) {
+ e.preventDefault();
+ this.handleSubmit(e);
+ } else if (!this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && !e.shiftKey && !e.altKey) {
+ e.preventDefault();
+ this.handleSubmit(e);
+ }
+ }
+
render() {
var serverError = null;
if (this.state.serverError) {
@@ -136,6 +160,7 @@ class EditChannelHeaderModal extends React.Component {
maxLength='1024'
value={this.state.header}
onChange={this.handleChange}
+ onKeyDown={this.handleKeyDown}
/>
{serverError}
</Modal.Body>
diff --git a/webapp/components/edit_channel_purpose_modal.jsx b/webapp/components/edit_channel_purpose_modal.jsx
index a4779d022..0d5fb90ac 100644
--- a/webapp/components/edit_channel_purpose_modal.jsx
+++ b/webapp/components/edit_channel_purpose_modal.jsx
@@ -6,9 +6,8 @@ import ReactDOM from 'react-dom';
import * as AsyncClient from 'utils/async_client.jsx';
import Client from 'utils/web_client.jsx';
import Constants from 'utils/constants.jsx';
-
import {intlShape, injectIntl, defineMessages, FormattedMessage} from 'react-intl';
-
+import PreferenceStore from 'stores/preference_store.jsx';
import {Modal} from 'react-bootstrap';
const holders = defineMessages({
@@ -26,8 +25,22 @@ export default class EditChannelPurposeModal extends React.Component {
this.handleHide = this.handleHide.bind(this);
this.handleSave = this.handleSave.bind(this);
+ this.handleKeyDown = this.handleKeyDown.bind(this);
+ this.onPreferenceChange = this.onPreferenceChange.bind(this);
+
+ this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
+
+ this.state = {
+ serverError: ''
+ };
+ }
+
+ componentDidMount() {
+ PreferenceStore.addChangeListener(this.onPreferenceChange);
+ }
- this.state = {serverError: ''};
+ componentWillUnmount() {
+ PreferenceStore.removeChangeListener(this.onPreferenceChange);
}
componentDidUpdate() {
@@ -44,11 +57,24 @@ export default class EditChannelPurposeModal extends React.Component {
}
}
+ onPreferenceChange() {
+ this.ctrlSend = PreferenceStore.getBool(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter');
+ }
+
+ handleKeyDown(e) {
+ if (this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && e.ctrlKey) {
+ e.preventDefault();
+ this.handleSave(e);
+ } else if (!this.ctrlSend && e.keyCode === Constants.KeyCodes.ENTER && !e.shiftKey && !e.altKey) {
+ e.preventDefault();
+ this.handleSave(e);
+ }
+ }
+
handleSave() {
if (!this.props.channel) {
return;
}
-
Client.updateChannelPurpose(
this.props.channel.id,
ReactDOM.findDOMNode(this.refs.purpose).value.trim(),
@@ -145,6 +171,7 @@ export default class EditChannelPurposeModal extends React.Component {
rows='6'
maxLength='128'
defaultValue={this.props.channel.purpose}
+ onKeyDown={this.handleKeyDown}
/>
{serverError}
</Modal.Body>
diff --git a/webapp/components/edit_post_modal.jsx b/webapp/components/edit_post_modal.jsx
index 92b16f925..ac82cf036 100644
--- a/webapp/components/edit_post_modal.jsx
+++ b/webapp/components/edit_post_modal.jsx
@@ -82,6 +82,10 @@ class EditPostModal extends React.Component {
e.preventDefault();
ReactDOM.findDOMNode(this.refs.editbox).blur();
this.handleEdit(e);
+ } else if (this.state.ctrlSend && e.ctrlKey && e.which === KeyCodes.ENTER) {
+ e.preventDefault();
+ ReactDOM.findDOMNode(this.refs.editbox).blur();
+ this.handleSubmit(e);
}
}
handleEditPostEvent(options) {