From b987e01811e85876ee07faf3c1a485dec86090ee Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Thu, 8 May 2025 04:51:03 -0700 Subject: [PATCH] fix: ships having wrong format in inventory response (#2018) Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2018 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com> --- src/controllers/api/inventoryController.ts | 14 +++++++------- src/models/shipModel.ts | 18 ++++++++---------- src/types/inventoryTypes/inventoryTypes.ts | 2 +- 3 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 10d1364a..59c3415e 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -28,6 +28,7 @@ import { isNemesisCompatibleWithVersion } from "@/src/helpers/nemesisHelpers"; import { version_compare } from "@/src/services/worldStateService"; import { getPersonalRooms } from "@/src/services/personalRoomsService"; import { IPersonalRoomsClient } from "@/src/types/personalRoomsTypes"; +import { Ship } from "@/src/models/shipModel"; export const inventoryController: RequestHandler = async (request, response) => { const account = await getAccountForRequest(request); @@ -133,13 +134,12 @@ export const getInventoryResponse = async ( xpBasedLevelCapDisabled: boolean, buildLabel: string | undefined ): Promise => { - const inventoryWithLoadOutPresets = await inventory.populate<{ LoadOutPresets: ILoadoutDatabase }>( - "LoadOutPresets" - ); - const inventoryWithLoadOutPresetsAndShips = await inventoryWithLoadOutPresets.populate<{ Ships: IShipInventory }>( - "Ships" - ); - const inventoryResponse = inventoryWithLoadOutPresetsAndShips.toJSON(); + const [inventoryWithLoadOutPresets, ships] = await Promise.all([ + inventory.populate<{ LoadOutPresets: ILoadoutDatabase }>("LoadOutPresets"), + Ship.find({ ShipOwnerId: inventory.accountOwnerId }) + ]); + const inventoryResponse = inventoryWithLoadOutPresets.toJSON(); + inventoryResponse.Ships = ships.map(x => x.toJSON()); if (config.infiniteCredits) { inventoryResponse.RegularCredits = 999999999; diff --git a/src/models/shipModel.ts b/src/models/shipModel.ts index 5176defb..a1cd1457 100644 --- a/src/models/shipModel.ts +++ b/src/models/shipModel.ts @@ -28,17 +28,15 @@ shipSchema.set("toJSON", { delete returnedObject._id; delete returnedObject.__v; delete returnedObject.ShipOwnerId; - if (shipDatabase.ShipExteriorColors) { - shipResponse.ShipExterior = { - Colors: shipDatabase.ShipExteriorColors, - ShipAttachments: shipDatabase.ShipAttachments, - SkinFlavourItem: shipDatabase.SkinFlavourItem - }; - delete shipDatabase.ShipExteriorColors; - delete shipDatabase.ShipAttachments; - delete shipDatabase.SkinFlavourItem; - } + shipResponse.ShipExterior = { + Colors: shipDatabase.ShipExteriorColors, + ShipAttachments: shipDatabase.ShipAttachments, + SkinFlavourItem: shipDatabase.SkinFlavourItem + }; + delete shipDatabase.ShipExteriorColors; + delete shipDatabase.ShipAttachments; + delete shipDatabase.SkinFlavourItem; } }); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 23b8ec38..061f616d 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -560,7 +560,7 @@ export interface ICrewShipCustomization { export interface IShipExterior { SkinFlavourItem?: string; - Colors: IColor; + Colors?: IColor; ShipAttachments?: IShipAttachments; }