import React, { useCallback } from 'react'; import type { IExternalAccountHasId } from '@growi/core'; import { useTranslation } from 'next-i18next'; import { Modal, ModalHeader, ModalBody, ModalFooter, } from 'reactstrap'; import { toastSuccess, toastError } from '~/client/util/toastr'; import { usePersonalSettings, useSWRxPersonalExternalAccounts } from '~/stores/personal-settings'; type Props = { isOpen: boolean, onClose: () => void, accountForDisassociate: IExternalAccountHasId, } const DisassociateModal = (props: Props): JSX.Element => { const { t } = useTranslation(); const { mutate: mutatePersonalExternalAccounts } = useSWRxPersonalExternalAccounts(); const { disassociateLdapAccount } = usePersonalSettings(); const { providerType, accountId } = props.accountForDisassociate; const disassociateAccountHandler = useCallback(async() => { try { await disassociateLdapAccount({ providerType, accountId }); props.onClose(); toastSuccess(t('security_settings.updated_general_security_setting')); } catch (err) { toastError(err); } if (mutatePersonalExternalAccounts != null) { mutatePersonalExternalAccounts(); } }, [accountId, disassociateLdapAccount, mutatePersonalExternalAccounts, props, providerType, t]); return ( {t('personal_settings.disassociate_external_account')} {/* eslint-disable-next-line react/no-danger */}

); }; export default DisassociateModal;