From 5119e96366060cceea8111bda26c237eb7a6758f Mon Sep 17 00:00:00 2001
From: Florian Orben <florian.orben@gmail.com>
Date: Thu, 29 Oct 2015 00:35:54 +0100
Subject: enable ctrl+enter send for edit msg modal

---
 web/react/components/edit_post_modal.jsx | 29 +++++++++++++++++++++++++----
 1 file changed, 25 insertions(+), 4 deletions(-)

(limited to 'web/react/components/edit_post_modal.jsx')

diff --git a/web/react/components/edit_post_modal.jsx b/web/react/components/edit_post_modal.jsx
index e5bede026..d8d7bc423 100644
--- a/web/react/components/edit_post_modal.jsx
+++ b/web/react/components/edit_post_modal.jsx
@@ -6,6 +6,10 @@ var AsyncClient = require('../utils/async_client.jsx');
 var Textbox = require('./textbox.jsx');
 var BrowserStore = require('../stores/browser_store.jsx');
 var PostStore = require('../stores/post_store.jsx');
+var PreferenceStore = require('../stores/preference_store.jsx');
+
+var Constants = require('../utils/constants.jsx');
+var KeyCodes = Constants.KeyCodes;
 
 export default class EditPostModal extends React.Component {
     constructor() {
@@ -16,6 +20,8 @@ export default class EditPostModal extends React.Component {
         this.handleEditKeyPress = this.handleEditKeyPress.bind(this);
         this.handleUserInput = this.handleUserInput.bind(this);
         this.handleEditPostEvent = this.handleEditPostEvent.bind(this);
+        this.handleKeyDown = this.handleKeyDown.bind(this);
+        this.onPreferenceChange = this.onPreferenceChange.bind(this);
 
         this.state = {editText: '', title: '', post_id: '', channel_id: '', comments: 0, refocusId: ''};
     }
@@ -51,10 +57,12 @@ export default class EditPostModal extends React.Component {
         this.setState({editText: editMessage});
     }
     handleEditKeyPress(e) {
-        if (e.which === 13 && !e.shiftKey && !e.altKey) {
-            e.preventDefault();
-            ReactDOM.findDOMNode(this.refs.editbox).blur();
-            this.handleEdit(e);
+        if (this.state.ctrlSend === 'true' && e.ctrlKey || this.state.ctrlSend === 'false') {
+            if (e.which === KeyCodes.ENTER && !e.shiftKey && !e.altKey) {
+                e.preventDefault();
+                ReactDOM.findDOMNode(this.refs.editbox).blur();
+                this.handleEdit(e);
+            }
         }
     }
     handleUserInput(e) {
@@ -72,6 +80,16 @@ export default class EditPostModal extends React.Component {
 
         $(ReactDOM.findDOMNode(this.refs.modal)).modal('show');
     }
+    handleKeyDown(e) {
+        if (this.state.ctrlSend === 'true' && e.keyCode === KeyCodes.ENTER && e.ctrlKey === true) {
+            this.handleEdit(e);
+        }
+    }
+    onPreferenceChange() {
+        this.setState({
+            ctrlSend: PreferenceStore.getPreference(Constants.Preferences.CATEGORY_ADVANCED_SETTINGS, 'send_on_ctrl_enter', {value: 'false'}).value
+        });
+    }
     componentDidMount() {
         var self = this;
 
@@ -101,9 +119,11 @@ export default class EditPostModal extends React.Component {
         });
 
         PostStore.addEditPostListener(this.handleEditPostEvent);
+        PreferenceStore.addChangeListener(this.onPreferenceChange);
     }
     componentWillUnmount() {
         PostStore.removeEditPostListener(this.handleEditPostEvent);
+        PreferenceStore.removeEditPostListener(this.onPreferenceChange);
     }
     render() {
         var error = (<div className='form-group'><br /></div>);
@@ -138,6 +158,7 @@ export default class EditPostModal extends React.Component {
                             <Textbox
                                 onUserInput={this.handleEditInput}
                                 onKeyPress={this.handleEditKeyPress}
+                                onKeyDown={this.handleKeyDown}
                                 messageText={this.state.editText}
                                 createMessage='Edit the post...'
                                 id='edit_textbox'
-- 
cgit v1.2.3-1-g7c22

