diff --git a/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx b/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx index d2b9390fc..0b862908c 100644 --- a/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx +++ b/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx @@ -1,16 +1,17 @@ import type { Connector, ConnectorResponse, ConnectorMetadata } from '@logto/schemas'; import { ConnectorType } from '@logto/schemas'; -import { useMemo } from 'react'; +import { useEffect, useMemo } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; import { useTranslation } from 'react-i18next'; +import { useParams } from 'react-router-dom'; -import Button from '@/components/Button'; import CodeEditor from '@/components/CodeEditor'; +import DetailsForm from '@/components/DetailsForm'; +import FormCard from '@/components/FormCard'; import FormField from '@/components/FormField'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; import useApi from '@/hooks/use-api'; -import * as detailsStyles from '@/scss/details.module.scss'; import { safeParseJson } from '@/utilities/json'; import * as styles from '../index.module.scss'; @@ -24,15 +25,15 @@ type Props = { const ConnectorContent = ({ isDeleted, connectorData, onConnectorUpdated }: Props) => { const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); + const { connectorId } = useParams(); const api = useApi(); - const methods = useForm<{ configJson: string }>({ reValidateMode: 'onBlur' }); const { control, formState: { isSubmitting, isDirty }, handleSubmit, watch, reset, - } = methods; + } = useForm<{ configJson: string }>({ reValidateMode: 'onBlur' }); const defaultConfig = useMemo(() => { const hasData = Object.keys(connectorData.config).length > 0; @@ -40,6 +41,10 @@ const ConnectorContent = ({ isDeleted, connectorData, onConnectorUpdated }: Prop return hasData ? JSON.stringify(connectorData.config, null, 2) : connectorData.configTemplate; }, [connectorData]); + useEffect(() => { + reset(); + }, [connectorId, reset]); + const onSubmit = handleSubmit(async ({ configJson }) => { if (!configJson) { toast.error(t('connector_details.save_error_empty_config')); @@ -66,8 +71,16 @@ const ConnectorContent = ({ isDeleted, connectorData, onConnectorUpdated }: Prop return ( <> -