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