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()) ||