Added keys to array-based elements and made getMe asynchronous

This commit is contained in:
nickago
2015-08-06 11:05:13 -07:00
parent 3f987db4a5
commit 3815ab8065
6 changed files with 16 additions and 34 deletions

View File

@@ -439,9 +439,9 @@ module.exports = React.createClass({
currentPostDay = utils.getDateForUnixTicks(post.create_at);
if (currentPostDay.toDateString() != previousPostDay.toDateString()) {
postCtls.push(
<div className="date-separator">
<hr className="separator__hr" />
<div className="separator__text">{currentPostDay.toDateString()}</div>
<div key="date_div" className="date-separator">
<hr key="date_line" className="separator__hr" />
<div key="date" className="separator__text">{currentPostDay.toDateString()}</div>
</div>
);
}
@@ -449,9 +449,9 @@ module.exports = React.createClass({
if (post.create_at > last_viewed && !rendered_last_viewed) {
rendered_last_viewed = true;
postCtls.push(
<div className="new-separator">
<hr id="new_message" className="separator__hr" />
<div className="separator__text">New Messages</div>
<div key="unviewed_div" className="new-separator">
<hr key="unviewed_line" id="new_message" className="separator__hr" />
<div key="unviewedMessage" className="separator__text">New Messages</div>
</div>
);
}
@@ -459,7 +459,7 @@ module.exports = React.createClass({
previousPostDay = currentPostDay;
}
} else {
postCtls.push(<LoadingScreen position="absolute" />);
postCtls.push(<LoadingScreen key="loading" position="absolute" />);
}
return (

View File

@@ -4,6 +4,7 @@
var utils = require('../utils/utils.jsx');
module.exports = React.createClass({
displayName:'SettingsSidebar',
updateTab: function(tab) {
this.props.updateTab(tab);
$('.settings-modal').addClass('display--content');
@@ -14,7 +15,7 @@ module.exports = React.createClass({
<div className="">
<ul className="nav nav-pills nav-stacked">
{this.props.tabs.map(function(tab) {
return <li className={self.props.activeTab == tab.name ? 'active' : ''}><a href="#" onClick={function(){self.updateTab(tab.name);}}><i className={tab.icon}></i>{tab.ui_name}</a></li>
return <li key={tab.name+'_li'} className={self.props.activeTab == tab.name ? 'active' : ''}><a key={tab.name + '_a'} href="#" onClick={function(){self.updateTab(tab.name);}}><i key={tab.name+'_i'} className={tab.icon}></i>{tab.ui_name}</a></li>
})}
</ul>
</div>

View File

@@ -87,7 +87,8 @@ var NavbarDropdown = React.createClass({
}
});
}
teams.push(<li><a href={utils.getWindowLocationOrigin() + '/signup_team'}>Create a New Team</a></li>);
teams.push(<li key="newTeam_li"><a key="newTeam_a" href={utils.getWindowLocationOrigin() + "/signup_team" }>Create a New Team</a></li>);
return (
<ul className='nav navbar-nav navbar-right'>

View File

@@ -4,7 +4,6 @@
var AppDispatcher = require('../dispatcher/app_dispatcher.jsx');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var client = require('../utils/client.jsx');
var Constants = require('../utils/constants.jsx');
var ActionTypes = Constants.ActionTypes;
@@ -73,24 +72,13 @@ var UserStore = assign({}, EventEmitter.prototype, {
BrowserStore.setGlobalItem("current_user_id", id);
}
},
getCurrentId: function(skipFetch) {
getCurrentId: function() {
var current_id = this._current_id;
if (current_id == null) {
current_id = BrowserStore.getGlobalItem("current_user_id");
}
// this is a speical case to force fetch the
// current user if it's missing
// it's synchronous to block rendering
if (current_id == null && !skipFetch) {
var me = client.getMeSynchronous();
if (me != null) {
this.setCurrentUser(me);
current_id = me.id;
}
}
return current_id;
},
getCurrentUser: function(skipFetch) {

View File

@@ -322,7 +322,7 @@ module.exports.getMe = function() {
if (isCallInProgress("getMe")) return;
callTracker["getMe"] = utils.getTimestamp();
client.getMeSynchronous(
client.getMe(
function(data, textStatus, xhr) {
callTracker["getMe"] = 0;

View File

@@ -279,32 +279,24 @@ module.exports.getAudits = function(userId, success, error) {
});
};
module.exports.getMeSynchronous = function(success, error) {
var current_user = null;
module.exports.getMe = function(success, error) {
$.ajax({
async: false,
url: "/api/v1/users/me",
dataType: 'json',
contentType: 'application/json',
type: 'GET',
success: function(data, textStatus, xhr) {
current_user = data;
if (success) success(data, textStatus, xhr);
},
success: success,
error: function(xhr, status, err) {
var ieChecker = window.navigator.userAgent; // This and the condition below is used to check specifically for browsers IE10 & 11 to suppress a 200 'OK' error from appearing on login
if (xhr.status != 200 || !(ieChecker.indexOf("Trident/7.0") > 0 || ieChecker.indexOf("Trident/6.0") > 0)) {
if (error) {
e = handleError("getMeSynchronous", xhr, status, err);
e = handleError("getMe", xhr, status, err);
error(e);
};
};
}
});
return current_user;
};
module.exports.inviteMembers = function(data, success, error) {