From de9283e3a723bb548fd47cceac4cf30387f98a1e Mon Sep 17 00:00:00 2001 From: nrbdev Date: Sat, 22 Feb 2025 16:12:55 -0500 Subject: [PATCH 1/5] feat: implement creditbundle purchases --- src/services/purchaseService.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index bc2ef924..69723d24 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -330,6 +330,20 @@ const handleBoosterPackPurchase = async ( return purchaseResponse; }; +const handleCreditBundlePurchase = async ( + typeName: string, + inventory: TInventoryDatabaseDocument +): Promise => { + const bundleName = typeName.split(typeName).pop(); + // CreditBundleA = 50.000 credits or CreditBundleC = 175.000 credits + const creditsAmount = bundleName == "CreditBundleA" ? 50_000 : 175_000; + + inventory.RegularCredits += creditsAmount; + await inventory.save(); + + return { InventoryChanges: { RegularCredits: creditsAmount } }; +}; + //TODO: change to getInventory, apply changes then save at the end const handleTypesPurchase = async ( typesName: string, @@ -345,6 +359,8 @@ const handleTypesPurchase = async ( return handleBoosterPackPurchase(typesName, inventory, quantity); case "SlotItems": return handleSlotPurchase(typesName, inventory, quantity); + case "CreditBundles": + return handleCreditBundlePurchase(typesName, inventory); } }; -- 2.47.2 From 2dfb36018f21a94a379593edf6c4aa863fbea6db Mon Sep 17 00:00:00 2001 From: nrbdev Date: Sat, 22 Feb 2025 16:22:47 -0500 Subject: [PATCH 2/5] handle invalid bundle request --- src/services/purchaseService.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 69723d24..726fad1d 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -335,8 +335,19 @@ const handleCreditBundlePurchase = async ( inventory: TInventoryDatabaseDocument ): Promise => { const bundleName = typeName.split(typeName).pop(); + let creditsAmount = 0; + // CreditBundleA = 50.000 credits or CreditBundleC = 175.000 credits - const creditsAmount = bundleName == "CreditBundleA" ? 50_000 : 175_000; + switch (bundleName) { + case "CreditBundleA": + creditsAmount = 50_000; + break; + case "CreditBundleC": + creditsAmount = 175_000; + break; + default: + throw new Error("invalid credit bundle: " + bundleName); + } inventory.RegularCredits += creditsAmount; await inventory.save(); -- 2.47.2 From af7df537994f0266c2028912e03ea2b2edf901c4 Mon Sep 17 00:00:00 2001 From: nrbdev Date: Sat, 22 Feb 2025 16:30:17 -0500 Subject: [PATCH 3/5] fix typo in split() --- src/services/purchaseService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 726fad1d..75742c6a 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -334,7 +334,7 @@ const handleCreditBundlePurchase = async ( typeName: string, inventory: TInventoryDatabaseDocument ): Promise => { - const bundleName = typeName.split(typeName).pop(); + const bundleName = typeName.split("/").pop(); let creditsAmount = 0; // CreditBundleA = 50.000 credits or CreditBundleC = 175.000 credits -- 2.47.2 From ab111d5c57470c77ed18f586e5afed90aadf55cc Mon Sep 17 00:00:00 2001 From: nrbdev Date: Sat, 22 Feb 2025 19:46:34 -0500 Subject: [PATCH 4/5] use creditBundles --- src/services/missionInventoryUpdateService.ts | 4 ++- src/services/purchaseService.ts | 25 +++++++------------ 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 766518e2..d579662f 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -62,7 +62,9 @@ export const creditBundles: Record = { "/Lotus/Types/PickUps/Credits/CorpusArenaCreditRewards/CorpusArenaRewardTwoHard": 175000, "/Lotus/Types/PickUps/Credits/CorpusArenaCreditRewards/CorpusArenaRewardThreeHard": 250000, "/Lotus/Types/StoreItems/CreditBundles/Zariman/TableACreditsCommon": 15000, - "/Lotus/Types/StoreItems/CreditBundles/Zariman/TableACreditsUncommon": 30000 + "/Lotus/Types/StoreItems/CreditBundles/Zariman/TableACreditsUncommon": 30000, + "/Lotus/Types/StoreItems/CreditBundles/CreditBundleA": 50000, + "/Lotus/Types/StoreItems/CreditBundles/CreditBundleC": 175000 }; export const fusionBundles: Record = { diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 75742c6a..c4dcaddb 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -25,6 +25,7 @@ import { } from "warframe-public-export-plus"; import { config } from "./configService"; import { TInventoryDatabaseDocument } from "../models/inventoryModels/inventoryModel"; +import { creditBundles } from "./missionInventoryUpdateService"; export const getStoreItemCategory = (storeItem: string): string => { const storeItemString = getSubstringFromKeyword(storeItem, "StoreItems/"); @@ -335,24 +336,16 @@ const handleCreditBundlePurchase = async ( inventory: TInventoryDatabaseDocument ): Promise => { const bundleName = typeName.split("/").pop(); - let creditsAmount = 0; - // CreditBundleA = 50.000 credits or CreditBundleC = 175.000 credits - switch (bundleName) { - case "CreditBundleA": - creditsAmount = 50_000; - break; - case "CreditBundleC": - creditsAmount = 175_000; - break; - default: - throw new Error("invalid credit bundle: " + bundleName); + if (bundleName && bundleName in creditBundles) { + const creditsAmount = creditBundles[bundleName]; + inventory.RegularCredits += creditsAmount; + await inventory.save(); + + return { InventoryChanges: { RegularCredits: creditsAmount } }; + } else { + throw new Error(`unknown credit bundle: ${typeName}`); } - - inventory.RegularCredits += creditsAmount; - await inventory.save(); - - return { InventoryChanges: { RegularCredits: creditsAmount } }; }; //TODO: change to getInventory, apply changes then save at the end -- 2.47.2 From 998808505d4d612169c7d44bb9406eb5a24f14ce Mon Sep 17 00:00:00 2001 From: nrbdev Date: Sat, 22 Feb 2025 19:53:53 -0500 Subject: [PATCH 5/5] oversight --- src/services/purchaseService.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index c4dcaddb..7b59ab52 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -335,10 +335,9 @@ const handleCreditBundlePurchase = async ( typeName: string, inventory: TInventoryDatabaseDocument ): Promise => { - const bundleName = typeName.split("/").pop(); + if (typeName && typeName in creditBundles) { + const creditsAmount = creditBundles[typeName]; - if (bundleName && bundleName in creditBundles) { - const creditsAmount = creditBundles[bundleName]; inventory.RegularCredits += creditsAmount; await inventory.save(); -- 2.47.2