From 9e21105474856009637c18ae86eab4918cc8da59 Mon Sep 17 00:00:00 2001 From: Sainan Date: Sun, 29 Dec 2024 21:40:54 +0100 Subject: [PATCH] chore: improve IInventoryChanges (#654) --- src/services/inventoryService.ts | 10 ++++++++-- src/types/purchaseTypes.ts | 8 +++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index c9965daf..d41e7ee7 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -81,7 +81,7 @@ 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]; @@ -92,6 +92,8 @@ export const combineInventoryChanges = (InventoryChanges: IInventoryChanges, del left.Extra ??= 0; left.Extra += right.Extra; } + } else { + logger.warn(`inventory change not merged: ${key}`); } } }; @@ -476,7 +478,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 93725cee..83e5fb0d 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -17,7 +17,13 @@ export interface IPurchaseParams { UseFreeFavor?: boolean; // for Source 2 } -export type IInventoryChanges = Record; +export type IInventoryChanges = { + [_ in SlotNames]?: IBinChanges; +} & { + RegularCredits?: number; + PremiumCredits?: number; + PremiumCreditsFree?: number; +} & Record; export interface IPurchaseResponse { InventoryChanges: IInventoryChanges;