diff --git a/app/javascript/dashboard/components-next/message/Message.vue b/app/javascript/dashboard/components-next/message/Message.vue index 586a4b4cb..dd655d0cc 100644 --- a/app/javascript/dashboard/components-next/message/Message.vue +++ b/app/javascript/dashboard/components-next/message/Message.vue @@ -131,6 +131,8 @@ const props = defineProps({ sourceId: { type: String, default: '' }, // eslint-disable-line vue/no-unused-properties }); +const emit = defineEmits(['retry']); + const contextMenuPosition = ref({}); const showBackgroundHighlight = ref(false); const showContextMenu = ref(false); @@ -524,6 +526,7 @@ provideMessageContext({ class="[grid-area:meta]" :class="flexOrientationClass" :error="contentAttributes.externalError" + @retry="emit('retry')" />
diff --git a/app/javascript/dashboard/components-next/message/MessageError.vue b/app/javascript/dashboard/components-next/message/MessageError.vue index d3a03e746..cd17c1e3f 100644 --- a/app/javascript/dashboard/components-next/message/MessageError.vue +++ b/app/javascript/dashboard/components-next/message/MessageError.vue @@ -1,16 +1,22 @@ diff --git a/app/javascript/dashboard/components-next/message/MessageList.vue b/app/javascript/dashboard/components-next/message/MessageList.vue index 44b317c56..4c4fe1a1d 100644 --- a/app/javascript/dashboard/components-next/message/MessageList.vue +++ b/app/javascript/dashboard/components-next/message/MessageList.vue @@ -37,6 +37,8 @@ const props = defineProps({ }, }); +const emit = defineEmits(['retry']); + const allMessages = computed(() => { return useCamelCase(props.messages, { deep: true }); }); @@ -113,6 +115,7 @@ const getInReplyToMessage = parentMessage => { :inbox-supports-reply-to="inboxSupportsReplyTo" :current-user-id="currentUserId" data-clarity-mask="True" + @retry="emit('retry', message)" /> diff --git a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue index 1f850cd74..3cb46c05f 100644 --- a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue +++ b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue @@ -4,6 +4,7 @@ import { ref, provide } from 'vue'; import { useConfig } from 'dashboard/composables/useConfig'; import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; import { useAI } from 'dashboard/composables/useAI'; +import { useSnakeCase } from 'dashboard/composables/useTransformKeys'; // components import ReplyBox from './ReplyBox.vue'; @@ -437,6 +438,11 @@ export default { makeMessagesRead() { this.$store.dispatch('markMessagesRead', { id: this.currentChat.id }); }, + async handleMessageRetry(message) { + if (!message) return; + const payload = useSnakeCase(message); + await this.$store.dispatch('sendMessageWithData', payload); + }, }, }; @@ -465,6 +471,7 @@ export default { :is-an-email-channel="isAnEmailChannel" :inbox-supports-reply-to="inboxSupportsReplyTo" :messages="getMessages" + @retry="handleMessageRetry" >