diff options
author | ThibG <thib@sitedethib.com> | 2020-01-25 20:31:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-25 20:31:22 +0100 |
commit | 3591621edc4cc3658199527b0847e997ad1ce0a4 (patch) | |
tree | f1f6fcf0ecf1092db7f74bc787a6024ae5967e0d /app/javascript/flavours/glitch/actions | |
parent | 5bd752081fd72c9899780eaa4b8ce2bd277b1ff0 (diff) | |
parent | 5e4d1f699e9f2ea6954a6d2647412f98ed2ca203 (diff) |
Merge pull request #1268 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
Diffstat (limited to 'app/javascript/flavours/glitch/actions')
-rw-r--r-- | app/javascript/flavours/glitch/actions/announcements.js | 21 |
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)); + } }); }; |