From 97b1b4c6f987914dc2e06f41d08619e7928819ba Mon Sep 17 00:00:00 2001 From: GitStart <1501599+gitstart@users.noreply.github.com> Date: Wed, 15 Feb 2023 01:42:22 +0545 Subject: [PATCH] fix: Prevents duplicate action trigger on interactive messages (#6448) Co-authored-by: raph941 <45232708+raph941@users.noreply.github.com> Co-authored-by: phunguyenmurcul <51897872+phunguyenmurcul@users.noreply.github.com> --- .../widget/store/modules/message.js | 5 +++- .../modules/specs/message/actions.spec.js | 28 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/javascript/widget/store/modules/message.js b/app/javascript/widget/store/modules/message.js index 99c284e1f..04c2e7af0 100644 --- a/app/javascript/widget/store/modules/message.js +++ b/app/javascript/widget/store/modules/message.js @@ -12,9 +12,12 @@ export const getters = { export const actions = { update: async ( - { commit, dispatch }, + { commit, dispatch, getters: { getUIFlags: uiFlags } }, { email, messageId, submittedValues } ) => { + if (uiFlags.isUpdating) { + return; + } commit('toggleUpdateStatus', true); try { await MessageAPI.update({ diff --git a/app/javascript/widget/store/modules/specs/message/actions.spec.js b/app/javascript/widget/store/modules/specs/message/actions.spec.js index 36e4341ef..61c3f453a 100644 --- a/app/javascript/widget/store/modules/specs/message/actions.spec.js +++ b/app/javascript/widget/store/modules/specs/message/actions.spec.js @@ -17,7 +17,17 @@ describe('#actions', () => { API.patch.mockResolvedValue({ data: { contact: { pubsub_token: '8npuMUfDgizrwVoqcK1t7FMY' } }, }); - await actions.update({ commit }, user); + await actions.update( + { + commit, + getters: { + getUIFlags: { + isUpdating: false, + }, + }, + }, + user + ); expect(commit.mock.calls).toEqual([ ['toggleUpdateStatus', true], [ @@ -34,5 +44,21 @@ describe('#actions', () => { ['toggleUpdateStatus', false], ]); }); + + it('blocks all new action calls when isUpdating', async () => { + await actions.update( + { + commit, + getters: { + getUIFlags: { + isUpdating: true, + }, + }, + }, + {} + ); + + expect(commit.mock.calls).toEqual([]); + }); }); });