diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 53d554c7..8316b9cb 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { getAccountForRequest } from "@/src/services/loginService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; import { Inventory, TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel"; import { config } from "@/src/services/configService"; import allDialogue from "@/static/fixed_responses/allDialogue.json"; @@ -17,9 +17,9 @@ import { applyCheatsToInfestedFoundry, handleSubsumeCompletion } from "./infeste import { allDailyAffiliationKeys, createLibraryDailyTask } from "@/src/services/inventoryService"; export const inventoryController: RequestHandler = async (request, response) => { - const account = await getAccountForRequest(request); + const accountId = await getAccountIdForRequest(request); - const inventory = await Inventory.findOne({ accountOwnerId: account._id.toString() }); + const inventory = await Inventory.findOne({ accountOwnerId: accountId }); if (!inventory) { response.status(400).json({ error: "inventory was undefined" }); @@ -27,11 +27,7 @@ export const inventoryController: RequestHandler = async (request, response) => } // Handle daily reset - const today: number = Math.trunc(new Date().getTime() / 86400000); - if (account.LastLoginDay != today) { - account.LastLoginDay = today; - await account.save(); - + if (!inventory.NextRefill || Date.now() >= inventory.NextRefill.getTime()) { for (const key of allDailyAffiliationKeys) { inventory[key] = 16000 + inventory.PlayerLevel * 500; } @@ -39,6 +35,7 @@ export const inventoryController: RequestHandler = async (request, response) => inventory.LibraryAvailableDailyTaskInfo = createLibraryDailyTask(); + inventory.NextRefill = new Date((Math.trunc(Date.now() / 86400000) + 1) * 86400000); await inventory.save(); } @@ -219,9 +216,6 @@ export const getInventoryResponse = async ( applyCheatsToInfestedFoundry(inventoryResponse.InfestedFoundry); } - // Fix for #380 - inventoryResponse.NextRefill = { $date: { $numberLong: "9999999999999" } }; - // This determines if the "void fissures" tab is shown in navigation. inventoryResponse.HasOwnedVoidProjectionsPreviously = true; diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c7446f41..d16eab27 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -1360,7 +1360,7 @@ const inventorySchema = new Schema( //https://warframe.fandom.com/wiki/Helminth InfestedFoundry: infestedFoundrySchema, - NextRefill: Schema.Types.Mixed, // Date, convert to IMongoDate + NextRefill: { type: Date, default: undefined }, //Purchase this new permanent skin from the Lotus customization options in Personal Quarters located in your Orbiter. //https://warframe.fandom.com/wiki/Lotus#The_New_War @@ -1435,6 +1435,9 @@ inventorySchema.set("toJSON", { if (inventoryDatabase.BlessingCooldown) { inventoryResponse.BlessingCooldown = toMongoDate(inventoryDatabase.BlessingCooldown); } + if (inventoryDatabase.NextRefill) { + inventoryResponse.NextRefill = toMongoDate(inventoryDatabase.NextRefill); + } } }); diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index 75a12356..47cbe8ff 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -21,7 +21,6 @@ const databaseAccountSchema = new Schema( TrackedSettings: { type: [String], default: [] }, Nonce: { type: Number, default: 0 }, Dropped: Boolean, - LastLoginDay: { type: Number }, LatestEventMessageDate: { type: Date, default: 0 } }, opts diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index 6fff6735..70d070b0 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -42,6 +42,7 @@ export interface IInventoryDatabase | "PendingCoupon" | "Drones" | "RecentVendorPurchases" + | "NextRefill" | TEquipmentKey >, InventoryDatabaseEquipment { @@ -69,6 +70,7 @@ export interface IInventoryDatabase PendingCoupon?: IPendingCouponDatabase; Drones: IDroneDatabase[]; RecentVendorPurchases?: IRecentVendorPurchaseDatabase[]; + NextRefill?: Date; } export interface IQuestKeyDatabase { @@ -307,7 +309,7 @@ export interface IInventoryClient extends IDailyAffiliations, InventoryClientEqu UseAdultOperatorLoadout?: boolean; NemesisAbandonedRewards: string[]; LastInventorySync: IOid; - NextRefill: IMongoDate; // Next time argon crystals will have a decay tick + NextRefill?: IMongoDate; FoundToday?: IMiscItem[]; // for Argon Crystals CustomMarkers?: ICustomMarkers[]; ActiveLandscapeTraps: any[]; diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index 108b0417..0aaf2eed 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -15,7 +15,6 @@ export interface IDatabaseAccount extends IAccountAndLoginResponseCommons { email: string; password: string; Dropped?: boolean; - LastLoginDay?: number; LatestEventMessageDate: Date; }