committed by
GitHub
16 changed files with 130 additions and 46 deletions
@ -0,0 +1,72 @@ |
|||||
|
import React, { useState } from 'react'; |
||||
|
|
||||
|
import { AlertDialog, AlertDialogBody, AlertDialogContent, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, Button, useToast } from '@chakra-ui/react'; |
||||
|
import { useForm } from 'react-hook-form'; |
||||
|
|
||||
|
interface DeleteProps { |
||||
|
isOpen: boolean; |
||||
|
onClose: () => void; |
||||
|
} |
||||
|
|
||||
|
const DeleteConfirmation: React.FC<DeleteProps> = ({ isOpen, onClose }) => { |
||||
|
const toast = useToast(); |
||||
|
const cancelRef = React.useRef<HTMLButtonElement | null>(null); |
||||
|
const [isLoading, setIsLoading] = useState(false); |
||||
|
const { handleSubmit } = useForm(); |
||||
|
|
||||
|
const onSubmit = async () => { |
||||
|
setIsLoading(true); |
||||
|
try { |
||||
|
// TODO: Delete user account when API is ready
|
||||
|
onClose(); |
||||
|
} catch (err) { |
||||
|
toast({ |
||||
|
title: "An error occurred.", |
||||
|
description: `An error occurred while deleting your account.`, |
||||
|
status: "error", |
||||
|
isClosable: true, |
||||
|
}); |
||||
|
} finally { |
||||
|
setIsLoading(false); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return ( |
||||
|
<> |
||||
|
<AlertDialog |
||||
|
isOpen={isOpen} |
||||
|
onClose={onClose} |
||||
|
leastDestructiveRef={cancelRef} |
||||
|
size={{ base: "sm", md: "md" }} |
||||
|
isCentered |
||||
|
> |
||||
|
<AlertDialogOverlay> |
||||
|
<AlertDialogContent as="form" onSubmit={handleSubmit(onSubmit)}> |
||||
|
<AlertDialogHeader> |
||||
|
Confirmation Required |
||||
|
</AlertDialogHeader> |
||||
|
|
||||
|
<AlertDialogBody> |
||||
|
All your account data will be <b>permanently deleted.</b> If you're sure, please click <b>'Confirm'</b> to proceed. |
||||
|
</AlertDialogBody> |
||||
|
|
||||
|
<AlertDialogFooter gap={3}> |
||||
|
<Button bg="ui.danger" color="white" _hover={{ opacity: 0.8 }} type="submit" isLoading={isLoading}> |
||||
|
Confirm |
||||
|
</Button> |
||||
|
<Button ref={cancelRef} onClick={onClose} isDisabled={isLoading}> |
||||
|
Cancel |
||||
|
</Button> |
||||
|
</AlertDialogFooter> |
||||
|
</AlertDialogContent> |
||||
|
</AlertDialogOverlay> |
||||
|
</AlertDialog > |
||||
|
</> |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
export default DeleteConfirmation; |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
Loading…
Reference in new issue