import { useFlashKey } from '@/util/useFlash' import { FormEvent } from 'react' import { useTranslation } from 'react-i18next' import { KeyedMutator } from 'swr' import useSWRMutation from 'swr/mutation' import deleteAddress from '@/api/admin/addressPools/addresses/deleteAddress' import { AddressResponse } from '@/api/admin/nodes/addresses/getAddresses' import { Address } from '@/api/server/getServer' import FlashMessageRender from '@/components/elements/FlashMessageRenderer' import Modal from '@/components/elements/Modal' interface Props { address: Address | null onClose: () => void mutate: KeyedMutator } const DeleteAddressModal = ({ address, onClose, mutate }: Props) => { const { t } = useTranslation('admin.addressPools.addresses') const { t: tStrings } = useTranslation('strings') const { clearFlashes, clearAndAddHttpError } = useFlashKey( `admin.addressPools.${address?.addressPoolId}.addresses.${address?.id}.delete` ) const { trigger, isMutating } = useSWRMutation( [ 'admin.address-pools.addresses.delete', address?.addressPoolId, address?.id, ], async () => { clearFlashes() try { await deleteAddress(address!.addressPoolId, address!.id) mutate(data => { if (!data) return data return { ...data, items: data.items.filter( item => item.id !== address!.id ), } }, false) onClose() } catch (e) { clearAndAddHttpError(e as Error) throw e } } ) const submit = (e: FormEvent) => { e.preventDefault() trigger() } return ( {t('delete_modal.title')}
{t('delete_modal.description', { address: address?.address, })} {tStrings('cancel')} {tStrings('delete')}
) } export default DeleteAddressModal