From fa96ccc9839364d0c7955bd46b1d6e6ceee5b1d8 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Tue, 29 Apr 2025 21:48:35 +0200 Subject: [PATCH] fix: handle DuviriInfo being absent from inventory --- src/controllers/api/inventoryController.ts | 9 ++++++++- src/models/inventoryModels/inventoryModel.ts | 4 ++-- src/services/missionInventoryUpdateService.ts | 2 +- src/types/inventoryTypes/inventoryTypes.ts | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index e9b15a63..4f73a5f7 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -106,7 +106,14 @@ export const inventoryController: RequestHandler = async (request, response) => const currentDuviriMood = Math.trunc(Date.now() / 7200000); if (lastSyncDuviriMood != currentDuviriMood) { logger.debug(`refreshing duviri seed`); - inventory.DuviriInfo.Seed = generateRewardSeed(); + if (!inventory.DuviriInfo) { + inventory.DuviriInfo = { + Seed: generateRewardSeed(), + NumCompletions: 0 + }; + } else { + inventory.DuviriInfo.Seed = generateRewardSeed(); + } } } inventory.LastInventorySync = new Types.ObjectId(); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index dcb5a536..5525b500 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -391,8 +391,8 @@ MailboxSchema.set("toJSON", { const DuviriInfoSchema = new Schema( { - Seed: BigInt, - NumCompletions: { type: Number, default: 0 } + Seed: { type: BigInt, required: true }, + NumCompletions: { type: Number, required: true } }, { _id: false, diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 66328a0d..b7c275d1 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -611,7 +611,7 @@ export const addMissionInventoryUpdates = async ( case "duviriCaveOffers": { // Duviri cave offers (generated with the duviri seed) change after completing one of its game modes (not when aborting). if (inventoryUpdates.MissionStatus != "GS_QUIT") { - inventory.DuviriInfo.Seed = generateRewardSeed(); + inventory.DuviriInfo!.Seed = generateRewardSeed(); } break; } diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 4973ff87..92b6973e 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -202,7 +202,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu OperatorLoadOuts: IOperatorConfigClient[]; KahlLoadOuts: IOperatorConfigClient[]; - DuviriInfo: IDuviriInfo; + DuviriInfo?: IDuviriInfo; Mailbox?: IMailboxClient; SubscribedToEmails: number; Created: IMongoDate;