From 9a0f112420fa1eb56224b3150cd68913dc5b1bb6 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 13 Jun 2025 13:49:23 +0200 Subject: [PATCH] fix: handle null in ArchonCrystalUpgrades --- src/controllers/api/infestedFoundryController.ts | 8 ++++---- .../custom/popArchonCrystalUpgradeController.ts | 2 +- src/types/inventoryTypes/commonInventoryTypes.ts | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/controllers/api/infestedFoundryController.ts b/src/controllers/api/infestedFoundryController.ts index 4cc21061..547de070 100644 --- a/src/controllers/api/infestedFoundryController.ts +++ b/src/controllers/api/infestedFoundryController.ts @@ -60,10 +60,10 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { const suit = inventory.Suits.id(request.SuitId.$oid)!; const miscItemChanges: IMiscItem[] = []; - if (suit.ArchonCrystalUpgrades![request.Slot].Color) { + if (suit.ArchonCrystalUpgrades![request.Slot]?.Color) { // refund shard const shard = Object.entries(colorToShard).find( - ([color]) => color == suit.ArchonCrystalUpgrades![request.Slot].Color + ([color]) => color == suit.ArchonCrystalUpgrades![request.Slot]!.Color )![1]; miscItemChanges.push({ ItemType: shard, @@ -83,9 +83,9 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { // >= 38.6.0 type = archonCrystalRemovalResource[ - suit.ArchonCrystalUpgrades![request.Slot].Color!.replace("_MYTHIC", "") + suit.ArchonCrystalUpgrades![request.Slot]!.Color!.replace("_MYTHIC", "") ]; - count = suit.ArchonCrystalUpgrades![request.Slot].Color!.indexOf("_MYTHIC") != -1 ? 300 : 150; + count = suit.ArchonCrystalUpgrades![request.Slot]!.Color!.indexOf("_MYTHIC") != -1 ? 300 : 150; } inventory.InfestedFoundry!.Resources!.find(x => x.ItemType == type)!.Count -= count; } diff --git a/src/controllers/custom/popArchonCrystalUpgradeController.ts b/src/controllers/custom/popArchonCrystalUpgradeController.ts index 34e87ec6..943f9dbb 100644 --- a/src/controllers/custom/popArchonCrystalUpgradeController.ts +++ b/src/controllers/custom/popArchonCrystalUpgradeController.ts @@ -8,7 +8,7 @@ export const popArchonCrystalUpgradeController: RequestHandler = async (req, res const suit = inventory.Suits.id(req.query.oid as string); if (suit && suit.ArchonCrystalUpgrades) { suit.ArchonCrystalUpgrades = suit.ArchonCrystalUpgrades.filter( - x => x.UpgradeType != (req.query.type as string) + x => x && x.UpgradeType != (req.query.type as string) ); await inventory.save(); res.end(); diff --git a/src/types/inventoryTypes/commonInventoryTypes.ts b/src/types/inventoryTypes/commonInventoryTypes.ts index 8cc0d56f..9248b1e9 100644 --- a/src/types/inventoryTypes/commonInventoryTypes.ts +++ b/src/types/inventoryTypes/commonInventoryTypes.ts @@ -136,7 +136,7 @@ export interface IEquipmentDatabase { DefensiveUpgrade?: string; UpgradesExpiry?: Date; UmbraDate?: Date; // related to scrapped "echoes of umbra" feature - ArchonCrystalUpgrades?: IArchonCrystalUpgrade[]; + ArchonCrystalUpgrades?: (IArchonCrystalUpgrade | null)[]; Weapon?: ICrewShipWeapon; Customization?: ICrewShipCustomization; RailjackImage?: IFlavourItem; -- 2.47.2