diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 2d2e4bebe..d3f7163c7 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -49,14 +49,15 @@ export const handlePurchase = async ( if (purchaseRequest.PurchaseParams.Source == 7) { const manifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!); - if (manifest) { - const offer = manifest.VendorInfo.ItemManifest.find( - x => x.StoreItem == purchaseRequest.PurchaseParams.StoreItem - ); - if (offer) { - purchaseRequest.PurchaseParams.Quantity *= offer.QuantityMultiplier; - } + if (!manifest) { + throw new Error(`unknown vendor id: ${purchaseRequest.PurchaseParams.SourceId!}`); } + const ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson!) as { ItemId: string }).ItemId; + const offer = manifest.VendorInfo.ItemManifest.find(x => x.Id.$oid == ItemId); + if (!offer) { + throw new Error(`unknown vendor offer: ${ItemId}`); + } + purchaseRequest.PurchaseParams.Quantity *= offer.QuantityMultiplier; } const purchaseResponse = await handleStoreItemAcquisition( diff --git a/src/types/purchaseTypes.ts b/src/types/purchaseTypes.ts index 19e8ff33e..2aca5212c 100644 --- a/src/types/purchaseTypes.ts +++ b/src/types/purchaseTypes.ts @@ -17,6 +17,8 @@ export interface IPurchaseParams { ExpectedPrice: number; SyndicateTag?: string; // for Source 2 UseFreeFavor?: boolean; // for Source 2 + ExtraPurchaseInfoJson?: string; // for Source 7 + IsWeekly?: boolean; // for Source 7 } export interface ICurrencyChanges {