mirror of
https://github.com/logto-io/logto.git
synced 2025-03-31 22:51:25 -05:00
feat(console): in-used connectors deletion alert (#2345)
This commit is contained in:
parent
22cb416713
commit
92b93e6e36
7 changed files with 47 additions and 8 deletions
|
@ -3,7 +3,7 @@ import { AppearanceMode, ConnectorType } from '@logto/schemas';
|
|||
import classNames from 'classnames';
|
||||
import { useState } from 'react';
|
||||
import { toast } from 'react-hot-toast';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { Trans, useTranslation } from 'react-i18next';
|
||||
import { useNavigate, useParams } from 'react-router-dom';
|
||||
import useSWR, { useSWRConfig } from 'swr';
|
||||
|
||||
|
@ -14,6 +14,7 @@ import Reset from '@/assets/images/reset.svg';
|
|||
import ActionMenu, { ActionMenuItem } from '@/components/ActionMenu';
|
||||
import Button from '@/components/Button';
|
||||
import Card from '@/components/Card';
|
||||
import ConfirmModal from '@/components/ConfirmModal';
|
||||
import CopyToClipboard from '@/components/CopyToClipboard';
|
||||
import DetailsSkeleton from '@/components/DetailsSkeleton';
|
||||
import Drawer from '@/components/Drawer';
|
||||
|
@ -49,6 +50,18 @@ const ConnectorDetails = () => {
|
|||
const api = useApi();
|
||||
const navigate = useNavigate();
|
||||
const theme = useTheme();
|
||||
const isSocial = data?.type === ConnectorType.Social;
|
||||
const [isDeleteAlertOpen, setIsDeleteAlertOpen] = useState(false);
|
||||
|
||||
const onDeleteClick = async () => {
|
||||
if (!isSocial || !inUse) {
|
||||
await handleDelete();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
setIsDeleteAlertOpen(true);
|
||||
};
|
||||
|
||||
const handleDelete = async () => {
|
||||
if (!connectorId) {
|
||||
|
@ -65,7 +78,7 @@ const ConnectorDetails = () => {
|
|||
await mutateGlobal('/api/connectors');
|
||||
setIsDeleted(true);
|
||||
|
||||
if (data?.type === ConnectorType.Social) {
|
||||
if (isSocial) {
|
||||
navigate(`/connectors/social`, { replace: true });
|
||||
} else {
|
||||
navigate(`/connectors`, { replace: true });
|
||||
|
@ -75,16 +88,14 @@ const ConnectorDetails = () => {
|
|||
return (
|
||||
<div className={detailsStyles.container}>
|
||||
<LinkButton
|
||||
to={data?.type === ConnectorType.Social ? '/connectors/social' : '/connectors'}
|
||||
to={isSocial ? '/connectors/social' : '/connectors'}
|
||||
icon={<Back />}
|
||||
title="connector_details.back_to_connectors"
|
||||
className={styles.backLink}
|
||||
/>
|
||||
{isLoading && <DetailsSkeleton />}
|
||||
{!data && error && <div>{`error occurred: ${error.body?.message ?? error.message}`}</div>}
|
||||
{data?.type === ConnectorType.Social && (
|
||||
<ConnectorTabs target={data.target} connectorId={data.id} />
|
||||
)}
|
||||
{isSocial && <ConnectorTabs target={data.target} connectorId={data.id} />}
|
||||
{data && (
|
||||
<Card className={styles.header}>
|
||||
<div className={styles.logoContainer}>
|
||||
|
@ -137,7 +148,7 @@ const ConnectorDetails = () => {
|
|||
buttonProps={{ icon: <More className={styles.moreIcon} />, size: 'large' }}
|
||||
title={t('general.more_options')}
|
||||
>
|
||||
{data.type !== ConnectorType.Social && (
|
||||
{!isSocial && (
|
||||
<ActionMenuItem
|
||||
icon={<Reset />}
|
||||
iconClassName={styles.resetIcon}
|
||||
|
@ -152,7 +163,7 @@ const ConnectorDetails = () => {
|
|||
)}
|
||||
</ActionMenuItem>
|
||||
)}
|
||||
<ActionMenuItem icon={<Delete />} type="danger" onClick={handleDelete}>
|
||||
<ActionMenuItem icon={<Delete />} type="danger" onClick={onDeleteClick}>
|
||||
{t('general.delete')}
|
||||
</ActionMenuItem>
|
||||
</ActionMenu>
|
||||
|
@ -183,6 +194,22 @@ const ConnectorDetails = () => {
|
|||
/>
|
||||
</Card>
|
||||
)}
|
||||
{data && (
|
||||
<ConfirmModal
|
||||
isOpen={isDeleteAlertOpen}
|
||||
confirmButtonText="general.delete"
|
||||
onCancel={() => {
|
||||
setIsDeleteAlertOpen(false);
|
||||
}}
|
||||
onConfirm={handleDelete}
|
||||
>
|
||||
<Trans
|
||||
t={t}
|
||||
i18nKey="connector_details.in_use_deletion_description"
|
||||
components={{ name: <UnnamedTrans resource={data.name} /> }}
|
||||
/>
|
||||
</ConfirmModal>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: 'Email connector',
|
||||
type_sms: 'SMS connector',
|
||||
type_social: 'Social connector',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.',
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: 'Connecteur Email',
|
||||
type_sms: 'Connecteur SMS',
|
||||
type_social: 'Connecteur Social',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: '이메일 연동',
|
||||
type_sms: 'SMS 연동',
|
||||
type_social: '소셜 연동',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: 'Conector de Email',
|
||||
type_sms: 'Conector de SMS',
|
||||
type_social: 'Conector Social',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: 'Eposta connectorı',
|
||||
type_sms: 'SMS connectorı',
|
||||
type_social: 'Social connector',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
|
@ -17,6 +17,8 @@ const connector_details = {
|
|||
type_email: '邮件连接器',
|
||||
type_sms: '短信连接器',
|
||||
type_social: '社交连接器',
|
||||
in_use_deletion_description:
|
||||
'This connector is in use in your sign in experience. By deleting, <name/> sign in experience will be deleted in sign in experience settings.', // UNTRANSLATED
|
||||
};
|
||||
|
||||
export default connector_details;
|
||||
|
|
Loading…
Add table
Reference in a new issue