mirror of
https://github.com/logto-io/logto.git
synced 2025-03-10 22:22:45 -05:00
refactor(console): reorg connector-related files (#4071)
This commit is contained in:
parent
e9c2c9a6de
commit
4122056145
41 changed files with 66 additions and 78 deletions
|
@ -12,12 +12,11 @@ import Select from '@/ds-components/Select';
|
|||
import TextInput from '@/ds-components/TextInput';
|
||||
import TextLink from '@/ds-components/TextLink';
|
||||
import useDocumentationUrl from '@/hooks/use-documentation-url';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { SyncProfileMode } from '@/types/connector';
|
||||
import { uriValidator } from '@/utils/validator';
|
||||
|
||||
import type { ConnectorFormType } from '../../types';
|
||||
import { SyncProfileMode } from '../../types';
|
||||
|
||||
import * as styles from './BasicForm.module.scss';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
isAllowEditTarget?: boolean;
|
|
@ -11,17 +11,16 @@ import Select from '@/ds-components/Select';
|
|||
import Switch from '@/ds-components/Switch';
|
||||
import TextInput from '@/ds-components/TextInput';
|
||||
import Textarea from '@/ds-components/Textarea';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { jsonValidator } from '@/utils/validator';
|
||||
|
||||
import type { ConnectorFormType } from '../../types';
|
||||
|
||||
import * as styles from './ConfigForm.module.scss';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
formItems: ConnectorConfigFormItem[];
|
||||
};
|
||||
|
||||
function ConfigForm({ formItems }: Props) {
|
||||
function ConfigFormFields({ formItems }: Props) {
|
||||
const {
|
||||
watch,
|
||||
register,
|
||||
|
@ -163,4 +162,4 @@ function ConfigForm({ formItems }: Props) {
|
|||
);
|
||||
}
|
||||
|
||||
export default ConfigForm;
|
||||
export default ConfigFormFields;
|
|
@ -11,13 +11,12 @@ import CopyToClipboard from '@/ds-components/CopyToClipboard';
|
|||
import DynamicT from '@/ds-components/DynamicT';
|
||||
import FormField from '@/ds-components/FormField';
|
||||
import useCustomDomain from '@/hooks/use-custom-domain';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { applyDomain } from '@/utils/domain';
|
||||
import { jsonValidator } from '@/utils/validator';
|
||||
|
||||
import type { ConnectorFormType } from '../../types';
|
||||
import ConfigFormItems from '../ConfigForm';
|
||||
|
||||
import * as styles from './ConfigForm.module.scss';
|
||||
import ConfigFormFields from './ConfigFormFields';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
formItems?: ConnectorConfigFormItem[];
|
||||
|
@ -66,7 +65,7 @@ function ConfigForm({ formItems, className, connectorId, connectorType }: Props)
|
|||
</FormField>
|
||||
)}
|
||||
{formItems ? (
|
||||
<ConfigFormItems formItems={formItems} />
|
||||
<ConfigFormFields formItems={formItems} />
|
||||
) : (
|
||||
<FormField title="connectors.guide.config">
|
||||
<Controller
|
|
@ -27,7 +27,7 @@ type FormData = {
|
|||
sendTo: string;
|
||||
};
|
||||
|
||||
function SenderTester({ connectorFactoryId, connectorType, className, parse }: Props) {
|
||||
function ConnectorTester({ connectorFactoryId, connectorType, className, parse }: Props) {
|
||||
const [showTooltip, setShowTooltip] = useState(false);
|
||||
const {
|
||||
handleSubmit,
|
||||
|
@ -116,4 +116,4 @@ function SenderTester({ connectorFactoryId, connectorType, className, parse }: P
|
|||
);
|
||||
}
|
||||
|
||||
export default SenderTester;
|
||||
export default ConnectorTester;
|
|
@ -2,8 +2,8 @@ import type { ConnectorResponse } from '@logto/schemas';
|
|||
import { toast } from 'react-hot-toast';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { parseFormConfig } from '@/pages/Connectors/components/ConnectorForm/utils';
|
||||
import type { ConnectorFormType } from '@/pages/Connectors/types';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { parseFormConfig } from '@/utils/connector-form';
|
||||
import { safeParseJson } from '@/utils/json';
|
||||
|
||||
const useJsonStringConfigParser = () => {
|
|
@ -7,21 +7,20 @@ import { FormProvider, useForm } from 'react-hook-form';
|
|||
import { toast } from 'react-hot-toast';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
import BasicForm from '@/components/ConnectorForm/BasicForm';
|
||||
import ConfigForm from '@/components/ConnectorForm/ConfigForm';
|
||||
import ConnectorTester from '@/components/ConnectorTester';
|
||||
import DetailsForm from '@/components/DetailsForm';
|
||||
import FormCard from '@/components/FormCard';
|
||||
import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal';
|
||||
import useApi from '@/hooks/use-api';
|
||||
import { useConnectorFormConfigParser } from '@/hooks/use-connector-form-config-parser';
|
||||
import useDocumentationUrl from '@/hooks/use-documentation-url';
|
||||
import BasicForm from '@/pages/Connectors/components/ConnectorForm/BasicForm';
|
||||
import ConfigForm from '@/pages/Connectors/components/ConnectorForm/ConfigForm';
|
||||
import { useConnectorFormConfigParser } from '@/pages/Connectors/components/ConnectorForm/hooks';
|
||||
import { initFormData } from '@/pages/Connectors/components/ConnectorForm/utils';
|
||||
import type { ConnectorFormType } from '@/pages/Connectors/types';
|
||||
import { SyncProfileMode } from '@/pages/Connectors/types';
|
||||
import { SyncProfileMode } from '@/types/connector';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { initFormData } from '@/utils/connector-form';
|
||||
import { trySubmitSafe } from '@/utils/form';
|
||||
|
||||
import SenderTester from './SenderTester';
|
||||
|
||||
type Props = {
|
||||
isDeleted: boolean;
|
||||
connectorData: ConnectorResponse;
|
||||
|
@ -139,7 +138,7 @@ function ConnectorContent({ isDeleted, connectorData, onConnectorUpdated }: Prop
|
|||
{/* Tell typescript that the connectorType is Email or Sms */}
|
||||
{connectorData.type !== ConnectorType.Social && (
|
||||
<FormCard title="connector_details.test_connection">
|
||||
<SenderTester
|
||||
<ConnectorTester
|
||||
connectorFactoryId={connectorData.connectorId}
|
||||
connectorType={connectorData.type}
|
||||
parse={() => configParser(watch(), connectorData.formItems)}
|
|
@ -11,6 +11,7 @@ import Delete from '@/assets/icons/delete.svg';
|
|||
import More from '@/assets/icons/more.svg';
|
||||
import Reset from '@/assets/icons/reset.svg';
|
||||
import ConnectorLogo from '@/components/ConnectorLogo';
|
||||
import DeleteConnectorConfirmModal from '@/components/DeleteConnectorConfirmModal';
|
||||
import DetailsPage from '@/components/DetailsPage';
|
||||
import Drawer from '@/components/Drawer';
|
||||
import Markdown from '@/components/Markdown';
|
||||
|
@ -27,12 +28,11 @@ import type { RequestError } from '@/hooks/use-api';
|
|||
import useApi from '@/hooks/use-api';
|
||||
import useConnectorInUse from '@/hooks/use-connector-in-use';
|
||||
|
||||
import CreateForm from '../Connectors/components/CreateForm';
|
||||
import CreateForm from '../Connectors/CreateForm';
|
||||
|
||||
import ConnectorContent from './components/ConnectorContent';
|
||||
import ConnectorTabs from './components/ConnectorTabs';
|
||||
import ConnectorTypeName from './components/ConnectorTypeName';
|
||||
import DeleteConnectorConfirmModal from './components/DeleteConnectorConfirmModal';
|
||||
import ConnectorContent from './ConnectorContent';
|
||||
import ConnectorTabs from './ConnectorTabs';
|
||||
import ConnectorTypeName from './ConnectorTypeName';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
// TODO: refactor path-related operation utils in both Connectors and ConnectorDetails page
|
||||
|
|
|
@ -5,11 +5,11 @@ import { useTranslation } from 'react-i18next';
|
|||
import { useSWRConfig } from 'swr';
|
||||
|
||||
import Delete from '@/assets/icons/delete.svg';
|
||||
import DeleteConnectorConfirmModal from '@/components/DeleteConnectorConfirmModal';
|
||||
import IconButton from '@/ds-components/IconButton';
|
||||
import { Tooltip } from '@/ds-components/Tip';
|
||||
import useApi from '@/hooks/use-api';
|
||||
import useConnectorInUse from '@/hooks/use-connector-in-use';
|
||||
import DeleteConnectorConfirmModal from '@/pages/ConnectorDetails/components/DeleteConnectorConfirmModal';
|
||||
import type { ConnectorGroup } from '@/types/connector';
|
||||
|
||||
type Props = {
|
|
@ -6,7 +6,7 @@ import { connectorPlatformLabel } from '@/consts/connectors';
|
|||
import RadioGroup, { Radio } from '@/ds-components/RadioGroup';
|
||||
import type { ConnectorGroup } from '@/types/connector';
|
||||
|
||||
import * as styles from './PlatformSelector.module.scss';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
type Props = {
|
||||
connectorGroup: ConnectorGroup<ConnectorFactoryResponse & { added: boolean }>;
|
|
@ -1,7 +1,8 @@
|
|||
import classNames from 'classnames';
|
||||
|
||||
import * as styles from './Skeleton.module.scss';
|
||||
import * as layout from './index.module.scss';
|
||||
import * as layout from '../index.module.scss';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
function Skeleton() {
|
||||
return (
|
|
@ -13,7 +13,7 @@ import RadioGroup, { Radio } from '@/ds-components/RadioGroup';
|
|||
import type { RequestError } from '@/hooks/use-api';
|
||||
import * as modalStyles from '@/scss/modal.module.scss';
|
||||
|
||||
import { getConnectorGroups } from '../../utils';
|
||||
import { getConnectorGroups } from '../utils';
|
||||
|
||||
import PlatformSelector from './PlatformSelector';
|
||||
import Skeleton from './Skeleton';
|
|
@ -13,6 +13,9 @@ import Modal from 'react-modal';
|
|||
import { useNavigate } from 'react-router-dom';
|
||||
|
||||
import Close from '@/assets/icons/close.svg';
|
||||
import BasicForm from '@/components/ConnectorForm/BasicForm';
|
||||
import ConfigForm from '@/components/ConnectorForm/ConfigForm';
|
||||
import ConnectorTester from '@/components/ConnectorTester';
|
||||
import Markdown from '@/components/Markdown';
|
||||
import { ConnectorsTabs } from '@/consts/page-tabs';
|
||||
import Button from '@/ds-components/Button';
|
||||
|
@ -22,17 +25,14 @@ import IconButton from '@/ds-components/IconButton';
|
|||
import OverlayScrollbar from '@/ds-components/OverlayScrollbar';
|
||||
import useApi from '@/hooks/use-api';
|
||||
import useConfigs from '@/hooks/use-configs';
|
||||
import SenderTester from '@/pages/ConnectorDetails/components/SenderTester';
|
||||
import { useConnectorFormConfigParser } from '@/hooks/use-connector-form-config-parser';
|
||||
import * as modalStyles from '@/scss/modal.module.scss';
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { SyncProfileMode } from '@/types/connector';
|
||||
import { initFormData } from '@/utils/connector-form';
|
||||
import { trySubmitSafe } from '@/utils/form';
|
||||
|
||||
import type { ConnectorFormType } from '../../types';
|
||||
import { SyncProfileMode } from '../../types';
|
||||
import { splitMarkdownByTitle } from '../../utils';
|
||||
import BasicForm from '../ConnectorForm/BasicForm';
|
||||
import ConfigForm from '../ConnectorForm/ConfigForm';
|
||||
import { useConnectorFormConfigParser } from '../ConnectorForm/hooks';
|
||||
import { initFormData } from '../ConnectorForm/utils';
|
||||
import { splitMarkdownByTitle } from '../utils';
|
||||
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
|
@ -220,7 +220,7 @@ function Guide({ connector, onClose }: Props) {
|
|||
<div className={styles.number}>2</div>
|
||||
<div>{t('connectors.guide.test_connection')}</div>
|
||||
</div>
|
||||
<SenderTester
|
||||
<ConnectorTester
|
||||
connectorFactoryId={connectorId}
|
||||
connectorType={connectorType}
|
||||
parse={() => configParser(watch(), formItems)}
|
|
@ -1,9 +0,0 @@
|
|||
@use '@/scss/underscore' as _;
|
||||
|
||||
.tag {
|
||||
font: var(--font-label-3);
|
||||
background-color: var(--color-alert-container);
|
||||
padding: _.unit(0.5) _.unit(1.5);
|
||||
border-radius: 10px;
|
||||
user-select: none;
|
||||
}
|
|
@ -21,14 +21,14 @@ import useConnectorGroups from '@/hooks/use-connector-groups';
|
|||
import useDocumentationUrl from '@/hooks/use-documentation-url';
|
||||
import DemoConnectorNotice from '@/onboarding/components/DemoConnectorNotice';
|
||||
|
||||
import ConnectorDeleteButton from './components/ConnectorDeleteButton';
|
||||
import ConnectorName from './components/ConnectorName';
|
||||
import ConnectorStatus from './components/ConnectorStatus';
|
||||
import ConnectorStatusField from './components/ConnectorStatusField';
|
||||
import ConnectorTypeColumn from './components/ConnectorTypeColumn';
|
||||
import CreateForm from './components/CreateForm';
|
||||
import Guide from './components/Guide';
|
||||
import SignInExperienceSetupNotice from './components/SignInExperienceSetupNotice';
|
||||
import ConnectorDeleteButton from './ConnectorDeleteButton';
|
||||
import ConnectorName from './ConnectorName';
|
||||
import ConnectorStatus from './ConnectorStatus';
|
||||
import ConnectorStatusField from './ConnectorStatusField';
|
||||
import ConnectorTypeColumn from './ConnectorTypeColumn';
|
||||
import CreateForm from './CreateForm';
|
||||
import Guide from './Guide';
|
||||
import SignInExperienceSetupNotice from './SignInExperienceSetupNotice';
|
||||
import * as styles from './index.module.scss';
|
||||
|
||||
const basePathname = '/connectors';
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
export type ConnectorFormType = {
|
||||
config: string;
|
||||
name: string;
|
||||
logo: string;
|
||||
logoDark: string;
|
||||
target: string;
|
||||
syncProfile: SyncProfileMode;
|
||||
} & Record<string, unknown>; // Extend custom connector config form
|
||||
|
||||
export enum SyncProfileMode {
|
||||
OnlyAtRegister = 'OnlyAtRegister',
|
||||
EachSignIn = 'EachSignIn',
|
||||
}
|
|
@ -7,3 +7,17 @@ export type ConnectorGroup<T = ConnectorResponse> = Pick<
|
|||
id: string;
|
||||
connectors: T[];
|
||||
};
|
||||
|
||||
export enum SyncProfileMode {
|
||||
OnlyAtRegister = 'OnlyAtRegister',
|
||||
EachSignIn = 'EachSignIn',
|
||||
}
|
||||
|
||||
export type ConnectorFormType = {
|
||||
config: string;
|
||||
name: string;
|
||||
logo: string;
|
||||
logoDark: string;
|
||||
target: string;
|
||||
syncProfile: SyncProfileMode;
|
||||
} & Record<string, unknown>; // Extend custom connector config form
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
import type { ConnectorConfigFormItem } from '@logto/connector-kit';
|
||||
import { ConnectorConfigFormItemType } from '@logto/connector-kit';
|
||||
|
||||
import type { ConnectorFormType } from '@/types/connector';
|
||||
import { safeParseJson } from '@/utils/json';
|
||||
|
||||
import type { ConnectorFormType } from '../../types';
|
||||
|
||||
export const initFormData = (
|
||||
formItems: ConnectorConfigFormItem[],
|
||||
config?: Record<string, unknown>
|
Loading…
Add table
Reference in a new issue