diff --git a/app/javascript/dashboard/assets/audio/ding.mp3 b/app/javascript/dashboard/assets/audio/ding.mp3 deleted file mode 100644 index 1c4921711..000000000 Binary files a/app/javascript/dashboard/assets/audio/ding.mp3 and /dev/null differ diff --git a/app/javascript/shared/assets/audio/ding.mp3 b/app/javascript/shared/assets/audio/ding.mp3 new file mode 100644 index 000000000..7c190424b Binary files /dev/null and b/app/javascript/shared/assets/audio/ding.mp3 differ diff --git a/app/javascript/shared/helpers/AudioNotificationHelper.js b/app/javascript/shared/helpers/AudioNotificationHelper.js new file mode 100644 index 000000000..ee9899bf4 --- /dev/null +++ b/app/javascript/shared/helpers/AudioNotificationHelper.js @@ -0,0 +1,9 @@ +const notificationAudio = require('shared/assets/audio/ding.mp3'); + +export const playNotificationAudio = () => { + try { + new Audio(notificationAudio).play(); + } catch (error) { + console.log(error); + } +}; diff --git a/app/javascript/widget/store/modules/conversation.js b/app/javascript/widget/store/modules/conversation.js index 34d8688bf..47ed94656 100755 --- a/app/javascript/widget/store/modules/conversation.js +++ b/app/javascript/widget/store/modules/conversation.js @@ -2,6 +2,7 @@ import Vue from 'vue'; import { sendMessageAPI, getConversationAPI } from 'widget/api/conversation'; import { MESSAGE_TYPE } from 'widget/helpers/constants'; +import { playNotificationAudio } from 'shared/helpers/AudioNotificationHelper'; import getUuid from '../../helpers/uuid'; import DateHelper from '../../../shared/helpers/DateHelper'; @@ -93,6 +94,10 @@ export const actions = { }, addMessage({ commit }, data) { + if (data.message_type === MESSAGE_TYPE.OUTGOING) { + playNotificationAudio(); + } + commit('pushMessageToConversation', data); }, }; diff --git a/app/javascript/widget/store/modules/specs/conversation/actions.spec.js b/app/javascript/widget/store/modules/specs/conversation/actions.spec.js index 56b50f7f1..1482d276c 100644 --- a/app/javascript/widget/store/modules/specs/conversation/actions.spec.js +++ b/app/javascript/widget/store/modules/specs/conversation/actions.spec.js @@ -1,7 +1,11 @@ +import { playNotificationAudio } from 'shared/helpers/AudioNotificationHelper'; import { actions } from '../../conversation'; import getUuid from '../../../../helpers/uuid'; jest.mock('../../../../helpers/uuid'); +jest.mock('shared/helpers/AudioNotificationHelper', () => ({ + playNotificationAudio: jest.fn(), +})); const commit = jest.fn(); @@ -11,6 +15,15 @@ describe('#actions', () => { actions.addMessage({ commit }, { id: 1 }); expect(commit).toBeCalledWith('pushMessageToConversation', { id: 1 }); }); + + it('plays audio when agent sends a message', () => { + actions.addMessage({ commit }, { id: 1, message_type: 1 }); + expect(playNotificationAudio).toBeCalled(); + expect(commit).toBeCalledWith('pushMessageToConversation', { + id: 1, + message_type: 1, + }); + }); }); describe('#sendMessage', () => {