From e90921600143b69b877b8cee6b3f237f2ff4243a Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 29 Dec 2024 05:41:44 +0100 Subject: [PATCH 1/2] chore: require SlotNames in IInventoryChanges to be of type IBinChanges --- src/services/inventoryService.ts | 2 +- src/types/purchaseTypes.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 9d51f597..60acf7e6 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -85,7 +85,7 @@ export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, del } else { console.assert(key.substring(-3) == "Bin"); const left = InventoryChanges[key] as IBinChanges; - const right: IBinChanges = delta[key]; + const right: IBinChanges = delta[key] as IBinChanges; left.count += right.count; left.platinum += right.platinum; left.Slots += right.Slots; diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 93725cee..67b96419 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -17,7 +17,9 @@ export interface IPurchaseParams { UseFreeFavor?: boolean; // for Source 2 } -export type IInventoryChanges = Record; +export type IInventoryChanges = { + [_ in SlotNames]?: IBinChanges; +} & Record; export interface IPurchaseResponse { InventoryChanges: IInventoryChanges; -- 2.47.2 From 4b8bae258dbf5e63b944fb388db8bcd261df7d84 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 29 Dec 2024 05:43:43 +0100 Subject: [PATCH 2/2] chore: consider IInventoryChanges being able to contain currency changes --- src/services/inventoryService.ts | 12 +++++++++--- src/types/purchaseTypes.ts | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 60acf7e6..99d189d0 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -82,10 +82,10 @@ export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, del for (const item of right) { left.push(item); } - } else { + } else if (typeof delta[key] == "object") { console.assert(key.substring(-3) == "Bin"); const left = InventoryChanges[key] as IBinChanges; - const right: IBinChanges = delta[key] as IBinChanges; + const right: IBinChanges = delta[key]; left.count += right.count; left.platinum += right.platinum; left.Slots += right.Slots; @@ -93,6 +93,8 @@ export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, del left.Extra ??= 0; left.Extra += right.Extra; } + } else { + logger.warn(`inventory change not merged: ${key}`); } } }; @@ -477,7 +479,11 @@ export const updateSlots = async (accountId: string, slotName: SlotNames, slotAm await inventory.save(); }; -export const updateCurrency = async (price: number, usePremium: boolean, accountId: string) => { +export const updateCurrency = async ( + price: number, + usePremium: boolean, + accountId: string +): Promise => { if (usePremium ? config.infinitePlatinum : config.infiniteCredits) { return {}; } diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 67b96419..83e5fb0d 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -19,6 +19,10 @@ export interface IPurchaseParams { export type IInventoryChanges = { [_ in SlotNames]?: IBinChanges; +} & { + RegularCredits?: number; + PremiumCredits?: number; + PremiumCreditsFree?: number; } & Record; export interface IPurchaseResponse { -- 2.47.2