fix event deletion

This commit is contained in:
Michael Fatemi 2021-08-16 22:12:09 -04:00
parent c25d650276
commit 44bf3001d7
2 changed files with 42 additions and 8 deletions

View File

@ -37,9 +37,26 @@ export default function EventAdminControls() {
// const descriptionTextareaRef = useRef<HTMLTextAreaElement>(null); // const descriptionTextareaRef = useRef<HTMLTextAreaElement>(null);
const [onPressDelete, deletionStatus] = useAsyncCallback( const [eventDeletionConfirmationShown, setEventDeletionConfirmationShown] =
useCallback(() => deleteEvent(id), [id]) useState(false);
); const [eventDeletionStatus, setEventDeletionStatus] =
useState<null | 'deleting' | 'deleted' | 'errored'>(null);
const onPressInitialDelete = useCallback(() => {
setEventDeletionConfirmationShown(true);
}, []);
const onPressCancelDelete = useCallback(() => {
setEventDeletionConfirmationShown(false);
}, []);
const onPressConfirmDelete = useCallback(() => {
setEventDeletionConfirmationShown(false);
setEventDeletionStatus('deleting');
deleteEvent(id)
.then(() => setEventDeletionStatus('deleted'))
.catch(() => setEventDeletionStatus('errored'));
}, [id]);
// const [onSaveDescription, saveDescriptionStatus] = useAsyncCallback( // const [onSaveDescription, saveDescriptionStatus] = useAsyncCallback(
// useCallback(() => { // useCallback(() => {
@ -55,11 +72,23 @@ export default function EventAdminControls() {
return ( return (
<div style={{ display: 'flex' }}> <div style={{ display: 'flex' }}>
{deletionStatus === AsyncCallbackStatus.NONE ? ( {eventDeletionConfirmationShown ? (
<UIPressable onClick={onPressDelete}>Delete</UIPressable> <>
) : deletionStatus === AsyncCallbackStatus.PENDING ? ( <UIPressable
onClick={onPressCancelDelete}
style={{ marginRight: '1rem' }}
>
Cancel deletion
</UIPressable>
<UIPressable onClick={onPressConfirmDelete}>
Confirm deletion
</UIPressable>
</>
) : eventDeletionStatus === null ? (
<UIPressable onClick={onPressInitialDelete}>Delete</UIPressable>
) : eventDeletionStatus === 'deleting' ? (
<span>Deleting...</span> <span>Deleting...</span>
) : deletionStatus === AsyncCallbackStatus.RESOLVED ? ( ) : eventDeletionStatus === 'deleted' ? (
<span>Deleted</span> <span>Deleted</span>
) : ( ) : (
<span>Delete failed</span> <span>Delete failed</span>

View File

@ -33,7 +33,12 @@ export default function EventContent() {
</div> </div>
<EventDetails /> <EventDetails />
<EventInterestForm /> <EventInterestForm />
{isEventCreator && <EventAdminControls />} {isEventCreator && (
<>
<hr />
<EventAdminControls />
</>
)}
</UISecondaryBox> </UISecondaryBox>
); );
} }