From a8f6eebd6673cf3a1ec872dbc8fa4d3c15d35f3f Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Wed, 29 Sep 2021 12:56:45 +0530 Subject: [PATCH] bug: Fixes Incorrect badge for Twilio SMS inbox and adds the ability to differentiate Twitter tweets and chats (#3003) * bug: Fixes Incorrect badge in the thumbnail for Twilio SMS inbox * Minor fixes * Minor fixes * Review fixes * Minor fixes * fixes codeclimate error * Minor fixes * Minor fixes * Minor fixes * Review fixes * Minor fixes Co-authored-by: Muhsin Keloth --- .../assets/images/twitter-chat-badge.png | Bin 0 -> 27486 bytes .../components/widgets/Thumbnail.vue | 18 +++- .../widgets/conversation/ConversationCard.vue | 12 +-- .../conversation/ConversationHeader.vue | 11 +- .../components/ui/MultiselectDropdown.vue | 1 - app/javascript/shared/mixins/inboxMixin.js | 30 +++++- .../shared/mixins/specs/inboxMixin.spec.js | 97 +++++++++++++++++- 7 files changed, 151 insertions(+), 18 deletions(-) create mode 100644 app/javascript/dashboard/assets/images/twitter-chat-badge.png diff --git a/app/javascript/dashboard/assets/images/twitter-chat-badge.png b/app/javascript/dashboard/assets/images/twitter-chat-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..987ed3d07dee0bd6a95d5982eb39479312a8727d GIT binary patch literal 27486 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 literal 0 HcmV?d00001 diff --git a/app/javascript/dashboard/components/widgets/Thumbnail.vue b/app/javascript/dashboard/components/widgets/Thumbnail.vue index 6fe83720b..517950ea0 100644 --- a/app/javascript/dashboard/components/widgets/Thumbnail.vue +++ b/app/javascript/dashboard/components/widgets/Thumbnail.vue @@ -22,19 +22,33 @@ src="~dashboard/assets/images/fb-badge.png" /> + + @@ -42,6 +42,7 @@ import MoreActions from './MoreActions'; import Thumbnail from '../Thumbnail'; import agentMixin from '../../../mixins/agentMixin.js'; import eventListenerMixins from 'shared/mixins/eventListenerMixins'; +import inboxMixin from 'shared/mixins/inboxMixin'; import { hasPressedAltAndOKey } from 'shared/helpers/KeyboardHelpers'; export default { @@ -49,7 +50,7 @@ export default { MoreActions, Thumbnail, }, - mixins: [agentMixin, eventListenerMixins], + mixins: [inboxMixin, agentMixin, eventListenerMixins], props: { chat: { type: Object, @@ -78,6 +79,12 @@ export default { return this.chat.meta; }, + inbox() { + const { inbox_id: inboxId } = this.chat; + const stateInbox = this.$store.getters['inboxes/getInbox'](inboxId); + return stateInbox; + }, + currentContact() { return this.$store.getters['contacts/getContact']( this.chat.meta.sender.id diff --git a/app/javascript/shared/components/ui/MultiselectDropdown.vue b/app/javascript/shared/components/ui/MultiselectDropdown.vue index 0d0d67296..687b7bf90 100644 --- a/app/javascript/shared/components/ui/MultiselectDropdown.vue +++ b/app/javascript/shared/components/ui/MultiselectDropdown.vue @@ -16,7 +16,6 @@ :src="selectedItem.thumbnail" size="24px" :status="selectedItem.availability_status" - :badge="selectedItem.channel" :username="selectedItem.name" />
diff --git a/app/javascript/shared/mixins/inboxMixin.js b/app/javascript/shared/mixins/inboxMixin.js index 3afd16508..5ff8509fe 100644 --- a/app/javascript/shared/mixins/inboxMixin.js +++ b/app/javascript/shared/mixins/inboxMixin.js @@ -36,12 +36,34 @@ export default { return this.channelType === INBOX_TYPES.EMAIL; }, isATwilioSMSChannel() { - const { phone_number: phoneNumber = '' } = this.inbox; - return this.isATwilioChannel && !phoneNumber.startsWith('whatsapp'); + const { medium: medium = '' } = this.inbox; + return this.isATwilioChannel && medium === 'sms'; }, isATwilioWhatsappChannel() { - const { phone_number: phoneNumber = '' } = this.inbox; - return this.isATwilioChannel && phoneNumber.startsWith('whatsapp'); + const { medium: medium = '' } = this.inbox; + return this.isATwilioChannel && medium === 'whatsapp'; + }, + isTwitterInboxTweet() { + return ( + this.chat && + this.chat.additional_attributes && + this.chat.additional_attributes.type === 'tweet' + ); + }, + twilioBadge() { + return `${this.isATwilioSMSChannel ? 'sms' : 'whatsapp'}`; + }, + twitterBadge() { + return `${this.isTwitterInboxTweet ? 'twitter-tweet' : 'twitter-chat'}`; + }, + inboxBadge() { + if (this.isATwitterInbox) { + return this.twitterBadge; + } + if (this.isATwilioChannel) { + return this.twilioBadge; + } + return this.channelType; }, }, }; diff --git a/app/javascript/shared/mixins/specs/inboxMixin.spec.js b/app/javascript/shared/mixins/specs/inboxMixin.spec.js index 093f36b57..f128a44d8 100644 --- a/app/javascript/shared/mixins/specs/inboxMixin.spec.js +++ b/app/javascript/shared/mixins/specs/inboxMixin.spec.js @@ -70,7 +70,23 @@ describe('inboxMixin', () => { return { inbox: { channel_type: 'Channel::TwilioSms', - phone_number: '+91944444444', + }, + }; + }, + }; + const wrapper = shallowMount(Component); + expect(wrapper.vm.isATwilioChannel).toBe(true); + }); + + it('isATwilioSMSChannel returns true if channel type is Twilio and medium is SMS', () => { + const Component = { + render() {}, + mixins: [inboxMixin], + data() { + return { + inbox: { + channel_type: 'Channel::TwilioSms', + medium: 'sms', }, }; }, @@ -80,7 +96,7 @@ describe('inboxMixin', () => { expect(wrapper.vm.isATwilioSMSChannel).toBe(true); }); - it('isATwilioWhatsappChannel returns true if channel type is Twilio and phonenumber is a whatsapp number', () => { + it('isATwilioWhatsappChannel returns true if channel type is Twilio and medium is whatsapp', () => { const Component = { render() {}, mixins: [inboxMixin], @@ -88,7 +104,7 @@ describe('inboxMixin', () => { return { inbox: { channel_type: 'Channel::TwilioSms', - phone_number: 'whatsapp:+91944444444', + medium: 'whatsapp', }, }; }, @@ -111,4 +127,79 @@ describe('inboxMixin', () => { const wrapper = shallowMount(Component); expect(wrapper.vm.isAnEmailChannel).toBe(true); }); + + it('isTwitterInboxTweet returns true if Twitter channel type is tweet', () => { + const Component = { + render() {}, + mixins: [inboxMixin], + data() { + return { + chat: { + channel_type: 'Channel::TwitterProfile', + additional_attributes: { + type: 'tweet', + }, + }, + }; + }, + }; + const wrapper = shallowMount(Component); + expect(wrapper.vm.isTwitterInboxTweet).toBe(true); + }); + + it('twilioBadge returns string sms if channel type is Twilio and medium is sms', () => { + const Component = { + render() {}, + mixins: [inboxMixin], + data() { + return { + inbox: { + channel_type: 'Channel::TwilioSms', + medium: 'sms', + }, + }; + }, + }; + const wrapper = shallowMount(Component); + expect(wrapper.vm.isATwilioSMSChannel).toBe(true); + expect(wrapper.vm.twilioBadge).toBe('sms'); + }); + + it('twitterBadge returns string twitter-tweet if Twitter channel type is tweet', () => { + const Component = { + render() {}, + mixins: [inboxMixin], + data() { + return { + chat: { + id: 1, + additional_attributes: { + type: 'tweet', + }, + }, + }; + }, + }; + const wrapper = shallowMount(Component); + expect(wrapper.vm.isTwitterInboxTweet).toBe(true); + expect(wrapper.vm.twitterBadge).toBe('twitter-tweet'); + }); + + it('inboxBadge returns string Channel::Telegram if isATwilioChannel and isATwitterInbox is false', () => { + const Component = { + render() {}, + mixins: [inboxMixin], + data() { + return { + inbox: { + channel_type: 'Channel::Telegram', + }, + }; + }, + }; + const wrapper = shallowMount(Component); + expect(wrapper.vm.isATwilioChannel).toBe(false); + expect(wrapper.vm.isATwitterInbox).toBe(false); + expect(wrapper.vm.channelType).toBe('Channel::Telegram'); + }); });