Moved duplicate code into functions and added better handling of large paste text dumps

This commit is contained in:
Reed Garmsen
2015-08-26 09:38:06 -07:00
parent 656a88efdd
commit a56603d666
4 changed files with 34 additions and 31 deletions

View File

@@ -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;

View File

@@ -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});

View File

@@ -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) {

View File

@@ -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('__');