import { Button, Container, FormControl, FormLabel, Input, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, Table, TableCaption, TableContainer, Tbody, Td, Th, Thead, Tr, useDisclosure, useToast, } from "@chakra-ui/react"; import { useLoaderData } from "@remix-run/react"; import { useState } from "react"; export async function loader({ context }: { context: RequestContext }) { if (!context.data.current_user) throw new Response(null, { status: 401, }); if ( ![ "165594923586945025", "289372404541554689", "396347223736057866", ].includes(context.data.current_user.id) ) throw new Response(null, { status: 403, }); return (await context.env.DATA.list({ prefix: "gamemod_" }))?.keys ?? []; } export default function () { const data: { [k: string]: any }[] = useLoaderData(); const { isOpen, onClose, onOpen } = useDisclosure(); const [idToAdd, setIdToAdd] = useState(""); const [nameToAdd, setNameToAdd] = useState(""); const toast = useToast(); async function addMod(id: string, name: string) { const response = await fetch("/api/gme/add", { body: JSON.stringify({ name, user: id }), headers: { "content-type": "application/json", }, method: "POST", }); if (!response.ok) { let msg = "Unknown error"; try { msg = ((await response.json()) as { error: string }).error; } catch {} toast({ description: msg, status: "error", title: "Cannot add game mod", }); } else { toast({ description: `${name} was added as a game mod`, status: "success", title: "Game mod added", }); onClose(); location.reload(); } setIdToAdd(""); setNameToAdd(""); } return ( Currently active game mods {data.map((item) => { return ( ); })}
ID Name Added At Added By Remove
{item.metadata.id} {item.metadata.name} {item.metadata.created_at} {item.metadata.created_by}
Add Game Mod Name setNameToAdd(e.target.value)} value={nameToAdd} />
ID setIdToAdd(e.target.value)} value={idToAdd} />
); }