From f78df91dd2edaf580ed3ebc79dfae96eff26fdaa Mon Sep 17 00:00:00 2001 From: Pranav Raj S Date: Tue, 2 Jun 2020 22:59:02 +0530 Subject: [PATCH] Chore: Contact Sidebar, conversation cleanup (#908) - Update sidebar design - Move every contact data to contacts module - Revert go to next conversation feature - Fix issues with new conversation in action cable - Escape HTML content - Broadcast event when conversation.contact changes. Co-authored-by: Sojan --- .../assets/scss/plugins/_multiselect.scss | 3 - .../widgets/conversation/ConversationCard.vue | 31 +++++-- .../conversation/ConversationHeader.vue | 15 +++- .../dashboard/helper/actionCable.js | 12 +++ .../conversation/ContactConversations.vue | 9 ++- .../conversation/ContactDetailsItem.vue | 2 +- .../dashboard/conversation/ContactPanel.vue | 69 +++++++++++----- .../conversation/ConversationLabels.vue | 81 ++++++++++--------- .../dashboard/store/modules/contacts.js | 28 ++++--- .../store/modules/conversations/actions.js | 28 +++++-- .../store/modules/conversations/getters.js | 11 +-- .../store/modules/conversations/index.js | 10 +++ .../modules/specs/contacts/getters.spec.js | 6 +- .../modules/specs/contacts/mutations.spec.js | 30 ++++--- .../specs/conversations/actions.spec.js | 10 ++- .../dashboard/store/mutation-types.js | 1 + .../shared/helpers/HTMLSanitizer.js | 8 ++ .../shared/helpers/MessageFormatter.js | 4 +- app/listeners/action_cable_listener.rb | 7 ++ app/models/contact.rb | 8 +- app/models/conversation.rb | 3 +- lib/events/types.rb | 1 + 22 files changed, 252 insertions(+), 125 deletions(-) create mode 100644 app/javascript/shared/helpers/HTMLSanitizer.js diff --git a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss index 6d522dc9b..480e31c61 100644 --- a/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss +++ b/app/javascript/dashboard/assets/scss/plugins/_multiselect.scss @@ -91,7 +91,6 @@ } .sidebar-labels-wrap { - &.has-edited, &:hover { .multiselect { @@ -108,8 +107,6 @@ } .multiselect { - margin-top: $space-small; - >.multiselect__select { visibility: hidden; } diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue index aa9af83b2..a2a914bb2 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationCard.vue @@ -6,15 +6,15 @@ >

- {{ chat.meta.sender.name }} + {{ currentContact.name }}

- + v-html="extractMessageText(lastMessageInChat)" + />
- {{ dynamicTime(lastMessage(chat).created_at) }} + {{ + lastMessageInChat ? dynamicTime(lastMessageInChat.created_at) : '' + }} {{ getUnreadCount }}
@@ -78,6 +79,12 @@ export default { accountId: 'getCurrentAccountId', }), + currentContact() { + return this.$store.getters['contacts/getContact']( + this.chat.meta.sender.id + ); + }, + isActiveChat() { return this.currentChat.id === this.chat.id; }, @@ -93,6 +100,10 @@ export default { isInboxNameVisible() { return !this.activeInbox; }, + + lastMessageInChat() { + return this.lastMessage(this.chat); + }, }, methods: { @@ -102,6 +113,10 @@ export default { router.push({ path: frontendURL(path) }); }, extractMessageText(chatItem) { + if (!chatItem) { + return ''; + } + const { content, attachments } = chatItem; if (content) { diff --git a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue index 29215362f..8be30ff68 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ConversationHeader.vue @@ -2,14 +2,14 @@

- {{ chat.meta.sender.name }} + {{ currentContact.name }}

-
+
+ +
+ {{ + $t('CONTACT_PANEL.LABELS.UPDATE_ERROR') + }} +
@@ -45,10 +49,12 @@