]> cat aescling's git repositories - mastodon.git/commitdiff
[Glitch] Fix spurious error and incorrect state change when adding a reaction twice
authorThibG <thib@sitedethib.com>
Sat, 25 Jan 2020 17:19:24 +0000 (18:19 +0100)
committerThibaut Girka <thib@sitedethib.com>
Sat, 25 Jan 2020 18:53:04 +0000 (19:53 +0100)
Port c06d2ff43718af5940987e219379094f1a2de180 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
app/javascript/flavours/glitch/actions/announcements.js
app/javascript/flavours/glitch/styles/components/announcements.scss

index b4e8cee2f23eb4a940ad90f378e253cc10174523..930493b6a865c28e840e5326ee8634b2381fd86c 100644 (file)
@@ -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));
+    }
   });
 };
 
index 6bf9e2a0cb28cb7e2a878d08a88f3e06087644fc..00585cb1c885515d59ce651d1f57de6e34f09065 100644 (file)
@@ -38,7 +38,6 @@
 
 .announcements {
   background: lighten($ui-base-color, 8%);
-  border-top: 1px solid $ui-base-color;
   font-size: 13px;
   display: flex;
   align-items: flex-end;