feat: implement setShipFavouriteLoadout.php #662
31
src/controllers/api/setShipFavouriteLoadoutController.ts
Normal file
31
src/controllers/api/setShipFavouriteLoadoutController.ts
Normal file
@ -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;
|
||||||
|
}
|
@ -54,6 +54,7 @@ import { setActiveShipController } from "@/src/controllers/api/setActiveShipCont
|
|||||||
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
import { setBootLocationController } from "@/src/controllers/api/setBootLocationController";
|
||||||
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
import { setPlacedDecoInfoController } from "@/src/controllers/api/setPlacedDecoInfoController";
|
||||||
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
import { setShipCustomizationsController } from "@/src/controllers/api/setShipCustomizationsController";
|
||||||
|
import { setShipFavouriteLoadoutController } from "@/src/controllers/api/setShipFavouriteLoadoutController";
|
||||||
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
|
import { setSupportedSyndicateController } from "@/src/controllers/api/setSupportedSyndicateController";
|
||||||
import { setWeaponSkillTreeController } from "../controllers/api/setWeaponSkillTreeController";
|
import { setWeaponSkillTreeController } from "../controllers/api/setWeaponSkillTreeController";
|
||||||
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
|
import { shipDecorationsController } from "@/src/controllers/api/shipDecorationsController";
|
||||||
@ -134,6 +135,7 @@ apiRouter.post("/saveLoadout.php", saveLoadoutController);
|
|||||||
apiRouter.post("/sell.php", sellController);
|
apiRouter.post("/sell.php", sellController);
|
||||||
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
apiRouter.post("/setPlacedDecoInfo.php", setPlacedDecoInfoController);
|
||||||
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
apiRouter.post("/setShipCustomizations.php", setShipCustomizationsController);
|
||||||
|
apiRouter.post("/setShipFavouriteLoadout.php", setShipFavouriteLoadoutController);
|
||||||
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
|
apiRouter.post("/setWeaponSkillTree.php", setWeaponSkillTreeController);
|
||||||
apiRouter.post("/shipDecorations.php", shipDecorationsController);
|
apiRouter.post("/shipDecorations.php", shipDecorationsController);
|
||||||
apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);
|
apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user
🛠️ Refactor suggestion
Return a proper response instead of throwing an error.
Throwing an error can break the request pipeline and produce a 500 internal server error. Instead, return a suitable status code (e.g., 400) and problem detail JSON, clarifying why the request was rejected.
📝 Committable suggestion