about summary refs log tree commit diff
path: root/app/javascript/flavours/glitch/actions/announcements.js
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2020-01-25 20:31:22 +0100
committerGitHub <noreply@github.com>2020-01-25 20:31:22 +0100
commit3591621edc4cc3658199527b0847e997ad1ce0a4 (patch)
treef1f6fcf0ecf1092db7f74bc787a6024ae5967e0d /app/javascript/flavours/glitch/actions/announcements.js
parent5bd752081fd72c9899780eaa4b8ce2bd277b1ff0 (diff)
parent5e4d1f699e9f2ea6954a6d2647412f98ed2ca203 (diff)
Merge pull request #1268 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/javascript/flavours/glitch/actions/announcements.js')
-rw-r--r--app/javascript/flavours/glitch/actions/announcements.js21
1 files changed, 18 insertions, 3 deletions
diff --git a/app/javascript/flavours/glitch/actions/announcements.js b/app/javascript/flavours/glitch/actions/announcements.js
index b4e8cee2f..930493b6a 100644
--- a/app/javascript/flavours/glitch/actions/announcements.js
+++ b/app/javascript/flavours/glitch/actions/announcements.js
@@ -56,12 +56,27 @@ export const updateAnnouncements = announcement => ({
 });
 
 export const addReaction = (announcementId, name) => (dispatch, getState) => {
-  dispatch(addReactionRequest(announcementId, name));
+  const announcement = getState().getIn(['announcements', 'items']).find(x => x.get('id') === announcementId);
+
+  let alreadyAdded = false;
+
+  if (announcement) {
+    const reaction = announcement.get('reactions').find(x => x.get('name') === name);
+    if (reaction && reaction.get('me')) {
+      alreadyAdded = true;
+    }
+  }
+
+  if (!alreadyAdded) {
+    dispatch(addReactionRequest(announcementId, name, alreadyAdded));
+  }
 
   api(getState).put(`/api/v1/announcements/${announcementId}/reactions/${name}`).then(() => {
-    dispatch(addReactionSuccess(announcementId, name));
+    dispatch(addReactionSuccess(announcementId, name, alreadyAdded));
   }).catch(err => {
-    dispatch(addReactionFail(announcementId, name, err));
+    if (!alreadyAdded) {
+      dispatch(addReactionFail(announcementId, name, err));
+    }
   });
 };