From 5835e055d39921cdf2aa9799e427931bec8e5e2c Mon Sep 17 00:00:00 2001 From: Michael Auerswald Date: Thu, 23 Nov 2023 13:50:03 +0100 Subject: [PATCH] fix(editor): Show nice error when environment is not set up (#7778) Adds a nicer error message with a link for owners who press Push to Git without having a repository connected yet. --- .../middleware/sourceControlEnabledMiddleware.ee.ts | 9 ++++++++- .../src/components/MainHeader/WorkflowDetails.vue | 13 ++++++++++++- packages/editor-ui/src/plugins/i18n/locales/en.json | 2 ++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/environments/sourceControl/middleware/sourceControlEnabledMiddleware.ee.ts b/packages/cli/src/environments/sourceControl/middleware/sourceControlEnabledMiddleware.ee.ts index 271db3805a..2bf64f7ba9 100644 --- a/packages/cli/src/environments/sourceControl/middleware/sourceControlEnabledMiddleware.ee.ts +++ b/packages/cli/src/environments/sourceControl/middleware/sourceControlEnabledMiddleware.ee.ts @@ -8,7 +8,14 @@ export const sourceControlLicensedAndEnabledMiddleware: RequestHandler = (req, r if (sourceControlPreferencesService.isSourceControlLicensedAndEnabled()) { next(); } else { - res.status(401).json({ status: 'error', message: 'Unauthorized' }); + if (!sourceControlPreferencesService.isSourceControlConnected()) { + res.status(412).json({ + status: 'error', + message: 'source_control_not_connected', + }); + } else { + res.status(401).json({ status: 'error', message: 'Unauthorized' }); + } } }; diff --git a/packages/editor-ui/src/components/MainHeader/WorkflowDetails.vue b/packages/editor-ui/src/components/MainHeader/WorkflowDetails.vue index e1bebd8274..6c74525fac 100644 --- a/packages/editor-ui/src/components/MainHeader/WorkflowDetails.vue +++ b/packages/editor-ui/src/components/MainHeader/WorkflowDetails.vue @@ -593,7 +593,18 @@ export default defineComponent({ data: { eventBus: this.eventBus, status }, }); } catch (error) { - this.showError(error, this.$locale.baseText('error')); + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access + switch (error.message) { + case 'source_control_not_connected': + this.showError( + { ...error, message: '' }, + this.$locale.baseText('settings.sourceControl.error.not.connected.title'), + this.$locale.baseText('settings.sourceControl.error.not.connected.message'), + ); + break; + default: + this.showError(error, this.$locale.baseText('error')); + } } finally { this.stopLoading(); } diff --git a/packages/editor-ui/src/plugins/i18n/locales/en.json b/packages/editor-ui/src/plugins/i18n/locales/en.json index 102627a324..a717a30c5e 100644 --- a/packages/editor-ui/src/plugins/i18n/locales/en.json +++ b/packages/editor-ui/src/plugins/i18n/locales/en.json @@ -1654,6 +1654,8 @@ "settings.sourceControl.docs.setup.ssh.url": "https://docs.n8n.io/source-control-environments/setup/#step-3-set-up-a-deploy-key", "settings.sourceControl.docs.using.url": "https://docs.n8n.io/source-control-environments/using/", "settings.sourceControl.docs.using.pushPull.url": "https://docs.n8n.io/source-control-environments/using/push-pull", + "settings.sourceControl.error.not.connected.title": "Environments have not been enabled", + "settings.sourceControl.error.not.connected.message": "Please head over to environment settings to connect a git repository first to activate this functionality.", "showMessage.cancel": "@:_reusableBaseText.cancel", "settings.auditLogs.title": "Audit Logs", "settings.auditLogs.actionBox.title": "Available on the Enterprise plan",