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