Add save data viewing to hammer page

This commit is contained in:
Regalijan 2024-04-03 14:55:48 -04:00
parent 6ee1b020df
commit 9df46268e0
Signed by: regalijan
GPG Key ID: 5D4196DA269EF520

View File

@ -3,6 +3,7 @@ import {
Button, Button,
Card, Card,
CardBody, CardBody,
CardFooter,
CardHeader, CardHeader,
Container, Container,
Flex, Flex,
@ -61,6 +62,7 @@ export default function () {
const [avatarUrl, setAvatarUrl] = useState(""); const [avatarUrl, setAvatarUrl] = useState("");
const [ticketLink, setTicketLink] = useState(""); const [ticketLink, setTicketLink] = useState("");
const [history, setHistory] = useState([] as ReactElement[]); const [history, setHistory] = useState([] as ReactElement[]);
const [saveData, setSaveData] = useState({} as { [k: string]: any });
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const { isOpen, onClose, onOpen } = useDisclosure(); const { isOpen, onClose, onOpen } = useDisclosure();
const toast = useToast(); const toast = useToast();
@ -166,6 +168,28 @@ export default function () {
setVisible(true); setVisible(true);
} }
async function getSaveData() {
const dataResp = await fetch(`/api/game-bans/${uid}/save-data`);
if (!dataResp.ok) {
let msg = "Unknown error";
try {
msg = ((await dataResp.json()) as { error: string }).error;
} catch {}
toast({
description: msg,
status: "error",
title: "Failed to get save data",
});
return;
}
setSaveData(await dataResp.json());
}
const invalidIcon = ( const invalidIcon = (
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"
@ -289,7 +313,7 @@ export default function () {
Search Search
</Button> </Button>
</HStack> </HStack>
<Container mb={3} mt={3}> <Container my={3}>
<Card visibility={visible ? "visible" : "hidden"}> <Card visibility={visible ? "visible" : "hidden"}>
<CardBody> <CardBody>
<Flex flexWrap="wrap" justifyContent="center"> <Flex flexWrap="wrap" justifyContent="center">
@ -326,9 +350,43 @@ export default function () {
</Box> </Box>
</Stack> </Stack>
</CardBody> </CardBody>
<CardFooter alignItems="center">
<Link onClick={async () => await getSaveData()}>
Click to Display Save Data
</Link>
</CardFooter>
</Card> </Card>
</Container> </Container>
{history} {history}
<Container
display={Object.values(saveData).length ? undefined : "none"}
my="16px"
>
<Card>
<CardBody>
<Stack divider={<StackDivider />} mt="8px" spacing="6">
<Box>
<Heading size="xs">Money</Heading>
<Text pt="2" fontSize="sm">
{saveData.Money}
</Text>
</Box>
<Box>
<Heading size="xs">Parts</Heading>
<Text pt="2" fontSize="sm">
{saveData.Parts}
</Text>
</Box>
<Box>
<Heading size="xs">Wins</Heading>
<Text pt="2" fontSize="sm">
{saveData.Wins}
</Text>
</Box>
</Stack>
</CardBody>
</Card>
</Container>
</Container> </Container>
); );
} }