use NextRefill to handle daily reset

This commit is contained in:
Sainan 2025-03-15 12:06:24 +01:00
parent 294bedd29a
commit 84fdcdde1a
5 changed files with 12 additions and 15 deletions

View File

@ -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;

View File

@ -1360,7 +1360,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
//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);
}
}
});

View File

@ -21,7 +21,6 @@ const databaseAccountSchema = new Schema<IDatabaseAccountJson>(
TrackedSettings: { type: [String], default: [] },
Nonce: { type: Number, default: 0 },
Dropped: Boolean,
LastLoginDay: { type: Number },
LatestEventMessageDate: { type: Date, default: 0 }
},
opts

View File

@ -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[];

View File

@ -15,7 +15,6 @@ export interface IDatabaseAccount extends IAccountAndLoginResponseCommons {
email: string;
password: string;
Dropped?: boolean;
LastLoginDay?: number;
LatestEventMessageDate: Date;
}