From b282e320cc7ec20ebca8374bef289cba80187afc Mon Sep 17 00:00:00 2001 From: mitch ross Date: Wed, 31 Mar 2021 12:23:49 -0400 Subject: [PATCH] addressing PR comments --- web/src/components/Dialog.jsx | 10 ++++---- web/src/routes/Event.jsx | 43 +++++++++++++++++++++++++++-------- 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/web/src/components/Dialog.jsx b/web/src/components/Dialog.jsx index 22347ae59..1ac3d500f 100644 --- a/web/src/components/Dialog.jsx +++ b/web/src/components/Dialog.jsx @@ -32,11 +32,11 @@ export default function Dialog({ actions = [], portalRootID = 'dialogs', title,

{text}

- {actions.map(({ color, text, onClick }, i) => ( - - ))} + {actions.map(({ color, text, onClick, ...props }, i) => ( + + ))}
diff --git a/web/src/routes/Event.jsx b/web/src/routes/Event.jsx index 6640f0dbd..d1b2d2bfa 100644 --- a/web/src/routes/Event.jsx +++ b/web/src/routes/Event.jsx @@ -14,25 +14,46 @@ export default function Event({ eventId }) { const apiHost = useApiHost(); const { data, status } = useEvent(eventId); const [showDialog, setShowDialog] = useState(false); + const [deleteStatus, setDeleteStatus] = useState(FetchStatus.NONE); + const [deleteMessage, setDeleteMessage] = useState(); const handleClickDelete = () => { setShowDialog(true); - } + }; const handleDismissDeleteDialog = () => { setShowDialog(false); }; - const handleClickDeleteDialog = useCallback( - async () => { - await fetch(`${apiHost}/api/events/${eventId}`, {method: 'DELETE'}); + + const handleClickDeleteDialog = useCallback(async () => { + + setDeleteStatus(FetchStatus.LOADING); + let success; + try { + debugger; + const response = await fetch(`${apiHost}/api/events/${eventId}`, { method: 'DELETE' }); + debugger; + const deleteEvent = await response.json(); + + success = deleteEvent.success; + debugger; + setDeleteStatus(success ? FetchStatus.LOADED : FetchStatus.ERROR); + setDeleteMessage(deleteEvent.message); + } catch (e) { + setDeleteStatus(FetchStatus.ERROR); + } + + if (success) { + setDeleteStatus(FetchStatus.LOADED); setShowDialog(false); route('/events', true); - }, [apiHost, eventId, setShowDialog] - ); + + } + }, [apiHost, eventId, setShowDialog]); if (status !== FetchStatus.LOADED) { - return ; + return } const startime = new Date(data.start_time * 1000); @@ -44,8 +65,8 @@ export default function Event({ eventId }) { {data.camera} {data.label} {startime.toLocaleString()} - {showDialog ? (