diff --git a/src/controllers/api/getGuildDojoController.ts b/src/controllers/api/getGuildDojoController.ts index e16040aa..f632cf9a 100644 --- a/src/controllers/api/getGuildDojoController.ts +++ b/src/controllers/api/getGuildDojoController.ts @@ -43,6 +43,8 @@ export const getGuildDojoController: RequestHandler = async (req, res) => { id: toOid(dojoComponent._id), pf: dojoComponent.pf, ppf: dojoComponent.ppf, + Name: dojoComponent.Name, + Message: dojoComponent.Message, DecoCapacity: 600 }; if (dojoComponent.pi) { diff --git a/src/controllers/api/setDojoComponentMessageController.ts b/src/controllers/api/setDojoComponentMessageController.ts new file mode 100644 index 00000000..8e05d058 --- /dev/null +++ b/src/controllers/api/setDojoComponentMessageController.ts @@ -0,0 +1,20 @@ +import { RequestHandler } from "express"; +import { getGuildForRequest } from "@/src/services/guildService"; + +export const setDojoComponentMessageController: RequestHandler = async (req, res) => { + const guild = await getGuildForRequest(req); + // At this point, we know that a member of the guild is making this request. Assuming they are allowed to change the message. + const component = guild.DojoComponents!.find(x => x._id.equals(req.query.componentId as string))!; + const payload = JSON.parse(String(req.body)) as SetDojoComponentMessageRequest; + if ("Name" in payload) { + component.Name = payload.Name; + } else { + component.Message = payload.Message; + } + await guild.save(); + res.json({ + DojoRequestStatus: 1 + }); +}; + +type SetDojoComponentMessageRequest = { Name: string } | { Message: string }; diff --git a/src/models/guildModel.ts b/src/models/guildModel.ts index ab87e719..0582dc64 100644 --- a/src/models/guildModel.ts +++ b/src/models/guildModel.ts @@ -14,6 +14,8 @@ const dojoComponentSchema = new Schema({ pi: Schema.Types.ObjectId, op: String, pp: String, + Name: String, + Message: String, CompletionTime: Date }); diff --git a/src/routes/api.ts b/src/routes/api.ts index 4d2571c0..a0eeba20 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -62,6 +62,7 @@ import { sellController } from "@/src/controllers/api/sellController"; import { setActiveQuestController } from "@/src/controllers/api/setActiveQuestController"; import { setActiveShipController } from "@/src/controllers/api/setActiveShipController"; import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; +import { setDojoComponentMessageController } from "@/src/controllers/api/setDojoComponentMessageController"; import { setEquippedInstrumentController } from "@/src/controllers/api/setEquippedInstrumentController"; import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController"; import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; @@ -158,6 +159,7 @@ apiRouter.post("/rerollRandomMod.php", rerollRandomModController); apiRouter.post("/saveDialogue.php", saveDialogueController); apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/sell.php", sellController); +apiRouter.post("/setDojoComponentMessage.php", setDojoComponentMessageController); apiRouter.post("/setEquippedInstrument.php", setEquippedInstrumentController); apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController); apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 1778582f..827e5d9a 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -34,6 +34,8 @@ export interface IDojoComponentClient { pi?: IOid; // Parent ID. N/A to root. op?: string; // "Open Portal"? N/A to root. pp?: string; // "Parent Portal"? N/A to root. + Name?: string; + Message?: string; RegularCredits?: number; // "Collecting Materials" state: Number of credits that were donated. MiscItems?: IMiscItem[]; // "Collecting Materials" state: Resources that were donated. CompletionTime?: IMongoDate;