Add inactivity notices to mod queue dropdown
This commit is contained in:
parent
db7e9326ac
commit
8435cbdcb2
@ -14,7 +14,7 @@ import {
|
||||
useBreakpointValue,
|
||||
useDisclosure,
|
||||
useToast,
|
||||
VStack,
|
||||
VStack
|
||||
} from "@chakra-ui/react";
|
||||
import { type ReactElement, useEffect, useState } from "react";
|
||||
import AppealCard from "../../components/AppealCard.js";
|
||||
@ -31,38 +31,40 @@ export async function loader({ context }: { context: RequestContext }) {
|
||||
|
||||
if (!currentUser)
|
||||
throw new Response(null, {
|
||||
status: 401,
|
||||
status: 401
|
||||
});
|
||||
|
||||
const departments = {
|
||||
DM: 1 << 2,
|
||||
ET: 1 << 3,
|
||||
FM: 1 << 10,
|
||||
WM: 1 << 9,
|
||||
WM: 1 << 9
|
||||
};
|
||||
|
||||
const newItemPermissions = {
|
||||
game_ban: [1 << 5],
|
||||
inactivity: [1 << 2, 1 << 9, 1 << 10],
|
||||
infraction: [1 << 0, 1 << 2, 1 << 6, 1 << 7],
|
||||
infraction: [1 << 0, 1 << 2, 1 << 6, 1 << 7]
|
||||
};
|
||||
|
||||
const newItemNames: { [k: string]: string } = {
|
||||
game_ban: "Game Ban",
|
||||
inactivity: "Inactivity Notice",
|
||||
infraction: "Infraction",
|
||||
infraction: "Infraction"
|
||||
};
|
||||
|
||||
const typePermissions = {
|
||||
appeal: [1 << 0, 1 << 1],
|
||||
gma: [1 << 5],
|
||||
report: [1 << 5],
|
||||
inactivity: [1 << 4, 1 << 6, 1 << 7, 1 << 11, 1 << 12],
|
||||
report: [1 << 5]
|
||||
};
|
||||
|
||||
const typeNames: { [k: string]: string } = {
|
||||
appeal: "Discord Appeals",
|
||||
gma: "Game Appeals",
|
||||
report: "Game Reports",
|
||||
inactivity: "Inactivity Notices",
|
||||
report: "Game Reports"
|
||||
};
|
||||
|
||||
const allowedNewItems = [];
|
||||
@ -80,32 +82,32 @@ export async function loader({ context }: { context: RequestContext }) {
|
||||
|
||||
if (!allowedTypes.length)
|
||||
throw new Response(null, {
|
||||
status: 403,
|
||||
status: 403
|
||||
});
|
||||
|
||||
return {
|
||||
can_edit_ban_users: [
|
||||
"165594923586945025",
|
||||
"289372404541554689",
|
||||
"396347223736057866",
|
||||
"396347223736057866"
|
||||
].includes(currentUser.id),
|
||||
departments: Object.entries(departments)
|
||||
.filter((d) => d[1] & currentUser.permissions)
|
||||
.map((arr) => arr[0]),
|
||||
entry_types: allowedTypes,
|
||||
item_types: allowedNewItems,
|
||||
item_types: allowedNewItems
|
||||
};
|
||||
}
|
||||
|
||||
export function meta() {
|
||||
return [
|
||||
{
|
||||
title: "Moderation Queue - Car Crushers",
|
||||
},
|
||||
title: "Moderation Queue - Car Crushers"
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
export default function () {
|
||||
export default function() {
|
||||
const pageProps = useLoaderData<typeof loader>();
|
||||
const isDesktop = useBreakpointValue({ base: false, lg: true });
|
||||
const entryTypes = [];
|
||||
@ -117,17 +119,17 @@ export default function () {
|
||||
entryTypes.push(
|
||||
<option key={type.value} value={type.value}>
|
||||
{type.name}
|
||||
</option>,
|
||||
</option>
|
||||
);
|
||||
|
||||
async function updateQueue(
|
||||
queue_type: string,
|
||||
before: number,
|
||||
show_closed = false,
|
||||
jump_item_to_top = false,
|
||||
jump_item_to_top = false
|
||||
): Promise<void> {
|
||||
const queueReq = await fetch(
|
||||
`/api/mod-queue/list?before=${before}&showClosed=${show_closed}&type=${queue_type}`,
|
||||
`/api/mod-queue/list?before=${before}&showClosed=${show_closed}&type=${queue_type}`
|
||||
);
|
||||
|
||||
if (!queueReq.ok) {
|
||||
@ -138,7 +140,7 @@ export default function () {
|
||||
duration: 10000,
|
||||
isClosable: true,
|
||||
status: "error",
|
||||
title: "Failed to load queue",
|
||||
title: "Failed to load queue"
|
||||
});
|
||||
|
||||
return;
|
||||
@ -171,7 +173,7 @@ export default function () {
|
||||
duration: 10000,
|
||||
isClosable: true,
|
||||
status: "error",
|
||||
title: ((await itemReq.json()) as { error: string }).error,
|
||||
title: ((await itemReq.json()) as { error: string }).error
|
||||
});
|
||||
} else {
|
||||
const itemData: { [k: string]: any } = await itemReq.json();
|
||||
@ -213,7 +215,7 @@ export default function () {
|
||||
|
||||
case "inactivity":
|
||||
newEntries.push(
|
||||
<InactivityNoticeCard {...(entry as InactivityNoticeProps)} />,
|
||||
<InactivityNoticeCard {...(entry as InactivityNoticeProps)} />
|
||||
);
|
||||
|
||||
break;
|
||||
@ -239,11 +241,11 @@ export default function () {
|
||||
} = {
|
||||
game_ban: useDisclosure(),
|
||||
inactivity: useDisclosure(),
|
||||
infraction: useDisclosure(),
|
||||
infraction: useDisclosure()
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
(async function () {
|
||||
(async function() {
|
||||
await updateQueue(pageProps.entry_types[0].value, before, false, true);
|
||||
})();
|
||||
|
||||
@ -284,7 +286,7 @@ export default function () {
|
||||
|
||||
await updateQueue(
|
||||
target.options[target.selectedIndex].value,
|
||||
Date.now(),
|
||||
Date.now()
|
||||
);
|
||||
}}
|
||||
>
|
||||
@ -309,7 +311,8 @@ export default function () {
|
||||
fill="currentColor"
|
||||
viewBox="0 0 16 16"
|
||||
>
|
||||
<path d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" />
|
||||
<path
|
||||
d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" />
|
||||
</svg>
|
||||
</Button>
|
||||
</PopoverTrigger>
|
||||
|
Loading…
x
Reference in New Issue
Block a user