forked from aws-samples/aws-sdk-js-notes-app
-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathDeleteNoteButton.tsx
46 lines (40 loc) · 1.19 KB
/
DeleteNoteButton.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import React, { useState } from "react";
import { Button, Alert } from "react-bootstrap";
import { GATEWAY_URL } from "../config.json";
import { navigate } from "@reach/router";
import { ButtonSpinner } from "../components";
const DeleteNoteButton = (props: { noteId: string; attachment?: string }) => {
const { noteId, attachment } = props;
const [isDeleting, setIsDeleting] = useState(false);
const [errorMsg, setErrorMsg] = useState("");
const handleDelete = async (event: any) => {
event.preventDefault();
setIsDeleting(true);
const deleteNoteURL = `${GATEWAY_URL}notes/${noteId}`;
try {
await fetch(deleteNoteURL, {
method: "DELETE",
});
navigate("/");
} catch (error) {
setErrorMsg(`${error.toString()} - ${deleteNoteURL} - ${noteId}`);
} finally {
setIsDeleting(false);
}
};
return (
<>
{errorMsg && <Alert variant="danger">{errorMsg}</Alert>}
<Button
variant="danger"
disabled={isDeleting}
onClick={handleDelete}
block
>
{isDeleting ? <ButtonSpinner /> : ""}
{isDeleting ? "Deleting..." : "Delete"}
</Button>
</>
);
};
export { DeleteNoteButton };