import React from 'react'; import { AlertDialog, AlertDialogBody, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, Button } from '@chakra-ui/react'; import { useForm } from 'react-hook-form'; import { useMutation, useQueryClient } from 'react-query'; import { ApiError, UserOut, UsersService } from '../../client'; import useAuth from '../../hooks/useAuth'; import useCustomToast from '../../hooks/useCustomToast'; interface DeleteProps { isOpen: boolean; onClose: () => void; } const DeleteConfirmation: React.FC = ({ isOpen, onClose }) => { const queryClient = useQueryClient(); const showToast = useCustomToast(); const cancelRef = React.useRef(null); const { handleSubmit, formState: { isSubmitting } } = useForm(); const currentUser = queryClient.getQueryData('currentUser'); const { logout } = useAuth(); const deleteCurrentUser = async (id: number) => { await UsersService.deleteUser({ userId: id }); } const mutation = useMutation(deleteCurrentUser, { onSuccess: () => { showToast('Success', 'Your account has been successfully deleted.', 'success'); logout(); onClose(); }, onError: (err: ApiError) => { const errDetail = err.body.detail; showToast('Something went wrong.', `${errDetail}`, 'error'); }, onSettled: () => { queryClient.invalidateQueries('currentUser'); } }) const onSubmit = async () => { mutation.mutate(currentUser!.id); } return ( <> Confirmation Required All your account data will be permanently deleted. If you are sure, please click 'Confirm' to proceed. ) } export default DeleteConfirmation;