PLT-6147 Fixed reactions not rendering properly while loading (#5958)

Этот коммит содержится в:
Harrison Healey
2017-04-04 00:21:15 -04:00
коммит произвёл Corey Hulen
родитель 0a81dd9fff
Коммит 63cdb89144
4 изменённых файлов: 37 добавлений и 39 удалений

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

@@ -81,16 +81,12 @@ export default class ReactionListContainer extends React.Component {
}
render() {
if (this.props.post.has_reactions && this.state.reactions.length > 0) {
return (
<ReactionListView
post={this.props.post}
reactions={this.state.reactions}
emojis={this.state.emojis}
/>
);
}
return null;
return (
<ReactionListView
post={this.props.post}
reactions={this.state.reactions}
emojis={this.state.emojis}
/>
);
}
}

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

@@ -13,17 +13,23 @@ export default class ReactionListView extends React.Component {
}
render() {
if (!this.props.post.has_reactions || (this.props.reactions && this.props.reactions.length === 0)) {
return null;
}
const reactionsByName = new Map();
const emojiNames = [];
for (const reaction of this.props.reactions) {
const emojiName = reaction.emoji_name;
if (this.props.reactions) {
for (const reaction of this.props.reactions) {
const emojiName = reaction.emoji_name;
if (reactionsByName.has(emojiName)) {
reactionsByName.get(emojiName).push(reaction);
} else {
emojiNames.push(emojiName);
reactionsByName.set(emojiName, [reaction]);
if (reactionsByName.has(emojiName)) {
reactionsByName.get(emojiName).push(reaction);
} else {
emojiNames.push(emojiName);
reactionsByName.set(emojiName, [reaction]);
}
}
}

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

@@ -1287,10 +1287,6 @@ form {
.post-reaction-list {
min-height: 30px;
&:empty {
display: none;
}
}
.post-reaction {

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

@@ -37,36 +37,36 @@ class ReactionStore extends EventEmitter {
}
addReaction(postId, reaction) {
const reactions = [];
let reactions = this.getReactions(postId) || [];
for (const existing of this.getReactions(postId)) {
// make sure not to add duplicates
if (existing.user_id !== reaction.user_id || existing.post_id !== reaction.post_id ||
existing.emoji_name !== reaction.emoji_name) {
reactions.push(existing);
}
// Make sure not to add duplicates
const existingIndex = reactions.findIndex((existing) => {
return existing.user_id === reaction.user_id && existing.post_id === reaction.post_id && existing.emoji_name === reaction.emoji_name;
});
if (existingIndex === -1) {
reactions = [...reactions, reaction];
}
reactions.push(reaction);
this.setReactions(postId, reactions);
}
removeReaction(postId, reaction) {
const reactions = [];
let reactions = this.getReactions(postId) || [];
for (const existing of this.getReactions(postId)) {
if (existing.user_id !== reaction.user_id || existing.post_id !== reaction.post_id ||
existing.emoji_name !== reaction.emoji_name) {
reactions.push(existing);
}
const existingIndex = reactions.findIndex((existing) => {
return existing.user_id === reaction.user_id && existing.post_id === reaction.post_id && existing.emoji_name === reaction.emoji_name;
});
if (existingIndex !== -1) {
reactions = reactions.slice(0, existingIndex).concat(reactions.slice(existingIndex + 1));
}
this.setReactions(postId, reactions);
}
getReactions(postId) {
return this.reactions.get(postId) || [];
return this.reactions.get(postId);
}
handleEventPayload(payload) {
@@ -89,4 +89,4 @@ class ReactionStore extends EventEmitter {
}
}
export default new ReactionStore();
export default new ReactionStore();