Maybe this time (yeah right lol)

This commit is contained in:
regalijan 2023-10-19 16:50:47 -04:00
parent e2cafd60b6
commit 77f5b2db26
Signed by: regalijan
GPG Key ID: 5D4196DA269EF520

View File

@ -22,11 +22,10 @@ import {
VStack, VStack,
useToast, useToast,
} from "@chakra-ui/react"; } from "@chakra-ui/react";
import { type ReactElement, useState } from "react"; import { useState } from "react";
export default function (props: { isOpen: boolean; onClose: () => void }) { export default function (props: { isOpen: boolean; onClose: () => void }) {
const actionMap: { [k: string]: number } = {}; const actionMap: { [k: string]: number } = {};
const [rows, setRows] = useState([] as ReactElement[]);
const [users, setUsers] = useState([] as string[]); const [users, setUsers] = useState([] as string[]);
const toast = useToast(); const toast = useToast();
const fileTypes: { [k: string]: string } = { const fileTypes: { [k: string]: string } = {
@ -48,35 +47,9 @@ export default function (props: { isOpen: boolean; onClose: () => void }) {
function addUser(user: string) { function addUser(user: string) {
const newUsers = [...users]; const newUsers = [...users];
newUsers.push(user); newUsers.push(user);
const newRows = [...rows];
newRows.push(
<Tr key={user}>
<Td>{user}</Td>
<Td>
<RadioGroup
onChange={(val) =>
Object.defineProperty(actionMap, user, {
value: parseInt(val),
})
}
>
<VStack>
<Radio value="0">Do Nothing</Radio>
<Radio value="1">Hide from Leaderboards</Radio>
<Radio value="2">Ban</Radio>
</VStack>
</RadioGroup>
</Td>
<Td>
<Link onClick={() => removeUser(user)}>Remove</Link>
</Td>
</Tr>,
);
setUsers(newUsers); setUsers(newUsers);
setRows(newRows);
} }
function removeUser(user: string) { function removeUser(user: string) {
@ -85,12 +58,8 @@ export default function (props: { isOpen: boolean; onClose: () => void }) {
if (userIdx === -1) return; if (userIdx === -1) return;
const newRows = [...rows];
newUsers.splice(userIdx, 1); newUsers.splice(userIdx, 1);
newRows.splice(userIdx, 1);
setUsers(newUsers); setUsers(newUsers);
setRows(newRows);
delete actionMap[user]; delete actionMap[user];
} }
@ -99,7 +68,7 @@ export default function (props: { isOpen: boolean; onClose: () => void }) {
(document.getElementById("username") as HTMLInputElement).value = ""; (document.getElementById("username") as HTMLInputElement).value = "";
(document.getElementById("evidence") as HTMLInputElement).value = ""; (document.getElementById("evidence") as HTMLInputElement).value = "";
setRows([]); setUsers([]);
Object.keys(actionMap).forEach((k) => delete actionMap[k]); Object.keys(actionMap).forEach((k) => delete actionMap[k]);
props.onClose(); props.onClose();
@ -243,7 +212,31 @@ export default function (props: { isOpen: boolean; onClose: () => void }) {
<Th>Remove</Th> <Th>Remove</Th>
</Tr> </Tr>
</Thead> </Thead>
<Tbody>{rows}</Tbody> <Tbody>
{users.map((user) => (
<Tr key={user}>
<Td>{user}</Td>
<Td>
<RadioGroup
onChange={(val) =>
Object.defineProperty(actionMap, user, {
value: parseInt(val),
})
}
>
<VStack>
<Radio value="0">Do Nothing</Radio>
<Radio value="1">Hide from Leaderboards</Radio>
<Radio value="2">Ban</Radio>
</VStack>
</RadioGroup>
</Td>
<Td>
<Link onClick={() => removeUser(user)}>Remove</Link>
</Td>
</Tr>
))}
</Tbody>
</Table> </Table>
</TableContainer> </TableContainer>
<br /> <br />