summaryrefslogtreecommitdiff
path: root/src/routes/group.ts
diff options
context:
space:
mode:
authorRaphael Kabo <raphaelkabo@hey.com>2023-10-09 19:22:39 +0100
committerRaphael Kabo <raphaelkabo@hey.com>2023-10-09 19:22:39 +0100
commit7fe1f42d56edb98875399b1da5e9b7e972209a0d (patch)
tree6f96696b583e4fab1a2d1f54a2f99bcee3267c04 /src/routes/group.ts
parentdbbb94117c2d6266cfc45a091b4b87012024f788 (diff)
Add known group linker to event form
Diffstat (limited to 'src/routes/group.ts')
-rw-r--r--src/routes/group.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/routes/group.ts b/src/routes/group.ts
index 2801248..40dcccb 100644
--- a/src/routes/group.ts
+++ b/src/routes/group.ts
@@ -7,6 +7,8 @@ import Jimp from "jimp";
import { addToLog } from "../helpers.js";
import EventGroup from "../models/EventGroup.js";
import { sendEmailFromTemplate } from "../lib/email.js";
+import { marked } from "marked";
+import { renderPlain } from "../util/markdown.js";
const config = getConfig();
@@ -237,4 +239,62 @@ router.put(
},
);
+// Accepts a JSON object of event/group IDs mapped to edit tokens.
+// Returns an object of basic group data for each of the IDs
+// which are valid groups and have an edit token which matches.
+router.post("/known/groups", async (req: Request, res: Response) => {
+ const known = req.body;
+ if (!known) {
+ return res.status(400).json({
+ errors: [
+ {
+ message: "No known IDs were provided.",
+ },
+ ],
+ });
+ }
+
+ try {
+ const knownIDs = Object.keys(known);
+ const groups = await EventGroup.find({
+ id: { $in: knownIDs },
+ });
+ const knownGroups = groups.filter((group) => {
+ return group.editToken === known[group.id];
+ });
+ const groupData = knownGroups.map((group) => {
+ return {
+ id: group.id,
+ name: group.name,
+ description: marked
+ .parse(group.description, {
+ renderer: renderPlain(),
+ })
+ .split(" ")
+ .splice(0, 40)
+ .join(" ")
+ .trim(),
+ image: group.image,
+ editToken: group.editToken,
+ url: `/group/${group.id}`,
+ };
+ });
+ return res.status(200).json(groupData);
+ } catch (err) {
+ console.error(err);
+ addToLog(
+ "getKnownGroups",
+ "error",
+ "Attempt to get known groups failed with error: " + err,
+ );
+ return res.status(500).json({
+ errors: [
+ {
+ message: err,
+ },
+ ],
+ });
+ }
+});
+
export default router;