From 7716c945d0bff06dfe7d9aa0f4e3e339b405c970 Mon Sep 17 00:00:00 2001 From: Sainan Date: Fri, 24 Jan 2025 14:17:52 +0100 Subject: [PATCH] fix: address some client warnings about malformed inventory.php response (#840) --- src/controllers/api/inventoryController.ts | 4 +++ src/models/inventoryModels/inventoryModel.ts | 27 +++++++++++++------- src/types/inventoryTypes/inventoryTypes.ts | 1 - 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index b4e0035d..33c6021f 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -16,6 +16,8 @@ import { } from "warframe-public-export-plus"; import { handleSubsumeCompletion } from "./infestedFoundryController"; import { allDailyAffiliationKeys } from "@/src/services/inventoryService"; +import { toOid } from "@/src/helpers/inventoryHelpers"; +import { Types } from "mongoose"; export const inventoryController: RequestHandler = async (request, response) => { const account = await getAccountForRequest(request); @@ -247,6 +249,8 @@ export const inventoryController: RequestHandler = async (request, response) => // This determines if the "void fissures" tab is shown in navigation. inventoryResponse.HasOwnedVoidProjectionsPreviously = true; + inventoryResponse.LastInventorySync = toOid(new Types.ObjectId()); + response.json(inventoryResponse); }; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index a803a36c..ebc9f01e 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -63,7 +63,8 @@ import { IOperatorConfigDatabase, IPolarity, IEquipmentDatabase, - IArchonCrystalUpgrade + IArchonCrystalUpgrade, + IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; import { EquipmentSelectionSchema } from "./loadoutModel"; @@ -121,10 +122,14 @@ const polaritySchema = new Schema( { _id: false } ); -const abilityOverrideSchema = new Schema({ - Ability: String, - Index: Number -}); +const abilityOverrideSchema = new Schema( + { + Ability: String, + Index: Number + }, + { _id: false } +); + export const colorSchema = new Schema( { t0: Number, @@ -257,6 +262,13 @@ EquipmentSchema.set("toJSON", { transform(_document, returnedObject) { delete returnedObject._id; delete returnedObject.__v; + + const db = returnedObject as IEquipmentDatabase; + const client = returnedObject as IEquipmentClient; + + if (db.InfestationDate) { + client.InfestationDate = toMongoDate(db.InfestationDate); + } } }); @@ -959,8 +971,6 @@ const inventorySchema = new Schema( XPInfo: [TypeXPItemSchema], //Mastery Rank next availability TrainingDate: { type: Date, default: new Date(0) }, - //Retries rank up(3 time) - TrainingRetriesLeft: Number, //you saw last played Region when you opened the star map LastRegionPlayed: String, @@ -1111,7 +1121,6 @@ const inventorySchema = new Schema( ChallengesFixVersion: Number, PlayedParkourTutorial: Boolean, SubscribedToEmailsPersonalized: Number, - LastInventorySync: Schema.Types.Mixed, // this should be Schema.Types.ObjectId, but older inventories may break with that. ActiveLandscapeTraps: [Schema.Types.Mixed], RepVotes: [Schema.Types.Mixed], LeagueTickets: [Schema.Types.Mixed], @@ -1141,7 +1150,7 @@ const inventorySchema = new Schema( DialogueHistory: dialogueHistorySchema }, - { timestamps: { createdAt: "Created" } } + { timestamps: { createdAt: "Created", updatedAt: false } } ); inventorySchema.set("toJSON", { diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 3a225fc3..c9e2d121 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -209,7 +209,6 @@ export interface IInventoryClient extends IDailyAffiliations { QuestKeys: IQuestKeyClient[]; FlavourItems: IFlavourItem[]; Scoops: IEquipmentDatabase[]; - TrainingRetriesLeft: number; LoadOutPresets: ILoadOutPresets; CurrentLoadOutIds: IOid[]; // we store it in the database using this representation as well :/ Missions: IMission[];