From 27a0df2d9275892a5dc99c3f484d6fc650cbdace Mon Sep 17 00:00:00 2001 From: Dev Date: Sun, 26 Mar 2023 16:52:40 +0100 Subject: [PATCH] Fix: Improve `InventoryController.toggleItem()` to handle items without a upd property Rewrote loop to use .find() Added comments + logging --- .../src/controllers/InventoryController.ts | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/project/src/controllers/InventoryController.ts b/project/src/controllers/InventoryController.ts index ed6c3628..827c4fac 100644 --- a/project/src/controllers/InventoryController.ts +++ b/project/src/controllers/InventoryController.ts @@ -379,6 +379,10 @@ export class InventoryController /** * Toggles "Toggleable" items like night vision goggles and face shields. + * @param pmcData player profile + * @param body Toggle request + * @param sessionID Session id + * @returns IItemEventRouterResponse */ public toggleItem(pmcData: IPmcData, body: IInventoryToggleRequestData, sessionID: string): IItemEventRouterResponse { @@ -388,16 +392,24 @@ export class InventoryController pmcData = this.profileHelper.getScavProfile(sessionID); } - for (const item of pmcData.Inventory.items) + const itemToToggle = pmcData.Inventory.items.find(x => x._id === body.item); + if (itemToToggle) { - if (item._id && item._id === body.item) + if (!itemToToggle.upd) { - item.upd.Togglable = { On: body.value }; - return this.eventOutputHolder.getOutput(sessionID); + this.logger.warning(`Item with _id: ${itemToToggle._id} is missing a upd object, adding`); + itemToToggle.upd = {}; } + + itemToToggle.upd.Togglable = { On: body.value }; + + return this.eventOutputHolder.getOutput(sessionID); + } + else + { + this.logger.warning(`Unable to find inventory item with _id to toggle: ${body.item}`); } - //return ""; return { warnings: [], profileChanges: {}