Fixed issue with carriage returns being counted improperly in non-ie browsers and updated error messages to be appropriate to what is being typed (message vs. post vs. edit)

Этот коммит содержится в:
Reed Garmsen
2015-08-25 12:47:18 -07:00
родитель 5766bbfc65
Коммит 656a88efdd
4 изменённых файлов: 43 добавлений и 8 удалений

Просмотреть файл

@@ -108,9 +108,11 @@ module.exports = React.createClass({
handleUserInput: function(messageText) {
var newPostError = this.state.postError;
if (!this.state.postError && messageText.length >= Constants.MAX_POST_LEN) {
newPostError = 'Message length cannot exceed 4000 characters';
} else if (this.state.postError === 'Message length cannot exceed 4000 characters' && messageText.length < Constants.MAX_POST_LEN) {
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 = '';
}

Просмотреть файл

@@ -134,9 +134,11 @@ module.exports = React.createClass({
handleUserInput: function(messageText) {
var newPostError = this.state.postError;
if (!this.state.postError && messageText.length >= Constants.MAX_POST_LEN) {
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' && messageText.length < Constants.MAX_POST_LEN) {
} else if (this.state.postError === 'Message length cannot exceed 4000 characters' && len < Constants.MAX_POST_LEN) {
newPostError = '';
}

Просмотреть файл

@@ -4,6 +4,7 @@
var Client = require('../utils/client.jsx');
var AsyncClient = require('../utils/async_client.jsx');
var Constants = require('../utils/constants.jsx');
var utils = require('../utils/utils.jsx');
var Textbox = require('./textbox.jsx');
var BrowserStore = require('../stores/browser_store.jsx');
@@ -40,9 +41,11 @@ module.exports = React.createClass({
handleEditInput: function(editText) {
var newError = this.state.error;
if (!this.state.error && editText.length >= Constants.MAX_POST_LEN) {
newError = 'Message length cannot exceed 4000 characters';
} else if (this.state.error === 'Message length cannot exceed 4000 characters' && editText.length < Constants.MAX_POST_LEN) {
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 = '';
}

Просмотреть файл

@@ -1004,6 +1004,34 @@ module.exports.isBrowserFirefox = function() {
return navigator && navigator.userAgent && navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
};
// Checks if browser is IE10 or IE11
module.exports.isBrowserIE = function() {
if (window.navigator && window.navigator.userAgent) {
var ua = window.navigator.userAgent;
return ua.indexOf('Trident/7.0') > 0 || ua.indexOf('Trident/6.0') > 0;
}
return false;
};
module.exports.isBrowserEdge = function() {
return window.naviagtor && navigator.userAgent && navigator.userAgent.toLowerCase().indexOf('edge') > -1;
};
// Gets text length consistent with maxlength property of textarea html tag
module.exports.getLengthOfTextInTextarea = function(messageText) {
// Need to get length with carriage returns counting as two characters to match textbox maxlength behavior
// unless ie10/ie11/edge which already do
var len = messageText.length;
if (!module.exports.isBrowserIE() && !module.exports.isBrowserEdge()) {
len = messageText.replace(/\r(?!\n)|\n(?!\r)/g, '--').length;
}
return len;
};
// Used to get the id of the other user from a DM channel
module.exports.getUserIdFromChannelName = function(channel) {
var ids = channel.name.split('__');