From bddfdb9dc70f7a14e588fe93c62a16c77b20c75d Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 30 Dec 2024 00:48:19 +0100 Subject: [PATCH] feat: implement setShipFavouriteLoadout.php --- .../api/setShipFavouriteLoadoutController.ts | 31 +++++++++++++++++++ src/routes/api.ts | 2 ++ 2 files changed, 33 insertions(+) create mode 100644 src/controllers/api/setShipFavouriteLoadoutController.ts diff --git a/src/controllers/api/setShipFavouriteLoadoutController.ts b/src/controllers/api/setShipFavouriteLoadoutController.ts new file mode 100644 index 00000000..d798e0ed --- /dev/null +++ b/src/controllers/api/setShipFavouriteLoadoutController.ts @@ -0,0 +1,31 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { RequestHandler } from "express"; +import { getPersonalRooms } from "@/src/services/personalRoomsService"; +import { IOid } from "@/src/types/commonTypes"; +import { Types } from "mongoose"; + +export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const personalRooms = await getPersonalRooms(accountId); + const body = JSON.parse(String(req.body)) as ISetShipFavouriteLoadoutRequest; + if (body.BootLocation != "SHOP") { + throw new Error(`unexpected BootLocation: ${body.BootLocation}`); + } + const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName); + if (display) { + display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid); + } else { + personalRooms.TailorShop.FavouriteLoadouts.push({ + Tag: body.TagName, + LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid) + }); + } + await personalRooms.save(); + res.json({}); +}; + +interface ISetShipFavouriteLoadoutRequest { + BootLocation: string; + FavouriteLoadoutId: IOid; + TagName: string; +} diff --git a/src/routes/api.ts b/src/routes/api.ts index d30bd9b5..fbec4406 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -54,6 +54,7 @@ import { setActiveShipController } from "@/src/controllers/api/setActiveShipCont import { setBootLocationController } from "@/src/controllers/api/setBootLocationController"; import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController"; import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController"; +import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController"; import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController"; import { setWeaponSkillTreeController } from "../controllers/api/setWeaponSkillTreeController"; import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController"; @@ -134,6 +135,7 @@ apiRouter.post("/saveLoadout.php", saveLoadoutController); apiRouter.post("/sell.php", sellController); apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController); apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController); +apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController); apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController); apiRouter.post("/shipDecorations.php", shipDecorationsController); apiRouter.post("/startDojoRecipe.php", startDojoRecipeController); -- 2.47.2