diff --git a/components/NewInactivityNotice.tsx b/components/NewInactivityNotice.tsx index 54dc59d..23971d7 100644 --- a/components/NewInactivityNotice.tsx +++ b/components/NewInactivityNotice.tsx @@ -2,6 +2,7 @@ import { Button, Checkbox, CheckboxGroup, + HStack, Modal, ModalBody, ModalCloseButton, @@ -9,6 +10,8 @@ import { ModalFooter, ModalHeader, ModalOverlay, + Radio, + RadioGroup, Text, Textarea, useToast, @@ -23,6 +26,7 @@ export default function (props: { }) { const [departments, setDepartments] = useState([] as string[]); const [loading, setLoading] = useState(false); + const [isHiatus, setIsHiatus] = useState(false); const toast = useToast(); function reset() { @@ -55,6 +59,7 @@ export default function (props: { body: JSON.stringify({ departments, end, + hiatus: departments.includes("DM") ? isHiatus : undefined, reason, start, }), @@ -122,6 +127,20 @@ export default function (props: { ))} + setIsHiatus(JSON.parse(v))} + style={{ + display: departments.includes("DM") ? undefined : "none", + }} + value={JSON.stringify(isHiatus)} + > +
+
+ + Inactivity + Hiatus + +
diff --git a/functions/api/inactivity/new.ts b/functions/api/inactivity/new.ts index 8795e30..50334eb 100644 --- a/functions/api/inactivity/new.ts +++ b/functions/api/inactivity/new.ts @@ -1,11 +1,13 @@ import validateInactivity from "./validate.js"; export async function onRequestPost(context: RequestContext) { - const { departments, end, reason, senderTokenId, start } = context.data.body; + const { departments, end, hiatus, reason, senderTokenId, start } = + context.data.body; const validationFailureResponse = validateInactivity( departments, end, + hiatus, reason, start, context.data.departments, @@ -25,6 +27,7 @@ export async function onRequestPost(context: RequestContext) { departments, end, fcm_token: typeof senderTokenId === "string" ? senderTokenId : undefined, + hiatus, open: true, reason, start, diff --git a/functions/api/inactivity/validate.ts b/functions/api/inactivity/validate.ts index 4b31fb9..34ce74b 100644 --- a/functions/api/inactivity/validate.ts +++ b/functions/api/inactivity/validate.ts @@ -3,6 +3,7 @@ import { jsonError } from "../../common.js"; export default function ( selectedDepartments: string[], end: any, + hiatus: any, reason: any, start: any, userDepartments?: string[], @@ -28,6 +29,12 @@ export default function ( const now = new Date(); const startDate = new Date(start); + if (typeof hiatus !== "undefined" && typeof hiatus !== "boolean") + return jsonError("Invalid notice", 400); + + if (!selectedDepartments.includes("DM") && hiatus) + return jsonError("Only discord mods can file hiatuses", 400); + if ( isNaN(endDate.getFullYear()) || isNaN(startDate.getFullYear()) ||