diff --git a/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-editor/elsa-workflow-editor.tsx b/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-editor/elsa-workflow-editor.tsx
index 84a357a4d..aa5845b4b 100644
--- a/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-editor/elsa-workflow-editor.tsx
+++ b/src/designer/elsa-workflows-studio/src/components/editors/workflow-editor/elsa-workflow-editor/elsa-workflow-editor.tsx
@@ -28,6 +28,9 @@ export class ElsaWorkflowDefinitionEditor {
@State() workflowDefinition: WorkflowDefinition;
@State() workflowModel: WorkflowModel;
@State() publishing: boolean;
+ @State() saving: boolean;
+ @State() saved: boolean;
+ @State() savingError: string;
el: HTMLElement;
designer: HTMLElsaDesignerTreeElement;
@@ -148,9 +151,21 @@ export class ElsaWorkflowDefinitionEditor {
})),
};
- workflowDefinition = await client.workflowDefinitionsApi.save(request);
- this.workflowDefinition = workflowDefinition;
- this.workflowModel = this.mapWorkflowModel(workflowDefinition);
+ this.saving = true;
+
+ try {
+ workflowDefinition = await client.workflowDefinitionsApi.save(request);
+ this.workflowDefinition = workflowDefinition;
+ this.workflowModel = this.mapWorkflowModel(workflowDefinition);
+ } catch (e) {
+ console.error(e);
+ this.savingError = e.message;
+ setTimeout(() => this.savingError = null, 2000);
+ } finally {
+ this.saving = false;
+ this.saved = true;
+ setTimeout(() => this.saved = false, 750);
+ }
}
mapWorkflowModel(workflowDefinition: WorkflowDefinition): WorkflowModel {
@@ -203,7 +218,6 @@ export class ElsaWorkflowDefinitionEditor {
{this.renderCanvas()}
{this.renderActivityPicker()}
{this.renderActivityEditor()}
-