Merge pull request #1559 from mewtaylor/issue/gh-1545

Fix GH-1545: add `unread` as a key/value on each message
This commit is contained in:
Matthew Taylor 2017-09-19 17:18:42 -04:00 committed by GitHub
commit c9eacf4ac3
2 changed files with 26 additions and 17 deletions

View file

@ -116,13 +116,25 @@ var Messages = React.createClass({
) )
); );
}, },
filterMessages: function (messages, typesAllowed) { filterMessages: function (messages, typesAllowed, unreadCount) {
var filteredMessages = []; var filteredMessages = [];
if (typesAllowed.length > 0) {
for (var i in messages) { for (var i in messages) {
// check to see if the position of the message in the list is earlier
// than the unread count. If it is, then the message is totally unread.
messages[i].unread = false;
if (i < unreadCount) messages[i].unread = true;
if (typesAllowed.indexOf(messages[i].type) > -1) { if (typesAllowed.indexOf(messages[i].type) > -1) {
filteredMessages.push(messages[i]); filteredMessages.push(messages[i]);
} }
} }
} else {
filteredMessages = messages;
for (var j = 0; j < unreadCount; j++) {
filteredMessages[j].unread = true;
}
}
return filteredMessages; return filteredMessages;
}, },
render: function () { render: function () {
@ -131,10 +143,11 @@ var Messages = React.createClass({
loadMore = false; loadMore = false;
} }
var messages = this.props.messages; var messages = this.filterMessages(
if (this.state.filterValues.length > 0) { this.props.messages,
messages = this.filterMessages(messages, this.state.filterValues); this.state.filterValues,
} this.props.numNewMessages
);
return( return(
<MessagesPresentation <MessagesPresentation

View file

@ -42,8 +42,8 @@ var SocialMessagesList = React.createClass({
numNewMessages: 0 numNewMessages: 0
}; };
}, },
getComponentForMessage: function (message, unread) { getComponentForMessage: function (message) {
var className = (unread) ? 'mod-unread' : ''; var className = (message.unread === true) ? 'mod-unread' : '';
var key = message.type + '_' + message.id; var key = message.type + '_' + message.id;
switch (message.type) { switch (message.type) {
@ -140,14 +140,10 @@ var SocialMessagesList = React.createClass({
/>; />;
} }
}, },
renderSocialMessages: function (messages, unreadCount) { renderSocialMessages: function (messages) {
var messageList = []; var messageList = [];
for (var i in messages) { for (var i in messages) {
if (i <= unreadCount) { messageList.push(this.getComponentForMessage(messages[i]));
messageList.push(this.getComponentForMessage(messages[i], true));
} else {
messageList.push(this.getComponentForMessage(messages[i], false));
}
} }
return messageList; return messageList;
}, },
@ -195,7 +191,7 @@ var SocialMessagesList = React.createClass({
</h4> </h4>
</div>, </div>,
<ul className="messages-social-list" key="messages-social-list"> <ul className="messages-social-list" key="messages-social-list">
{this.renderSocialMessages(this.props.messages, (this.props.numNewMessages - 1))} {this.renderSocialMessages(this.props.messages)}
</ul>, </ul>,
this.renderLoadMore(this.props.loadMore) this.renderLoadMore(this.props.loadMore)
] : []} ] : []}