import { useFlashKey } from '@/util/useFlash' import { FormEvent } from 'react' import { useTranslation } from 'react-i18next' import { KeyedMutator } from 'swr' import useSWRMutation from 'swr/mutation' import deleteAddressPool from '@/api/admin/addressPools/deleteAddressPool' import { AddressPool, AddressPoolResponse, } from '@/api/admin/addressPools/getAddressPools' import FlashMessageRender from '@/components/elements/FlashMessageRenderer' import MessageBox from '@/components/elements/MessageBox' import Modal from '@/components/elements/Modal' interface Props { pool: AddressPool | null onClose: () => void mutate: KeyedMutator } const CreatePoolModal = ({ pool, onClose, mutate }: Props) => { const { t } = useTranslation('admin.addressPools.index') const { t: tStrings } = useTranslation('strings') const { clearFlashes, clearAndAddHttpError } = useFlashKey( `admin.addressPools.${pool?.id}.delete` ) const { trigger, isMutating } = useSWRMutation( ['admin.address-pools.delete', pool?.id], async () => { clearFlashes() try { await deleteAddressPool(pool!.id) mutate(data => { if (!data) return data return { ...data, items: data.items.filter(item => item.id !== pool!.id), } }, false) onClose() } catch (e) { clearAndAddHttpError(e as Error) throw e } } ) const submit = (e: FormEvent) => { e.preventDefault() trigger() } return ( {t('delete_modal.title', { name: pool?.name })}
{pool ? ( pool.nodesCount > 0 ? ( {t('delete_modal.nodes_linked_error')} ) : null ) : null} {t('delete_modal.description')} {tStrings('cancel')} 0 : false} loading={isMutating} > {tStrings('delete')}
) } export default CreatePoolModal