diff --git a/app/javascript/widget/components/AgentTypingBubble.vue b/app/javascript/widget/components/AgentTypingBubble.vue
index fffca9f79..cdda7a84c 100644
--- a/app/javascript/widget/components/AgentTypingBubble.vue
+++ b/app/javascript/widget/components/AgentTypingBubble.vue
@@ -2,7 +2,7 @@
@@ -27,7 +27,7 @@ import AgentTypingBubble from 'widget/components/AgentTypingBubble.vue';
import DateSeparator from 'shared/components/DateSeparator.vue';
import Spinner from 'shared/components/Spinner.vue';
import darkModeMixin from 'widget/mixins/darkModeMixin';
-
+import { MESSAGE_TYPE } from 'shared/constants/messages';
import { mapActions, mapGetters } from 'vuex';
export default {
@@ -54,14 +54,26 @@ export default {
computed: {
...mapGetters({
earliestMessage: 'conversation/getEarliestMessage',
+ lastMessage: 'conversation/getLastMessage',
allMessagesLoaded: 'conversation/getAllMessagesLoaded',
isFetchingList: 'conversation/getIsFetchingList',
conversationSize: 'conversation/getConversationSize',
isAgentTyping: 'conversation/getIsAgentTyping',
+ conversationAttributes: 'conversationAttributes/getConversationParams',
}),
colorSchemeClass() {
return `${this.darkMode === 'dark' ? 'dark-scheme' : 'light-scheme'}`;
},
+ showStatusIndicator() {
+ const { status } = this.conversationAttributes;
+ const isConversationInPendingStatus = status === 'pending';
+ const isLastMessageIncoming =
+ this.lastMessage.message_type === MESSAGE_TYPE.INCOMING;
+ return (
+ this.isAgentTyping ||
+ (isConversationInPendingStatus && isLastMessageIncoming)
+ );
+ },
},
watch: {
allMessagesLoaded() {
diff --git a/app/javascript/widget/store/modules/conversation/getters.js b/app/javascript/widget/store/modules/conversation/getters.js
index 74e582348..151694b86 100644
--- a/app/javascript/widget/store/modules/conversation/getters.js
+++ b/app/javascript/widget/store/modules/conversation/getters.js
@@ -16,6 +16,13 @@ export const getters = {
}
return {};
},
+ getLastMessage: _state => {
+ const conversation = Object.values(_state.conversations);
+ if (conversation.length) {
+ return conversation[conversation.length - 1];
+ }
+ return {};
+ },
getGroupedConversation: _state => {
const conversationGroupedByDate = groupBy(
Object.values(_state.conversations),
diff --git a/enterprise/app/services/enterprise/message_templates/response_bot_service.rb b/enterprise/app/services/enterprise/message_templates/response_bot_service.rb
index 4082c3cb2..01c1eb832 100644
--- a/enterprise/app/services/enterprise/message_templates/response_bot_service.rb
+++ b/enterprise/app/services/enterprise/message_templates/response_bot_service.rb
@@ -61,9 +61,8 @@ class Enterprise::MessageTemplates::ResponseBotService
end
def create_messages(response, conversation)
- response, article_ids = process_response_content(response)
+ response = process_response_content(response)
create_outgoing_message(response, conversation)
- create_outgoing_message_with_cards(article_ids, conversation) if article_ids.present?
end
def process_response_content(response)