Add modal prompt for removing et members
This commit is contained in:
parent
0c74d10a7b
commit
d8b6bc406a
@ -21,6 +21,7 @@ import {
|
|||||||
TableContainer,
|
TableContainer,
|
||||||
Tbody,
|
Tbody,
|
||||||
Td,
|
Td,
|
||||||
|
Text,
|
||||||
Th,
|
Th,
|
||||||
Thead,
|
Thead,
|
||||||
Tr,
|
Tr,
|
||||||
@ -60,7 +61,7 @@ export default function () {
|
|||||||
const toast = useToast();
|
const toast = useToast();
|
||||||
|
|
||||||
async function removeMember(id: string) {
|
async function removeMember(id: string) {
|
||||||
await fetch("/api/events-team/team-members/user", {
|
const removeResp = await fetch("/api/events-team/team-members/user", {
|
||||||
body: JSON.stringify({ id }),
|
body: JSON.stringify({ id }),
|
||||||
headers: {
|
headers: {
|
||||||
"content-type": "application/json",
|
"content-type": "application/json",
|
||||||
@ -68,13 +69,35 @@ export default function () {
|
|||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!removeResp.ok) {
|
||||||
|
toast({
|
||||||
|
description: "Failed to remove member, try again later",
|
||||||
|
status: "error",
|
||||||
|
title: "Oops",
|
||||||
|
});
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
toast({
|
||||||
|
description: "The member was removed from the roster",
|
||||||
|
status: "success",
|
||||||
|
title: "Member Removed",
|
||||||
|
});
|
||||||
|
|
||||||
setMemberData(memberData.filter((member) => member.id !== id));
|
setMemberData(memberData.filter((member) => member.id !== id));
|
||||||
}
|
}
|
||||||
|
|
||||||
const [realtimePoints, setRealtimePoints] = useState(0);
|
const [realtimePoints, setRealtimePoints] = useState(0);
|
||||||
const [currentModalMember, setModalMember] = useState("");
|
const [currentModalMember, setModalMember] = useState("");
|
||||||
|
const [currentDelMember, setDelMember] = useState({ id: "", name: "" });
|
||||||
const [memberData, setMemberData] = useState(useLoaderData<typeof loader>());
|
const [memberData, setMemberData] = useState(useLoaderData<typeof loader>());
|
||||||
const { isOpen, onClose, onOpen } = useDisclosure();
|
const { isOpen, onClose, onOpen } = useDisclosure();
|
||||||
|
const {
|
||||||
|
isOpen: isDelConfirmOpen,
|
||||||
|
onClose: closeDelConfirm,
|
||||||
|
onOpen: openDelConfirm,
|
||||||
|
} = useDisclosure();
|
||||||
const isManagement = Math.round(Math.random()) === 1;
|
const isManagement = Math.round(Math.random()) === 1;
|
||||||
|
|
||||||
async function updatePoints(id: string, points: number) {
|
async function updatePoints(id: string, points: number) {
|
||||||
@ -157,6 +180,42 @@ export default function () {
|
|||||||
) : null}
|
) : null}
|
||||||
</ModalContent>
|
</ModalContent>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
<Modal isOpen={isDelConfirmOpen} onClose={closeDelConfirm}>
|
||||||
|
<ModalOverlay />
|
||||||
|
<ModalContent>
|
||||||
|
<ModalHeader>Remove Member</ModalHeader>
|
||||||
|
<ModalCloseButton />
|
||||||
|
<ModalBody>
|
||||||
|
<Text>
|
||||||
|
You are about to remove {currentDelMember.name} from the Events
|
||||||
|
Team roster, this will clear all of their data. Are you sure you
|
||||||
|
want to do this?
|
||||||
|
</Text>
|
||||||
|
</ModalBody>
|
||||||
|
<ModalFooter>
|
||||||
|
<Button
|
||||||
|
colorScheme="blue"
|
||||||
|
onClick={() => {
|
||||||
|
setDelMember({ id: "", name: "" });
|
||||||
|
closeDelConfirm();
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
No
|
||||||
|
</Button>
|
||||||
|
<Button
|
||||||
|
colorScheme="red"
|
||||||
|
onClick={async () => {
|
||||||
|
await removeMember(currentDelMember.id);
|
||||||
|
setDelMember({ id: "", name: "" });
|
||||||
|
closeDelConfirm();
|
||||||
|
}}
|
||||||
|
pl="8px"
|
||||||
|
>
|
||||||
|
Yes, Remove
|
||||||
|
</Button>
|
||||||
|
</ModalFooter>
|
||||||
|
</ModalContent>
|
||||||
|
</Modal>
|
||||||
<Heading>Events Team Members</Heading>
|
<Heading>Events Team Members</Heading>
|
||||||
<TableContainer pt="16px">
|
<TableContainer pt="16px">
|
||||||
<Table variant="simple">
|
<Table variant="simple">
|
||||||
@ -193,7 +252,12 @@ export default function () {
|
|||||||
)}
|
)}
|
||||||
</Td>
|
</Td>
|
||||||
<Td>
|
<Td>
|
||||||
<Link onClick={async () => removeMember(member.id)}>
|
<Link
|
||||||
|
onClick={() => {
|
||||||
|
setDelMember({ id: member.id, name: member.name });
|
||||||
|
openDelConfirm();
|
||||||
|
}}
|
||||||
|
>
|
||||||
Remove
|
Remove
|
||||||
</Link>
|
</Link>
|
||||||
</Td>
|
</Td>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user