From 596aea78903d2e5c40bb164f5436b62226dac9c7 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 19 Dec 2024 01:33:30 +0100 Subject: [PATCH 1/3] Add getAccountForRequest --- src/services/loginService.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/services/loginService.ts b/src/services/loginService.ts index 3ddb7982..36d4d57e 100644 --- a/src/services/loginService.ts +++ b/src/services/loginService.ts @@ -44,7 +44,7 @@ export const createPersonalRooms = async (accountId: Types.ObjectId, shipId: Typ await personalRooms.save(); }; -export const getAccountIdForRequest = async (req: Request): Promise => { +export const getAccountForRequest = async (req: Request) => { if (!req.query.accountId) { throw new Error("Request is missing accountId parameter"); } @@ -61,5 +61,9 @@ export const getAccountIdForRequest = async (req: Request): Promise => { if (!account) { throw new Error("Invalid accountId-nonce pair"); } - return account._id.toString(); + return account; +}; + +export const getAccountIdForRequest = async (req: Request): Promise => { + return (await getAccountForRequest(req))._id.toString(); }; -- 2.47.2 From 17f511359cef62748677116684d658d4d50d7731 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 19 Dec 2024 01:47:48 +0100 Subject: [PATCH 2/3] feat: implement daily reset for syndicate standing --- src/controllers/api/inventoryController.ts | 31 +++++++++++++++++--- src/models/inventoryModels/inventoryModel.ts | 1 + src/models/loginModel.ts | 3 +- src/types/inventoryTypes/inventoryTypes.ts | 1 + src/types/loginTypes.ts | 1 + 5 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/controllers/api/inventoryController.ts b/src/controllers/api/inventoryController.ts index 5cb4acd6..466652c1 100644 --- a/src/controllers/api/inventoryController.ts +++ b/src/controllers/api/inventoryController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getAccountForRequest } from "@/src/services/loginService"; import { toInventoryResponse } from "@/src/helpers/inventoryHelpers"; import { Inventory } from "@/src/models/inventoryModels/inventoryModel"; import { config } from "@/src/services/configService"; @@ -12,15 +12,15 @@ import { ExportCustoms, ExportFlavour, ExportKeys, ExportResources } from "warfr // eslint-disable-next-line @typescript-eslint/no-misused-promises const inventoryController: RequestHandler = async (request, response) => { - let accountId; + let account; try { - accountId = await getAccountIdForRequest(request); + account = await getAccountForRequest(request); } catch (e) { response.status(400).send("Log-in expired"); return; } - const inventory = await Inventory.findOne({ accountOwnerId: accountId }) + const inventory = await Inventory.findOne({ accountOwnerId: account._id.toString() }) .populate<{ LoadOutPresets: ILoadoutDatabase }>("LoadOutPresets") .populate<{ Ships: IShipInventory }>("Ships", "-ShipInteriorColors"); @@ -29,6 +29,29 @@ const inventoryController: RequestHandler = async (request, response) => { return; } + // Handle daily reset + const today: number = Math.trunc(new Date().getTime() / 86400000); + if (account.LastLoginDay != today) { + account.LastLoginDay = today; + await account.save(); + + inventory.DailyAffiliation = 16000; + inventory.DailyAffiliationPvp = 16000; + inventory.DailyAffiliationLibrary = 16000; + inventory.DailyAffiliationCetus = 16000; + inventory.DailyAffiliationQuills = 16000; + inventory.DailyAffiliationSolaris = 16000; + inventory.DailyAffiliationVentkids = 16000; + inventory.DailyAffiliationVox = 16000; + inventory.DailyAffiliationEntrati = 16000; + inventory.DailyAffiliationNecraloid = 16000; + inventory.DailyAffiliationZariman = 16000; + inventory.DailyAffiliationKahl = 16000; + inventory.DailyAffiliationCavia = 16000; + inventory.DailyAffiliationHex = 16000; + await inventory.save(); + } + //TODO: make a function that converts from database representation to client const inventoryJSON = inventory.toJSON(); diff --git a/src/models/inventoryModels/inventoryModel.ts b/src/models/inventoryModels/inventoryModel.ts index c49e8eb6..41df80c4 100644 --- a/src/models/inventoryModels/inventoryModel.ts +++ b/src/models/inventoryModels/inventoryModel.ts @@ -635,6 +635,7 @@ const inventorySchema = new Schema( DailyAffiliationZariman: Number, DailyAffiliationKahl: Number, DailyAffiliationCavia: Number, + DailyAffiliationHex: Number, //Daily Focus limit DailyFocus: Number, diff --git a/src/models/loginModel.ts b/src/models/loginModel.ts index 03e52265..3048335c 100644 --- a/src/models/loginModel.ts +++ b/src/models/loginModel.ts @@ -33,7 +33,8 @@ const databaseAccountSchema = new Schema( AmazonRefreshToken: { type: String }, ConsentNeeded: { type: Boolean, required: true }, TrackedSettings: { type: [String], default: [] }, - Nonce: { type: Number, default: 0 } + Nonce: { type: Number, default: 0 }, + LastLoginDay: { type: Number } }, opts ); diff --git a/src/types/inventoryTypes/inventoryTypes.ts b/src/types/inventoryTypes/inventoryTypes.ts index dd6acc18..7c9250f6 100644 --- a/src/types/inventoryTypes/inventoryTypes.ts +++ b/src/types/inventoryTypes/inventoryTypes.ts @@ -275,6 +275,7 @@ export interface IInventoryResponse { NemesisAbandonedRewards: string[]; DailyAffiliationKahl: number; DailyAffiliationCavia: number; + DailyAffiliationHex?: number; LastInventorySync: IOid; NextRefill: IMongoDate; // Next time argon crystals will have a decay tick FoundToday?: IMiscItem[]; // for Argon Crystals diff --git a/src/types/loginTypes.ts b/src/types/loginTypes.ts index f5dcfaf6..cfec7ad9 100644 --- a/src/types/loginTypes.ts +++ b/src/types/loginTypes.ts @@ -32,6 +32,7 @@ export interface IDatabaseAccount { ConsentNeeded: boolean; TrackedSettings: string[]; Nonce: number; + LastLoginDay?: number; } export interface ILoginRequest { -- 2.47.2 From 36fe9db781a07ed5ea854bad4d263a48d19a66a9 Mon Sep 17 00:00:00 2001 From: Sainan Date: Thu, 19 Dec 2024 02:09:18 +0100 Subject: [PATCH 3/3] fix: failure to login --- src/controllers/api/loginController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/controllers/api/loginController.ts b/src/controllers/api/loginController.ts index 9338b3c7..fc91703d 100644 --- a/src/controllers/api/loginController.ts +++ b/src/controllers/api/loginController.ts @@ -36,7 +36,7 @@ const loginController: RequestHandler = async (request, response) => { }); logger.debug("created new account"); // eslint-disable-next-line @typescript-eslint/no-unused-vars - const { email, password, ...databaseAccount } = newAccount; + const { email, password, LastLoginDay, ...databaseAccount } = newAccount; const newLoginResponse: ILoginResponse = { ...databaseAccount, Groups: groups, @@ -72,7 +72,7 @@ const loginController: RequestHandler = async (request, response) => { } await account.save(); - const { email, password, ...databaseAccount } = account.toJSON(); + const { email, password, LastLoginDay, ...databaseAccount } = account.toJSON(); const newLoginResponse: ILoginResponse = { ...databaseAccount, Groups: groups, -- 2.47.2