PLT-6147 Fixed reactions not rendering properly while loading (#5958)
Этот коммит содержится в:
коммит произвёл
Corey Hulen
родитель
0a81dd9fff
Коммит
63cdb89144
@@ -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();
|
||||
|
||||
Ссылка в новой задаче
Block a user