diff --git a/app/javascript/dashboard/components/widgets/conversation/Message.vue b/app/javascript/dashboard/components/widgets/conversation/Message.vue index 23db44ac7..4b374c16d 100644 --- a/app/javascript/dashboard/components/widgets/conversation/Message.vue +++ b/app/javascript/dashboard/components/widgets/conversation/Message.vue @@ -124,6 +124,7 @@ :message="data" @open="openContextMenu" @close="closeContextMenu" + @replyTo="handleReplyTo" /> @@ -188,6 +189,10 @@ export default { type: Boolean, default: false, }, + inboxSupportsReplyTo: { + type: Boolean, + default: false, + }, }, data() { return { @@ -269,6 +274,7 @@ export default { copy: this.hasText, delete: this.hasText || this.hasAttachments, cannedResponse: this.isOutgoing && this.hasText, + replyTo: !this.data.private && this.inboxSupportsReplyTo, }; }, contentAttributes() { @@ -494,6 +500,7 @@ export default { this.showContextMenu = false; this.contextMenuPosition = { x: null, y: null }; }, + handleReplyTo() {}, setupHighlightTimer() { if (Number(this.$route.query.messageId) !== Number(this.data.id)) { return; diff --git a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue index 38cba722a..d58742401 100644 --- a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue +++ b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue @@ -42,6 +42,7 @@ :is-a-whatsapp-channel="isAWhatsAppChannel" :has-instagram-story="hasInstagramStory" :is-web-widget-inbox="isAWebWidgetInbox" + :inbox-supports-reply-to="inboxSupportsReplyTo" />
  • @@ -110,7 +111,7 @@ import { mapGetters } from 'vuex'; import conversationMixin, { filterDuplicateSourceMessages, } from '../../../mixins/conversations'; -import inboxMixin from 'shared/mixins/inboxMixin'; +import inboxMixin, { INBOX_FEATURES } from 'shared/mixins/inboxMixin'; import configMixin from 'shared/mixins/configMixin'; import eventListenerMixins from 'shared/mixins/eventListenerMixins'; import aiMixin from 'dashboard/mixins/aiMixin'; @@ -123,6 +124,7 @@ import { LocalStorage } from 'shared/helpers/localStorage'; // constants import { BUS_EVENTS } from 'shared/constants/busEvents'; +import { FEATURE_FLAGS } from 'dashboard/featureFlags'; import { REPLY_POLICY } from 'shared/constants/links'; import wootConstants from 'dashboard/constants/globals'; import { LOCAL_STORAGE_KEYS } from 'dashboard/constants/localStorage'; @@ -164,12 +166,14 @@ export default { computed: { ...mapGetters({ + accountId: 'getCurrentAccountId', currentChat: 'getSelectedChat', allConversations: 'getAllConversations', inboxesList: 'inboxes/getInboxes', listLoadingStatus: 'getAllMessagesLoaded', loadingChatList: 'getChatListLoadingStatus', appIntegrations: 'integrations/getAppIntegrations', + isFeatureEnabledonAccount: 'accounts/isFeatureEnabledonAccount', currentAccountId: 'getCurrentAccountId', }), isOpen() { @@ -316,6 +320,15 @@ export default { unreadMessageCount() { return this.currentChat.unread_count || 0; }, + inboxSupportsReplyTo() { + return ( + this.inboxHasFeature(INBOX_FEATURES.REPLY_TO) && + this.isFeatureEnabledonAccount( + this.accountId, + FEATURE_FLAGS.MESSAGE_REPLY_TO + ) + ); + }, }, watch: { diff --git a/app/javascript/dashboard/featureFlags.js b/app/javascript/dashboard/featureFlags.js index 5f3a9ccbd..0da932e30 100644 --- a/app/javascript/dashboard/featureFlags.js +++ b/app/javascript/dashboard/featureFlags.js @@ -16,4 +16,5 @@ export const FEATURE_FLAGS = { TEAM_MANAGEMENT: 'team_management', VOICE_RECORDER: 'voice_recorder', AUDIT_LOGS: 'audit_logs', + MESSAGE_REPLY_TO: 'message_reply_to', }; diff --git a/app/javascript/dashboard/i18n/locale/en/conversation.json b/app/javascript/dashboard/i18n/locale/en/conversation.json index 68c43a28d..e6732e78c 100644 --- a/app/javascript/dashboard/i18n/locale/en/conversation.json +++ b/app/javascript/dashboard/i18n/locale/en/conversation.json @@ -194,6 +194,7 @@ }, "CONTEXT_MENU": { "COPY": "Copy", + "REPLY_TO": "Reply to this message", "DELETE": "Delete", "CREATE_A_CANNED_RESPONSE": "Add to canned responses", "TRANSLATE": "Translate", diff --git a/app/javascript/dashboard/modules/conversations/components/MessageContextMenu.vue b/app/javascript/dashboard/modules/conversations/components/MessageContextMenu.vue index 9d7b5565e..51e5e6a59 100644 --- a/app/javascript/dashboard/modules/conversations/components/MessageContextMenu.vue +++ b/app/javascript/dashboard/modules/conversations/components/MessageContextMenu.vue @@ -44,6 +44,15 @@ @close="handleClose" >