diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 9d51f597..99d189d0 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -82,7 +82,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]; @@ -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 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;