XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

feat: implement setShipFavouriteLoadout.php (#662)

b8ef39ba
Sainan <sainan@calamity.inc>
提交于

代码差异

2 个文件 +33 -0
Added src/controllers/api/setShipFavouriteLoadoutController.ts +31 -0
@@ -0,0 +1,31 @@
1 import { getAccountIdForRequest } from "@/src/services/loginService";
2 import { RequestHandler } from "express";
3 import { getPersonalRooms } from "@/src/services/personalRoomsService";
4 import { IOid } from "@/src/types/commonTypes";
5 import { Types } from "mongoose";
6
7 export const setShipFavouriteLoadoutController: RequestHandler = async (req, res) => {
8 const accountId = await getAccountIdForRequest(req);
9 const personalRooms = await getPersonalRooms(accountId);
10 const body = JSON.parse(String(req.body)) as ISetShipFavouriteLoadoutRequest;
11 if (body.BootLocation != "SHOP") {
12 throw new Error(`unexpected BootLocation: ${body.BootLocation}`);
13 }
14 const display = personalRooms.TailorShop.FavouriteLoadouts.find(x => x.Tag == body.TagName);
15 if (display) {
16 display.LoadoutId = new Types.ObjectId(body.FavouriteLoadoutId.$oid);
17 } else {
18 personalRooms.TailorShop.FavouriteLoadouts.push({
19 Tag: body.TagName,
20 LoadoutId: new Types.ObjectId(body.FavouriteLoadoutId.$oid)
21 });
22 }
23 await personalRooms.save();
24 res.json({});
25 };
26
27 interface ISetShipFavouriteLoadoutRequest {
28 BootLocation: string;
29 FavouriteLoadoutId: IOid;
30 TagName: string;
31 }
Modified src/routes/api.ts +2 -0
@@ -55,6 +55,7 @@ import { setActiveShipController } from "@/src/controllers/api/setActiveShipCont
55 55 import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
56 56 import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
57 57 import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
58 import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
58 59 import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
59 60 import { setWeaponSkillTreeController } from "../controllers/api/setWeaponSkillTreeController";
60 61 import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
@@ -136,6 +137,7 @@ apiRouter.post("/saveLoadout.php", saveLoadoutController);
136 137 apiRouter.post("/sell.php", sellController);
137 138 apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
138 139 apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
140 apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
139 141 apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
140 142 apiRouter.post("/shipDecorations.php", shipDecorationsController);
141 143 apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);