From c1bf69b144d9ff162c5b47ccd3a7a9de58d73d9d Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Mon, 16 Jun 2025 17:37:32 +0200 Subject: [PATCH 1/3] fix: ensure helminth shard operations don't produce a null shard --- src/controllers/api/infestedFoundryController.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/controllers/api/infestedFoundryController.ts b/src/controllers/api/infestedFoundryController.ts index 4cc21061..495b4d8b 100644 --- a/src/controllers/api/infestedFoundryController.ts +++ b/src/controllers/api/infestedFoundryController.ts @@ -30,8 +30,9 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { const request = getJSONfromString(String(req.body)); const inventory = await getInventory(account._id.toString()); const suit = inventory.Suits.id(request.SuitId.$oid)!; - if (!suit.ArchonCrystalUpgrades || suit.ArchonCrystalUpgrades.length != 5) { - suit.ArchonCrystalUpgrades = [{}, {}, {}, {}, {}]; + suit.ArchonCrystalUpgrades ??= []; + while (suit.ArchonCrystalUpgrades.length < request.Slot) { + suit.ArchonCrystalUpgrades.push({}); } suit.ArchonCrystalUpgrades[request.Slot] = { UpgradeType: request.UpgradeType, @@ -92,7 +93,8 @@ export const infestedFoundryController: RequestHandler = async (req, res) => { } // remove from suit - suit.ArchonCrystalUpgrades![request.Slot] = {}; + suit.ArchonCrystalUpgrades![request.Slot].UpgradeType = undefined; + suit.ArchonCrystalUpgrades![request.Slot].Color = undefined; await inventory.save(); -- 2.47.2 From a1e56df5193b339ef7feadabd15d941db726c03b Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 17 Jun 2025 00:00:05 +0200 Subject: [PATCH 2/3] this ain't needed --- src/models/inventoryModels/inventoryModel.ts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index 2e4008dd..b6f81215 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -251,12 +251,6 @@ const ArchonCrystalUpgradeSchema = new Schema( { _id: false } ); -ArchonCrystalUpgradeSchema.set("toJSON", { - transform(_document, returnedObject) { - delete returnedObject.__v; - } -}); - const boosterSchema = new Schema( { ExpiryDate: Number, -- 2.47.2 From cfa7def9d12b2b1ddb22e9739a0396ff0dfa8363 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 17 Jun 2025 00:03:57 +0200 Subject: [PATCH 3/3] fix null in inventory response --- src/models/inventoryModels/inventoryModel.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index b6f81215..a9335fa7 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1073,6 +1073,11 @@ EquipmentSchema.set("toJSON", { if (db.UmbraDate) { client.UmbraDate = toMongoDate(db.UmbraDate); } + + if (client.ArchonCrystalUpgrades) { + // For some reason, mongoose turns empty objects here into nulls, so we have to fix it. + client.ArchonCrystalUpgrades = client.ArchonCrystalUpgrades.map(x => (x as unknown) ?? {}); + } } }); -- 2.47.2