From 6f18f68a927127f8426fcd551f5945ea9dff211b Mon Sep 17 00:00:00 2001 From: Alex Birdsall Date: Fri, 18 Nov 2022 10:16:16 -0800 Subject: [PATCH 1/3] Clean up type definitions Also removes the "Error" from the `{setV,v}alidationErrorMessage` variables to pave the way for success feedback. --- airbyte-webapp/src/packages/cloud/services/dbtCloud.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts b/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts index 9a816e0793e84..6b036cf26099c 100644 --- a/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts +++ b/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts @@ -64,6 +64,8 @@ export const isSameJob = (remoteJob: DbtCloudJobInfo, savedJob: DbtCloudJob): bo type ServiceToken = string; +type ServiceToken = string; + export const useSubmitDbtCloudIntegrationConfig = () => { const { workspaceId } = useCurrentWorkspace(); const { mutateAsync: updateWorkspace } = useUpdateWorkspace(); From d5968645db4b2980990fd40931970093ae3f6ba2 Mon Sep 17 00:00:00 2001 From: Alex Birdsall Date: Fri, 18 Nov 2022 10:29:37 -0800 Subject: [PATCH 2/3] Show success message and clear form on successful dbt cloud token submission --- airbyte-webapp/src/packages/cloud/locales/en.json | 1 + .../settings/integrations/DbtCloudSettingsView.tsx | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/airbyte-webapp/src/packages/cloud/locales/en.json b/airbyte-webapp/src/packages/cloud/locales/en.json index bee11a4fa0b40..ee807fe061472 100644 --- a/airbyte-webapp/src/packages/cloud/locales/en.json +++ b/airbyte-webapp/src/packages/cloud/locales/en.json @@ -104,6 +104,7 @@ "settings.integrationSettings.dbtCloudSettings.form.singleTenantUrl": "Single-tenant URL", "settings.integrationSettings.dbtCloudSettings.form.testConnection": "Test connection", "settings.integrationSettings.dbtCloudSettings.form.submit": "Save changes", + "settings.integrationSettings.dbtCloudSettings.form.success": "Service Token saved successfully", "settings.generalSettings": "General Settings", "settings.generalSettings.changeWorkspace": "Change Workspace", "settings.generalSettings.form.name.label": "Workspace name", diff --git a/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx b/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx index 9546b37c0427a..96a3731305183 100644 --- a/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx +++ b/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx @@ -1,6 +1,6 @@ import { Field, FieldProps, Form, Formik } from "formik"; import React, { useState } from "react"; -import { FormattedMessage } from "react-intl"; +import { FormattedMessage, useIntl } from "react-intl"; import { LabeledInput } from "components/LabeledInput"; import { Button } from "components/ui/Button"; @@ -11,6 +11,7 @@ import { Content, SettingsCard } from "pages/SettingsPage/pages/SettingsComponen import styles from "./DbtCloudSettingsView.module.scss"; export const DbtCloudSettingsView: React.FC = () => { + const { formatMessage } = useIntl(); const { mutate: submitDbtCloudIntegrationConfig, isLoading } = useSubmitDbtCloudIntegrationConfig(); const [hasValidationError, setHasValidationError] = useState(false); const [validationMessage, setValidationMessage] = useState(""); @@ -21,7 +22,7 @@ export const DbtCloudSettingsView: React.FC = () => { initialValues={{ serviceToken: "", }} - onSubmit={({ serviceToken }) => { + onSubmit={({ serviceToken }, { resetForm }) => { setHasValidationError(false); return submitDbtCloudIntegrationConfig(serviceToken, { onError: (e) => { @@ -29,7 +30,12 @@ export const DbtCloudSettingsView: React.FC = () => { setValidationMessage(e.message.replace("Internal Server Error: ", "")); }, - onSuccess: () => setValidationMessage(""), + onSuccess: () => { + setValidationMessage( + formatMessage({ id: "settings.integrationSettings.dbtCloudSettings.form.success" }) + ); + resetForm(); + }, }); }} > From 9f3bc054a60f15207a3763636626da148beb5c25 Mon Sep 17 00:00:00 2001 From: Alex Birdsall Date: Fri, 18 Nov 2022 10:48:11 -0800 Subject: [PATCH 3/3] Always clear form error state and message in sync --- airbyte-webapp/src/packages/cloud/services/dbtCloud.ts | 2 -- .../cloud/views/settings/integrations/DbtCloudSettingsView.tsx | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts b/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts index 6b036cf26099c..9a816e0793e84 100644 --- a/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts +++ b/airbyte-webapp/src/packages/cloud/services/dbtCloud.ts @@ -64,8 +64,6 @@ export const isSameJob = (remoteJob: DbtCloudJobInfo, savedJob: DbtCloudJob): bo type ServiceToken = string; -type ServiceToken = string; - export const useSubmitDbtCloudIntegrationConfig = () => { const { workspaceId } = useCurrentWorkspace(); const { mutateAsync: updateWorkspace } = useUpdateWorkspace(); diff --git a/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx b/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx index 96a3731305183..e8a34d1764591 100644 --- a/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx +++ b/airbyte-webapp/src/packages/cloud/views/settings/integrations/DbtCloudSettingsView.tsx @@ -24,6 +24,7 @@ export const DbtCloudSettingsView: React.FC = () => { }} onSubmit={({ serviceToken }, { resetForm }) => { setHasValidationError(false); + setValidationMessage(""); return submitDbtCloudIntegrationConfig(serviceToken, { onError: (e) => { setHasValidationError(true);