summaryrefslogtreecommitdiffstats
path: root/webapp/stores
diff options
context:
space:
mode:
authorHarrison Healey <harrisonmhealey@gmail.com>2017-04-04 00:21:15 -0400
committerCorey Hulen <corey@hulen.com>2017-04-03 21:21:15 -0700
commit63cdb89144f27929928f819b4ffae936ff79ac15 (patch)
treec732d2f8955dbd857a6c29bb04a720a35f767d48 /webapp/stores
parent0a81dd9fff606d041ee08c62c655bf6966c7a66a (diff)
downloadchat-63cdb89144f27929928f819b4ffae936ff79ac15.tar.gz
chat-63cdb89144f27929928f819b4ffae936ff79ac15.tar.bz2
chat-63cdb89144f27929928f819b4ffae936ff79ac15.zip
PLT-6147 Fixed reactions not rendering properly while loading (#5958)
Diffstat (limited to 'webapp/stores')
-rw-r--r--webapp/stores/reaction_store.jsx36
1 files changed, 18 insertions, 18 deletions
diff --git a/webapp/stores/reaction_store.jsx b/webapp/stores/reaction_store.jsx
index 166569e3d..51ad5140e 100644
--- a/webapp/stores/reaction_store.jsx
+++ b/webapp/stores/reaction_store.jsx
@@ -37,36 +37,36 @@ class ReactionStore extends EventEmitter {
}
addReaction(postId, reaction) {
- const reactions = [];
-
- 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);
- }
- }
+ let reactions = this.getReactions(postId) || [];
+
+ // 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;
+ });
- reactions.push(reaction);
+ if (existingIndex === -1) {
+ reactions = [...reactions, reaction];
+ }
this.setReactions(postId, reactions);
}
removeReaction(postId, reaction) {
- const reactions = [];
+ let reactions = this.getReactions(postId) || [];
+
+ const existingIndex = reactions.findIndex((existing) => {
+ return existing.user_id === reaction.user_id && existing.post_id === reaction.post_id && existing.emoji_name === reaction.emoji_name;
+ });
- 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);
- }
+ 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(); \ No newline at end of file
+export default new ReactionStore();