From 40481f64623df2dfd5da8c5db144725d5a77d4ab Mon Sep 17 00:00:00 2001 From: Pranav Raj S Date: Tue, 9 Jun 2020 16:26:33 +0530 Subject: [PATCH] Bugfix: Update conversation counters in realtime (#944) * Bug: Update conversation counters in realtime --- .../dashboard/api/inbox/conversation.js | 10 +++++++ .../api/specs/inbox/conversation.spec.js | 19 ++++++++++++ .../dashboard/api/specs/inboxes.spec.js | 2 +- .../assets/scss/widgets/_conv-header.scss | 2 ++ .../scss/widgets/_conversation-view.scss | 1 + .../dashboard/components/ChatList.vue | 20 +++++++++---- .../dashboard/helper/actionCable.js | 8 +++++ .../store/modules/conversations/actions.js | 9 ++++++ .../conversations/specs/actions.spec.js | 30 +++++++++++++++++++ .../accounts/conversations/meta.json.jbuilder | 10 +++---- .../accounts/conversations_controller_spec.rb | 2 +- 11 files changed, 99 insertions(+), 14 deletions(-) create mode 100644 app/javascript/dashboard/api/specs/inbox/conversation.spec.js create mode 100644 app/javascript/dashboard/store/modules/conversations/specs/actions.spec.js diff --git a/app/javascript/dashboard/api/inbox/conversation.js b/app/javascript/dashboard/api/inbox/conversation.js index 9a50ef1c8..d3942efea 100644 --- a/app/javascript/dashboard/api/inbox/conversation.js +++ b/app/javascript/dashboard/api/inbox/conversation.js @@ -43,6 +43,16 @@ class ConversationApi extends ApiClient { mute(conversationId) { return axios.post(`${this.url}/${conversationId}/mute`); } + + meta({ inboxId, status, assigneeType }) { + return axios.get(`${this.url}/meta`, { + params: { + inbox_id: inboxId, + status, + assignee_type: assigneeType, + }, + }); + } } export default new ConversationApi(); diff --git a/app/javascript/dashboard/api/specs/inbox/conversation.spec.js b/app/javascript/dashboard/api/specs/inbox/conversation.spec.js new file mode 100644 index 000000000..4eceba728 --- /dev/null +++ b/app/javascript/dashboard/api/specs/inbox/conversation.spec.js @@ -0,0 +1,19 @@ +import conversationAPI from '../../inbox/conversation'; +import ApiClient from '../../ApiClient'; + +describe('#ConversationAPI', () => { + it('creates correct instance', () => { + expect(conversationAPI).toBeInstanceOf(ApiClient); + expect(conversationAPI).toHaveProperty('get'); + expect(conversationAPI).toHaveProperty('show'); + expect(conversationAPI).toHaveProperty('create'); + expect(conversationAPI).toHaveProperty('update'); + expect(conversationAPI).toHaveProperty('delete'); + expect(conversationAPI).toHaveProperty('toggleStatus'); + expect(conversationAPI).toHaveProperty('assignAgent'); + expect(conversationAPI).toHaveProperty('markMessageRead'); + expect(conversationAPI).toHaveProperty('toggleTyping'); + expect(conversationAPI).toHaveProperty('mute'); + expect(conversationAPI).toHaveProperty('meta'); + }); +}); diff --git a/app/javascript/dashboard/api/specs/inboxes.spec.js b/app/javascript/dashboard/api/specs/inboxes.spec.js index d1a1d2683..c4927e2bb 100644 --- a/app/javascript/dashboard/api/specs/inboxes.spec.js +++ b/app/javascript/dashboard/api/specs/inboxes.spec.js @@ -1,7 +1,7 @@ import inboxes from '../inboxes'; import ApiClient from '../ApiClient'; -describe('#AgentAPI', () => { +describe('#InboxesAPI', () => { it('creates correct instance', () => { expect(inboxes).toBeInstanceOf(ApiClient); expect(inboxes).toHaveProperty('get'); diff --git a/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss b/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss index 6de396353..e1aef9307 100644 --- a/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss +++ b/app/javascript/dashboard/assets/scss/widgets/_conv-header.scss @@ -66,6 +66,8 @@ } .button.resolve--button { + @include flex-align($x: center, $y: middle); + width: 13.2rem; >.icon { diff --git a/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss b/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss index 6aef3e3f9..12d0f21a9 100644 --- a/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss +++ b/app/javascript/dashboard/assets/scss/widgets/_conversation-view.scss @@ -26,6 +26,7 @@ .link { color: $color-white; + text-decoration: underline; } } diff --git a/app/javascript/dashboard/components/ChatList.vue b/app/javascript/dashboard/components/ChatList.vue index 59012d516..a4cec45e3 100644 --- a/app/javascript/dashboard/components/ChatList.vue +++ b/app/javascript/dashboard/components/ChatList.vue @@ -55,6 +55,7 @@