summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorReed Garmsen <rgarmsen2295@gmail.com>2015-08-26 09:38:06 -0700
committerReed Garmsen <rgarmsen2295@gmail.com>2015-08-26 16:53:19 -0700
commita56603d666a4f3e22a92a0271eef56ab613ce848 (patch)
tree668afe7ba9fd1cd2f1a71f4da76247eb77f9c483 /web
parent656a88efdd2606ce8449097e740535f41aee9d64 (diff)
downloadchat-a56603d666a4f3e22a92a0271eef56ab613ce848.tar.gz
chat-a56603d666a4f3e22a92a0271eef56ab613ce848.tar.bz2
chat-a56603d666a4f3e22a92a0271eef56ab613ce848.zip
Moved duplicate code into functions and added better handling of large paste text dumps
Diffstat (limited to 'web')
-rw-r--r--web/react/components/create_comment.jsx13
-rw-r--r--web/react/components/create_post.jsx14
-rw-r--r--web/react/components/edit_post_modal.jsx14
-rw-r--r--web/react/utils/utils.jsx24
4 files changed, 34 insertions, 31 deletions
diff --git a/web/react/components/create_comment.jsx b/web/react/components/create_comment.jsx
index 68bee800a..94b6e1b7f 100644
--- a/web/react/components/create_comment.jsx
+++ b/web/react/components/create_comment.jsx
@@ -105,16 +105,9 @@ module.exports = React.createClass({
this.lastTime = t;
}
},
- handleUserInput: function(messageText) {
- var newPostError = this.state.postError;
-
- var len = utils.getLengthOfTextInTextarea(messageText);
-
- if (!this.state.postError && len >= Constants.MAX_POST_LEN) {
- newPostError = 'Comment length cannot exceed 4000 characters';
- } else if (this.state.postError === 'Comment length cannot exceed 4000 characters' && len < Constants.MAX_POST_LEN) {
- newPostError = '';
- }
+ handleUserInput: function(message) {
+ var messageText = utils.truncateText(message);
+ var newPostError = utils.checkMessageLengthError(messageText, this.state.postError, 'Comment length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
var draft = PostStore.getCommentDraft(this.props.rootId);
draft.message = messageText;
diff --git a/web/react/components/create_post.jsx b/web/react/components/create_post.jsx
index 387149b14..19270197e 100644
--- a/web/react/components/create_post.jsx
+++ b/web/react/components/create_post.jsx
@@ -18,6 +18,7 @@ var Constants = require('../utils/constants.jsx');
var ActionTypes = Constants.ActionTypes;
module.exports = React.createClass({
+ displayName: 'CreatePost',
lastTime: 0,
handleSubmit: function(e) {
e.preventDefault();
@@ -131,16 +132,9 @@ module.exports = React.createClass({
this.lastTime = t;
}
},
- handleUserInput: function(messageText) {
- var newPostError = this.state.postError;
-
- var len = utils.getLengthOfTextInTextarea(messageText);
-
- if (!this.state.postError && len >= Constants.MAX_POST_LEN) {
- newPostError = 'Message length cannot exceed 4000 characters';
- } else if (this.state.postError === 'Message length cannot exceed 4000 characters' && len < Constants.MAX_POST_LEN) {
- newPostError = '';
- }
+ handleUserInput: function(message) {
+ var messageText = utils.truncateText(message);
+ var newPostError = utils.checkMessageLengthError(messageText, this.state.postError, 'Message length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
this.resizePostHolder();
this.setState({messageText: messageText, postError: newPostError});
diff --git a/web/react/components/edit_post_modal.jsx b/web/react/components/edit_post_modal.jsx
index 39d058f30..8ffd5013a 100644
--- a/web/react/components/edit_post_modal.jsx
+++ b/web/react/components/edit_post_modal.jsx
@@ -39,17 +39,9 @@ module.exports = React.createClass({
$(this.state.refocusId).focus();
},
handleEditInput: function(editText) {
- var newError = this.state.error;
-
- var len = utils.getLengthOfTextInTextarea(editText);
-
- if (!this.state.error && len >= Constants.MAX_POST_LEN) {
- newError = 'New message length cannot exceed 4000 characters';
- } else if (this.state.error === 'New message length cannot exceed 4000 characters' && len < Constants.MAX_POST_LEN) {
- newError = '';
- }
-
- this.setState({editText: editText, error: newError});
+ var editMessage = utils.truncateText(editText);
+ var newError = utils.checkMessageLengthError(editMessage, this.state.error, 'New message length cannot exceed ' + Constants.MAX_POST_LEN + ' characters');
+ this.setState({editText: editMessage, error: newError});
},
handleEditKeyPress: function(e) {
if (e.which == 13 && !e.shiftKey && !e.altKey) {
diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index 33c103c2e..77b204793 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -1032,6 +1032,30 @@ module.exports.getLengthOfTextInTextarea = function(messageText) {
return len;
};
+module.exports.checkMessageLengthError = function(message, currentError, newError) {
+ var updatedError = currentError;
+ var len = module.exports.getLengthOfTextInTextarea(message);
+
+ if (!currentError && len >= Constants.MAX_POST_LEN) {
+ updatedError = newError;
+ } else if (currentError === newError && len < Constants.MAX_POST_LEN) {
+ updatedError = '';
+ }
+
+ return updatedError;
+};
+
+// Necessary due to issues with textarea max length and pasting newlines
+module.exports.truncateText = function(message) {
+ var lengthDifference = module.exports.getLengthOfTextInTextarea(message) - message.length;
+
+ if (lengthDifference > 0) {
+ return message.substring(0, Constants.MAX_POST_LEN - lengthDifference);
+ }
+
+ return message.substring(0, Constants.MAX_POST_LEN);
+};
+
// Used to get the id of the other user from a DM channel
module.exports.getUserIdFromChannelName = function(channel) {
var ids = channel.name.split('__');