diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index c24a02a42..f6474d9cd 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -781,6 +781,9 @@ export default { }, setReplyMode(mode = REPLY_EDITOR_MODES.REPLY) { const { can_reply: canReply } = this.currentChat; + this.$store.dispatch('draftMessages/setReplyEditorMode', { + mode, + }); if (canReply || this.isAWhatsAppChannel) this.replyType = mode; if (this.showRichContentEditor) { if (this.isRecordingAudio) { diff --git a/app/javascript/dashboard/store/modules/draftMessages.js b/app/javascript/dashboard/store/modules/draftMessages.js index 929330040..28a4fb3e0 100644 --- a/app/javascript/dashboard/store/modules/draftMessages.js +++ b/app/javascript/dashboard/store/modules/draftMessages.js @@ -1,17 +1,20 @@ import Vue from 'vue'; import types from '../mutation-types'; +import { REPLY_EDITOR_MODES } from 'dashboard/components/widgets/WootWriter/constants'; import { LocalStorage } from 'shared/helpers/localStorage'; import { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage'; const state = { records: LocalStorage.get(LOCAL_STORAGE_KEYS.DRAFT_MESSAGES) || {}, + replyEditorMode: REPLY_EDITOR_MODES.REPLY, }; export const getters = { get: _state => key => { return _state.records[key] || ''; }, + getReplyEditorMode: _state => _state.replyEditorMode, }; export const actions = { @@ -21,6 +24,9 @@ export const actions = { delete: ({ commit }, { key }) => { commit(types.SET_DRAFT_MESSAGES, { key }); }, + setReplyEditorMode: ({ commit }, { mode }) => { + commit(types.SET_REPLY_EDITOR_MODE, { mode }); + }, }; export const mutations = { @@ -33,6 +39,9 @@ export const mutations = { Vue.set($state, 'records', updatedRecords); LocalStorage.set(LOCAL_STORAGE_KEYS.DRAFT_MESSAGES, $state.records); }, + [types.SET_REPLY_EDITOR_MODE]($state, { mode }) { + Vue.set($state, 'replyEditorMode', mode); + }, }; export default { diff --git a/app/javascript/dashboard/store/modules/specs/draftMessages/actions.spec.js b/app/javascript/dashboard/store/modules/specs/draftMessages/actions.spec.js index b2d80d19b..6260c6cef 100644 --- a/app/javascript/dashboard/store/modules/specs/draftMessages/actions.spec.js +++ b/app/javascript/dashboard/store/modules/specs/draftMessages/actions.spec.js @@ -51,4 +51,26 @@ describe('#actions', () => { ]); }); }); + + describe('#setReplyEditorMode', () => { + it('sends correct actions', async () => { + await actions.setReplyEditorMode( + { + commit, + state: { + draftMessages: {}, + }, + }, + { mode: 'reply' } + ); + expect(commit.mock.calls).toEqual([ + [ + types.SET_REPLY_EDITOR_MODE, + { + mode: 'reply', + }, + ], + ]); + }); + }); }); diff --git a/app/javascript/dashboard/store/modules/specs/draftMessages/getters.spec.js b/app/javascript/dashboard/store/modules/specs/draftMessages/getters.spec.js index 31913442c..899d1a74f 100644 --- a/app/javascript/dashboard/store/modules/specs/draftMessages/getters.spec.js +++ b/app/javascript/dashboard/store/modules/specs/draftMessages/getters.spec.js @@ -15,4 +15,11 @@ describe('#getters', () => { }; expect(getters.get(state)('draft-22-REPLY')).toEqual(''); }); + + it('return replyEditorMode', () => { + const state = { + replyEditorMode: 'reply', + }; + expect(getters.getReplyEditorMode(state)).toEqual('reply'); + }); }); diff --git a/app/javascript/dashboard/store/modules/specs/draftMessages/mutations.spec.js b/app/javascript/dashboard/store/modules/specs/draftMessages/mutations.spec.js index 9acc98879..f4695818b 100644 --- a/app/javascript/dashboard/store/modules/specs/draftMessages/mutations.spec.js +++ b/app/javascript/dashboard/store/modules/specs/draftMessages/mutations.spec.js @@ -30,4 +30,16 @@ describe('#mutations', () => { expect(state.records).toEqual({}); }); }); + + describe('#SET_REPLY_EDITOR_MODE', () => { + it('sets the reply editor mode', () => { + const state = { + replyEditorMode: 'reply', + }; + mutations[types.SET_REPLY_EDITOR_MODE](state, { + mode: 'note', + }); + expect(state.replyEditorMode).toEqual('note'); + }); + }); }); diff --git a/app/javascript/dashboard/store/mutation-types.js b/app/javascript/dashboard/store/mutation-types.js index 09148566f..9ba841342 100644 --- a/app/javascript/dashboard/store/mutation-types.js +++ b/app/javascript/dashboard/store/mutation-types.js @@ -27,6 +27,7 @@ export default { 'SET_LAST_MESSAGE_ID_FOR_SYNC_CONVERSATION', SET_DRAFT_MESSAGES: 'SET_DRAFT_MESSAGES', REMOVE_DRAFT_MESSAGES: 'REMOVE_DRAFT_MESSAGES', + SET_REPLY_EDITOR_MODE: 'SET_REPLY_EDITOR_MODE', SET_CURRENT_CHAT_WINDOW: 'SET_CURRENT_CHAT_WINDOW', CLEAR_CURRENT_CHAT_WINDOW: 'CLEAR_CURRENT_CHAT_WINDOW',