feat: Add duplicate workflow error handler (#4616)

* feat: Add duplicate workflow error handler

* refactor: Change translation string for existing duplicate workflow error
This commit is contained in:
Alex Grozav 2022-11-17 15:19:10 +02:00 committed by GitHub
parent b35172e442
commit f7a9ef9116
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 25 deletions

View file

@ -110,8 +110,8 @@ export default mixins(showMessage, workflowHelpers, restApi).extend({
const name = this.name.trim();
if (!name) {
this.$showMessage({
title: this.$locale.baseText('duplicateWorkflowDialog.showMessage.title'),
message: this.$locale.baseText('duplicateWorkflowDialog.showMessage.message'),
title: this.$locale.baseText('duplicateWorkflowDialog.errors.missingName.title'),
message: this.$locale.baseText('duplicateWorkflowDialog.errors.missingName.message'),
type: "error",
});
@ -122,30 +122,46 @@ export default mixins(showMessage, workflowHelpers, restApi).extend({
this.isSaving = true;
let workflowToUpdate: IWorkflowDataUpdate | undefined;
if (currentWorkflowId !== PLACEHOLDER_EMPTY_WORKFLOW_ID) {
const { createdAt, updatedAt, ...workflow } = await this.restApi().getWorkflow(this.data.id);
workflowToUpdate = workflow;
}
try {
let workflowToUpdate: IWorkflowDataUpdate | undefined;
if (currentWorkflowId !== PLACEHOLDER_EMPTY_WORKFLOW_ID) {
const { createdAt, updatedAt, ...workflow } = await this.restApi().getWorkflow(this.data.id);
workflowToUpdate = workflow;
}
const saved = await this.saveAsNewWorkflow({
name,
data: workflowToUpdate,
tags: this.currentTagIds,
resetWebhookUrls: true,
openInNewWindow: true,
resetNodeIds: true,
});
if (saved) {
this.closeDialog();
this.$telemetry.track('User duplicated workflow', {
old_workflow_id: currentWorkflowId,
workflow_id: this.data.id,
const saved = await this.saveAsNewWorkflow({
name,
data: workflowToUpdate,
tags: this.currentTagIds,
resetWebhookUrls: true,
openInNewWindow: true,
resetNodeIds: true,
});
}
this.isSaving = false;
if (saved) {
this.closeDialog();
this.$telemetry.track('User duplicated workflow', {
old_workflow_id: currentWorkflowId,
workflow_id: this.data.id,
});
}
} catch (error) {
if (error.httpStatusCode === 403) {
error.message = this.$locale.baseText('duplicateWorkflowDialog.errors.forbidden.message');
this.$showError(
error,
this.$locale.baseText('duplicateWorkflowDialog.errors.forbidden.title'),
);
} else {
this.$showError(
error,
this.$locale.baseText('duplicateWorkflowDialog.errors.generic.title'),
);
}
} finally {
this.isSaving = false;
}
},
closeDialog(): void {
this.modalBus.$emit("close");

View file

@ -375,8 +375,11 @@
"duplicateWorkflowDialog.duplicateWorkflow": "Duplicate Workflow",
"duplicateWorkflowDialog.enterWorkflowName": "Enter workflow name",
"duplicateWorkflowDialog.save": "@:_reusableBaseText.save",
"duplicateWorkflowDialog.showMessage.message": "Please enter a name.",
"duplicateWorkflowDialog.showMessage.title": "Name missing",
"duplicateWorkflowDialog.errors.missingName.title": "Name missing",
"duplicateWorkflowDialog.errors.missingName.message": "Please enter a name.",
"duplicateWorkflowDialog.errors.forbidden.title": "Duplicate workflow failed",
"duplicateWorkflowDialog.errors.forbidden.message": "This action is forbidden. Do you have the correct permissions?",
"duplicateWorkflowDialog.errors.generic.title": "Duplicate workflow failed",
"error": "Error",
"error.goBack": "Go back",
"error.pageNotFound": "Oops, couldnt find that",