+
import { computed, type Component } from 'vue';
-import BlockMessage from './BlockMessage.vue';
-import CodeDiffMessage from './CodeDiffMessage.vue';
-import ErrorMessage from './ErrorMessage.vue';
-import EventMessage from './EventMessage.vue';
-import TextMessage from './TextMessage.vue';
-import ToolMessage from './ToolMessage.vue';
+import { getSupportedMessageComponent } from './helpers';
import type { ChatUI, RatingFeedback } from '../../../types/assistant';
export interface Props {
@@ -31,25 +26,7 @@ const emit = defineEmits<{
}>();
const messageComponent = computed(() => {
- switch (props.message.type) {
- case 'text':
- return TextMessage;
- case 'block':
- return BlockMessage;
- case 'code-diff':
- return CodeDiffMessage;
- case 'error':
- return ErrorMessage;
- case 'event':
- return EventMessage;
- case 'tool':
- return ToolMessage;
- case 'agent-suggestion':
- case 'workflow-updated':
- return null;
- default:
- return null;
- }
+ return getSupportedMessageComponent(props.message.type);
});
diff --git a/packages/frontend/@n8n/design-system/src/components/AskAssistantChat/messages/helpers.ts b/packages/frontend/@n8n/design-system/src/components/AskAssistantChat/messages/helpers.ts
new file mode 100644
index 0000000000..3df2ecc073
--- /dev/null
+++ b/packages/frontend/@n8n/design-system/src/components/AskAssistantChat/messages/helpers.ts
@@ -0,0 +1,30 @@
+import type { ChatUI } from '@n8n/design-system/types';
+
+import BlockMessage from './BlockMessage.vue';
+import CodeDiffMessage from './CodeDiffMessage.vue';
+import ErrorMessage from './ErrorMessage.vue';
+import EventMessage from './EventMessage.vue';
+import TextMessage from './TextMessage.vue';
+import ToolMessage from './ToolMessage.vue';
+
+export function getSupportedMessageComponent(type: ChatUI.AssistantMessage['type']) {
+ switch (type) {
+ case 'text':
+ return TextMessage;
+ case 'block':
+ return BlockMessage;
+ case 'code-diff':
+ return CodeDiffMessage;
+ case 'error':
+ return ErrorMessage;
+ case 'event':
+ return EventMessage;
+ case 'tool':
+ return ToolMessage;
+ case 'agent-suggestion':
+ case 'workflow-updated':
+ return null;
+ default:
+ return null;
+ }
+}