fix: Prevent AI assistant session reset when workflow is saved (#10707)

This commit is contained in:
Milorad FIlipović 2024-09-06 11:06:51 +02:00 committed by GitHub
parent 4efcbc5936
commit 91d9be2066
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 32 additions and 2 deletions

View file

@ -1,3 +1,4 @@
import { SCHEDULE_TRIGGER_NODE_NAME } from '../constants';
import { NDV, WorkflowPage } from '../pages';
import { AIAssistant } from '../pages/features/ai-assistant';
@ -287,4 +288,18 @@ describe('AI Assistant::enabled', () => {
// Now, session should be reset
aiAssistant.getters.placeholderMessage().should('be.visible');
});
it('Should not reset assistant session when workflow is saved', () => {
cy.intercept('POST', '/rest/ai-assistant/chat', {
statusCode: 200,
fixture: 'aiAssistant/simple_message_response.json',
}).as('chatRequest');
wf.actions.addInitialNodeToCanvas(SCHEDULE_TRIGGER_NODE_NAME);
aiAssistant.actions.openChat();
aiAssistant.actions.sendMessage('Hello');
wf.actions.openNode(SCHEDULE_TRIGGER_NODE_NAME);
ndv.getters.nodeExecuteButton().click();
wf.getters.isWorkflowSaved();
aiAssistant.getters.placeholderMessage().should('not.exist');
});
});

View file

@ -63,6 +63,10 @@ const getSize = (size: string): number => sizes[size];
display: inline-flex;
justify-content: center;
align-items: center;
svg {
border-radius: 50%;
}
}
.empty {

View file

@ -1,5 +1,11 @@
import { chatWithAssistant, replaceCode } from '@/api/assistant';
import { VIEWS, EDITABLE_CANVAS_VIEWS, STORES, AI_ASSISTANT_EXPERIMENT } from '@/constants';
import {
VIEWS,
EDITABLE_CANVAS_VIEWS,
STORES,
AI_ASSISTANT_EXPERIMENT,
PLACEHOLDER_EMPTY_WORKFLOW_ID,
} from '@/constants';
import type { ChatRequest } from '@/types/assistant.types';
import type { ChatUI } from 'n8n-design-system/types/assistant';
import { defineStore } from 'pinia';
@ -116,7 +122,11 @@ export const useAssistantStore = defineStore(STORES.ASSISTANT, () => {
watch(route, () => {
const activeWorkflowId = workflowsStore.workflowId;
if (!currentSessionId.value || currentSessionWorkflowId.value === activeWorkflowId) {
if (
!currentSessionId.value ||
currentSessionWorkflowId.value === PLACEHOLDER_EMPTY_WORKFLOW_ID ||
currentSessionWorkflowId.value === activeWorkflowId
) {
return;
}
resetAssistantChat();
@ -276,6 +286,7 @@ export const useAssistantStore = defineStore(STORES.ASSISTANT, () => {
{
chat_session_id: currentSessionId.value,
task: isSupportChatSessionInProgress.value ? 'support' : 'error',
node_type: chatSessionError.value?.node.type,
},
{ withPostHog: true },
);