Compare commits
9 Commits
64edc6169b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
017ce48835
|
|||
|
72f8791276
|
|||
|
63b1926056
|
|||
|
25dc50e05c
|
|||
|
a403832735
|
|||
|
e1f1093d84
|
|||
|
243a4d1ceb
|
|||
|
54d9bd5e82
|
|||
|
a1f4b4eabe
|
@@ -47,6 +47,7 @@ export async function loader({ context }: { context: RequestContext }) {
|
||||
|
||||
export default function () {
|
||||
const data: { [k: string]: any }[] = useLoaderData<typeof loader>();
|
||||
const [gameModData, setGameModData] = useState(data);
|
||||
const { isOpen, onClose, onOpen } = useDisclosure();
|
||||
const [idToAdd, setIdToAdd] = useState<string>("");
|
||||
const [nameToAdd, setNameToAdd] = useState<string>("");
|
||||
@@ -74,17 +75,47 @@ export default function () {
|
||||
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("");
|
||||
}
|
||||
|
||||
async function removeMod(user: string) {
|
||||
const response = await fetch("/api/gme/remove", {
|
||||
body: JSON.stringify({ user }),
|
||||
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 remove game mod",
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
toast({
|
||||
description: `${data.find((i) => i.metadata.id === user)?.name} was removed as a game mod`,
|
||||
status: "success",
|
||||
title: "Game mod removed",
|
||||
});
|
||||
|
||||
setGameModData(gameModData.filter((i) => i.metadata.id !== user));
|
||||
}
|
||||
|
||||
return (
|
||||
<Container maxW="container.lg">
|
||||
<TableContainer>
|
||||
@@ -100,7 +131,7 @@ export default function () {
|
||||
</Tr>
|
||||
</Thead>
|
||||
<Tbody>
|
||||
{data.map((item) => {
|
||||
{gameModData.map((item) => {
|
||||
return (
|
||||
<Tr key={item.metadata.id}>
|
||||
<Td>{item.metadata.id}</Td>
|
||||
@@ -108,7 +139,11 @@ export default function () {
|
||||
<Td>{item.metadata.created_at}</Td>
|
||||
<Td>{item.metadata.created_by}</Td>
|
||||
<Td>
|
||||
<Button>Remove</Button>
|
||||
<Button
|
||||
onClick={async () => await removeMod(item.metadata.id)}
|
||||
>
|
||||
Remove
|
||||
</Button>
|
||||
</Td>
|
||||
</Tr>
|
||||
);
|
||||
@@ -116,7 +151,7 @@ export default function () {
|
||||
</Tbody>
|
||||
</Table>
|
||||
</TableContainer>
|
||||
<Button alignSelf="end" onClick={onOpen} pt="16px">
|
||||
<Button alignSelf="end" mt="16px" onClick={onOpen}>
|
||||
Add
|
||||
</Button>
|
||||
<Modal isOpen={isOpen} onClose={onClose}>
|
||||
@@ -146,6 +181,7 @@ export default function () {
|
||||
<ModalFooter gap="8px">
|
||||
<Button
|
||||
onClick={() => {
|
||||
onClose();
|
||||
setIdToAdd("");
|
||||
setNameToAdd("");
|
||||
}}
|
||||
@@ -155,8 +191,7 @@ export default function () {
|
||||
<Button
|
||||
colorScheme="blue"
|
||||
disabled={
|
||||
idToAdd.length < 17 ||
|
||||
idToAdd.length > 19 ||
|
||||
!idToAdd.match(/\d{17,19}/) ||
|
||||
nameToAdd.length < 1 ||
|
||||
nameToAdd.length > 32
|
||||
}
|
||||
|
||||
@@ -169,20 +169,22 @@ export default function () {
|
||||
Decisions:
|
||||
<br />
|
||||
Approved:
|
||||
{Object.keys(currentInactivity.decisions ?? {}).filter(
|
||||
(d) => currentInactivity.decisions[d],
|
||||
)}
|
||||
{Object.keys(currentInactivity.decisions ?? {})
|
||||
.filter((d) => currentInactivity.decisions[d])
|
||||
.join(", ")}
|
||||
<br />
|
||||
Denied:
|
||||
{Object.keys(currentInactivity.decisions ?? {}).filter(
|
||||
(d) => !currentInactivity.decisions[d],
|
||||
)}
|
||||
{Object.keys(currentInactivity.decisions ?? {})
|
||||
.filter((d) => !currentInactivity.decisions[d])
|
||||
.join(", ")}
|
||||
<br />
|
||||
Pending:
|
||||
{currentInactivity.departments?.filter(
|
||||
{currentInactivity.departments
|
||||
?.filter(
|
||||
(d: "DM" | "ET" | "FM" | "WM") =>
|
||||
typeof currentInactivity.decisions[d] === "undefined",
|
||||
)}
|
||||
)
|
||||
.join(", ")}
|
||||
</ListItem>
|
||||
</UnorderedList>
|
||||
</ModalBody>
|
||||
|
||||
@@ -91,8 +91,10 @@ export async function onRequestPost(context: RequestContext) {
|
||||
requestedNotice.decisions,
|
||||
);
|
||||
|
||||
for (const department of userAdminDepartments)
|
||||
for (const department of userAdminDepartments) {
|
||||
if (!JSON.parse(requestedNotice.departments).includes(department)) continue;
|
||||
decisions[department] = accepted;
|
||||
}
|
||||
|
||||
const applicableDepartments = JSON.parse(requestedNotice.departments).length;
|
||||
|
||||
|
||||
@@ -69,10 +69,10 @@ export async function onRequestPost(context: RequestContext) {
|
||||
|
||||
// If not a ban action
|
||||
if (v === 1) {
|
||||
newActions[user].hidden_from_leaderboards = true;
|
||||
newActions[k].hidden_from_leaderboards = true;
|
||||
} else if (v === 3) {
|
||||
newActions[user].serverconfigurator_blacklist = true;
|
||||
newActions[user].BanType = 1;
|
||||
newActions[k].serverconfigurator_blacklist = true;
|
||||
newActions[k].BanType = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -183,9 +183,10 @@ export async function onRequestPost(context: RequestContext) {
|
||||
|
||||
const uploadUrlResults = await Promise.allSettled(uploadUrlPromises);
|
||||
|
||||
const reportId = `${Date.now()}${context.request.headers.get(
|
||||
"cf-ray",
|
||||
)}${crypto.randomUUID().replaceAll("-", "")}`;
|
||||
const reportId = `${Date.now()}${context.request.headers
|
||||
.get("cf-ray")
|
||||
?.split("-")
|
||||
?.at(0)}${crypto.randomUUID().replaceAll("-", "")}`;
|
||||
|
||||
const { current_user: currentUser } = context.data;
|
||||
if (filesToProcess.length)
|
||||
|
||||
92
package-lock.json
generated
92
package-lock.json
generated
@@ -15,7 +15,7 @@
|
||||
"@remix-run/cloudflare": "^2.17.1",
|
||||
"@remix-run/cloudflare-pages": "^2.17.1",
|
||||
"@remix-run/react": "^2.17.1",
|
||||
"@sentry/react": "^10.19.0",
|
||||
"@sentry/react": "^10.21.0",
|
||||
"aws4fetch": "^1.0.20",
|
||||
"dayjs": "^1.11.18",
|
||||
"framer-motion": "^12.23.24",
|
||||
@@ -25,7 +25,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "^2.17.1",
|
||||
"@types/node": "^24.7.2",
|
||||
"@types/node": "^24.9.1",
|
||||
"@types/react": "^18.3.26",
|
||||
"@types/react-big-calendar": "^1.16.3",
|
||||
"@types/react-dom": "^18.3.7",
|
||||
@@ -649,9 +649,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@cloudflare/workers-types": {
|
||||
"version": "4.20251011.0",
|
||||
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20251011.0.tgz",
|
||||
"integrity": "sha512-gQpih+pbq3sP4uXltUeCSbPgZxTNp2gQd8639SaIbQMwgA6oJNHLhIART1fWy6DQACngiRzDVULA2x0ohmkGTQ==",
|
||||
"version": "4.20251014.0",
|
||||
"resolved": "https://registry.npmjs.org/@cloudflare/workers-types/-/workers-types-4.20251014.0.tgz",
|
||||
"integrity": "sha512-tEW98J/kOa0TdylIUOrLKRdwkUw0rvvYVlo+Ce0mqRH3c8kSoxLzUH9gfCvwLe0M89z1RkzFovSKAW2Nwtyn3w==",
|
||||
"license": "MIT OR Apache-2.0",
|
||||
"peer": true
|
||||
},
|
||||
@@ -2065,88 +2065,88 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@sentry-internal/browser-utils": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.19.0.tgz",
|
||||
"integrity": "sha512-E3H6R+tX7sYMIjfCRAMO0qIH43dtUqv2rSo0vv6eHDi4lDXtlDc+Vb67n4VIesT7YVxQD7GIkNhMk3hmRDIwww==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.21.0.tgz",
|
||||
"integrity": "sha512-QRHpCBheLd/88Z2m3ABMriV0MweW+pcGKuVsH61/UdziKcQLdoQpOSvGg0/0CuqFm2UjL7237ZzLdZrWaCOlfQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry/core": "10.19.0"
|
||||
"@sentry/core": "10.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/feedback": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.19.0.tgz",
|
||||
"integrity": "sha512-AJ8rpzNYgfmWzovmFss51q9FtBaa2qYTLwkbVdTf58fZbLMUrgZ6qf9qMk0ePiS3nB87w9+mpbLzRObYOsK9RA==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.21.0.tgz",
|
||||
"integrity": "sha512-6SnRR2FiW6TMwCE0PqbueHkkpeVnjOjz00R+/mX25Dp1U5BU5TzbXHzn9Y4wKnaD3Rzz4+nnzVkpHAOL3SppGw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry/core": "10.19.0"
|
||||
"@sentry/core": "10.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/replay": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.19.0.tgz",
|
||||
"integrity": "sha512-bOWsm/t+d2LCYa3gUjgwFds6kKSW+K6i4pssgDY4XiV/MxHsQtQ2rbHX80chLRQe2HFCX2njvjVSJN+Nsdjmpg==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.21.0.tgz",
|
||||
"integrity": "sha512-5tfiKZJzZf9+Xk8SyvoC4ZEVLNmjBZZEaKhVyNo53CLWUWfWOqDc3DB9fj85i/yHFQ0ImdRnaPBc0CIeN00CcA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry-internal/browser-utils": "10.19.0",
|
||||
"@sentry/core": "10.19.0"
|
||||
"@sentry-internal/browser-utils": "10.21.0",
|
||||
"@sentry/core": "10.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry-internal/replay-canvas": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.19.0.tgz",
|
||||
"integrity": "sha512-DulLU4lvtrGPExKtpbCveLxPACrFmGx4eEYhzIn35UH8iIx6ONRSLemQyiUJQoLau7KXJy0I8AWxN+SagfebEA==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.21.0.tgz",
|
||||
"integrity": "sha512-TOLo5mAjJSOuJId8Po44d1hwJ5bIZDtRSoupWpYWqLw1tuUh1tc4vqID11ZXsw9pBzjVIK653BPDX/z/9+Um+Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry-internal/replay": "10.19.0",
|
||||
"@sentry/core": "10.19.0"
|
||||
"@sentry-internal/replay": "10.21.0",
|
||||
"@sentry/core": "10.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/browser": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.19.0.tgz",
|
||||
"integrity": "sha512-/+B84qFOLg1vJhg4YSA4a7Pneq5Pbt1BXEdrp/UW4tJmtGPZb28qXlMdoPfmFWZgVezrawaPkxLmbu+47/+rsQ==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.21.0.tgz",
|
||||
"integrity": "sha512-z/63bUFBQkTfJ5ElhWTYvomz+gZ1GsoH16v4/RGoPY5qZgYxcVO3fkp0opnu3gcbXS0ZW7TLRiHpqhvipDdP6g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry-internal/browser-utils": "10.19.0",
|
||||
"@sentry-internal/feedback": "10.19.0",
|
||||
"@sentry-internal/replay": "10.19.0",
|
||||
"@sentry-internal/replay-canvas": "10.19.0",
|
||||
"@sentry/core": "10.19.0"
|
||||
"@sentry-internal/browser-utils": "10.21.0",
|
||||
"@sentry-internal/feedback": "10.21.0",
|
||||
"@sentry-internal/replay": "10.21.0",
|
||||
"@sentry-internal/replay-canvas": "10.21.0",
|
||||
"@sentry/core": "10.21.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/core": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.19.0.tgz",
|
||||
"integrity": "sha512-OqZjYDYsK6ZmBG5UzML0uKiKq//G6mMwPcszfuCsFgPt+pg5giUCrCUbt5VIVkHdN1qEEBk321JO2haU5n2Eig==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz",
|
||||
"integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@sentry/react": {
|
||||
"version": "10.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.19.0.tgz",
|
||||
"integrity": "sha512-LgADcXfJ4hVVtOSW6IkY3Wsefw4xPHIQpiEux28GHf2EAYkWxyCWWb9uQH4voAacG+FcX63XfJkpUMZjadE9qw==",
|
||||
"version": "10.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.21.0.tgz",
|
||||
"integrity": "sha512-BSCGKkepg9QPJRS8AUjtSAFd4lYJLmz3+P+oehViEHQDtRqqmXbVIBLhqwPc05KvRGIl4/kIDjyfDuHCFCJigQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@sentry/browser": "10.19.0",
|
||||
"@sentry/core": "10.19.0",
|
||||
"@sentry/browser": "10.21.0",
|
||||
"@sentry/core": "10.21.0",
|
||||
"hoist-non-react-statics": "^3.3.2"
|
||||
},
|
||||
"engines": {
|
||||
@@ -2256,13 +2256,13 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "24.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.2.tgz",
|
||||
"integrity": "sha512-/NbVmcGTP+lj5oa4yiYxxeBjRivKQ5Ns1eSZeB99ExsEQ6rX5XYU1Zy/gGxY/ilqtD4Etx9mKyrPxZRetiahhA==",
|
||||
"version": "24.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz",
|
||||
"integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~7.14.0"
|
||||
"undici-types": "~7.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/parse-json": {
|
||||
@@ -8918,9 +8918,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz",
|
||||
"integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==",
|
||||
"version": "7.16.0",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
|
||||
"integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
"@remix-run/cloudflare": "^2.17.1",
|
||||
"@remix-run/cloudflare-pages": "^2.17.1",
|
||||
"@remix-run/react": "^2.17.1",
|
||||
"@sentry/react": "^10.19.0",
|
||||
"@sentry/react": "^10.21.0",
|
||||
"aws4fetch": "^1.0.20",
|
||||
"dayjs": "^1.11.18",
|
||||
"framer-motion": "^12.23.24",
|
||||
@@ -26,7 +26,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@remix-run/dev": "^2.17.1",
|
||||
"@types/node": "^24.7.2",
|
||||
"@types/node": "^24.9.1",
|
||||
"@types/react": "^18.3.26",
|
||||
"@types/react-big-calendar": "^1.16.3",
|
||||
"@types/react-dom": "^18.3.7",
|
||||
@@ -35,7 +35,7 @@
|
||||
"typescript": "^5.9.3"
|
||||
},
|
||||
"overrides": {
|
||||
"@cloudflare/workers-types": "^4.20251011.0"
|
||||
"@cloudflare/workers-types": "^4.20251014.0"
|
||||
},
|
||||
"prettier": {
|
||||
"endOfLine": "auto"
|
||||
|
||||
Reference in New Issue
Block a user