From cce83fbd51454f54bb176fdb369d2f09b0988adb Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Sat, 5 Apr 2025 03:20:44 +0200 Subject: [PATCH] chore: simplify serversideVendorsService's api --- .../api/getVendorInfoController.ts | 4 ++-- .../api/postGuildAdvertisementController.ts | 8 ++++---- src/services/purchaseService.ts | 7 +++---- src/services/serversideVendorsService.ts | 20 +++++++++---------- src/types/vendorTypes.ts | 2 +- 5 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/controllers/api/getVendorInfoController.ts b/src/controllers/api/getVendorInfoController.ts index c7212550..b161176e 100644 --- a/src/controllers/api/getVendorInfoController.ts +++ b/src/controllers/api/getVendorInfoController.ts @@ -1,5 +1,5 @@ import { RequestHandler } from "express"; -import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService"; +import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService"; export const getVendorInfoController: RequestHandler = (req, res) => { if (typeof req.query.vendor == "string") { @@ -7,7 +7,7 @@ export const getVendorInfoController: RequestHandler = (req, res) => { if (!manifest) { throw new Error(`Unknown vendor: ${req.query.vendor}`); } - res.json(preprocessVendorManifest(manifest)); + res.json(manifest); } else { res.status(400).end(); } diff --git a/src/controllers/api/postGuildAdvertisementController.ts b/src/controllers/api/postGuildAdvertisementController.ts index e33db645..69b28323 100644 --- a/src/controllers/api/postGuildAdvertisementController.ts +++ b/src/controllers/api/postGuildAdvertisementController.ts @@ -9,7 +9,7 @@ import { } from "@/src/services/guildService"; import { getInventory } from "@/src/services/inventoryService"; import { getAccountIdForRequest } from "@/src/services/loginService"; -import { getVendorManifestByTypeName, preprocessVendorManifest } from "@/src/services/serversideVendorsService"; +import { getVendorManifestByTypeName } from "@/src/services/serversideVendorsService"; import { GuildPermission } from "@/src/types/guildTypes"; import { IPurchaseParams } from "@/src/types/purchaseTypes"; import { RequestHandler } from "express"; @@ -26,9 +26,9 @@ export const postGuildAdvertisementController: RequestHandler = async (req, res) const payload = getJSONfromString(String(req.body)); // Handle resource cost - const vendor = preprocessVendorManifest( - getVendorManifestByTypeName("/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest")! - ); + const vendor = getVendorManifestByTypeName( + "/Lotus/Types/Game/VendorManifests/Hubs/GuildAdvertisementVendorManifest" + )!; const offer = vendor.VendorInfo.ItemManifest.find(x => x.StoreItem == payload.PurchaseParams.StoreItem)!; if (getVaultMiscItemCount(guild, offer.ItemPrices![0].ItemType) >= offer.ItemPrices![0].ItemCount) { addVaultMiscItems(guild, [ diff --git a/src/services/purchaseService.ts b/src/services/purchaseService.ts index 04525704..32f3af38 100644 --- a/src/services/purchaseService.ts +++ b/src/services/purchaseService.ts @@ -9,7 +9,7 @@ import { updateSlots } from "@/src/services/inventoryService"; import { getRandomWeightedRewardUc } from "@/src/services/rngService"; -import { getVendorManifestByOid, preprocessVendorManifest } from "@/src/services/serversideVendorsService"; +import { getVendorManifestByOid } from "@/src/services/serversideVendorsService"; import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { IPurchaseRequest, IPurchaseResponse, SlotPurchase, IInventoryChanges } from "@/src/types/purchaseTypes"; import { logger } from "@/src/utils/logger"; @@ -53,9 +53,8 @@ export const handlePurchase = async ( const prePurchaseInventoryChanges: IInventoryChanges = {}; let seed: bigint | undefined; if (purchaseRequest.PurchaseParams.Source == 7) { - const rawManifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!); - if (rawManifest) { - const manifest = preprocessVendorManifest(rawManifest); + const manifest = getVendorManifestByOid(purchaseRequest.PurchaseParams.SourceId!); + if (manifest) { let ItemId: string | undefined; if (purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) { ItemId = (JSON.parse(purchaseRequest.PurchaseParams.ExtraPurchaseInfoJson) as { ItemId: string }) diff --git a/src/services/serversideVendorsService.ts b/src/services/serversideVendorsService.ts index 9700e00e..23b382d8 100644 --- a/src/services/serversideVendorsService.ts +++ b/src/services/serversideVendorsService.ts @@ -3,14 +3,14 @@ import path from "path"; import { repoDir } from "@/src/helpers/pathHelper"; import { CRng, mixSeeds } from "@/src/services/rngService"; import { IMongoDate } from "@/src/types/commonTypes"; -import { IVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes"; +import { IRawVendorManifest, IVendorManifestPreprocessed } from "@/src/types/vendorTypes"; import { JSONParse } from "json-with-bigint"; -const getVendorManifestJson = (name: string): IVendorManifest => { +const getVendorManifestJson = (name: string): IRawVendorManifest => { return JSONParse(fs.readFileSync(path.join(repoDir, `static/fixed_responses/getVendorInfo/${name}.json`), "utf-8")); }; -const vendorManifests: IVendorManifest[] = [ +const rawVendorManifests: IRawVendorManifest[] = [ getVendorManifestJson("ArchimedeanVendorManifest"), getVendorManifestJson("DeimosEntratiFragmentVendorProductsManifest"), getVendorManifestJson("DeimosFishmongerVendorManifest"), @@ -44,25 +44,25 @@ const vendorManifests: IVendorManifest[] = [ getVendorManifestJson("ZarimanCommisionsManifestArchimedean") ]; -export const getVendorManifestByTypeName = (typeName: string): IVendorManifest | undefined => { - for (const vendorManifest of vendorManifests) { +export const getVendorManifestByTypeName = (typeName: string): IVendorManifestPreprocessed | undefined => { + for (const vendorManifest of rawVendorManifests) { if (vendorManifest.VendorInfo.TypeName == typeName) { - return vendorManifest; + return preprocessVendorManifest(vendorManifest); } } return undefined; }; -export const getVendorManifestByOid = (oid: string): IVendorManifest | undefined => { - for (const vendorManifest of vendorManifests) { +export const getVendorManifestByOid = (oid: string): IVendorManifestPreprocessed | undefined => { + for (const vendorManifest of rawVendorManifests) { if (vendorManifest.VendorInfo._id.$oid == oid) { - return vendorManifest; + return preprocessVendorManifest(vendorManifest); } } return undefined; }; -export const preprocessVendorManifest = (originalManifest: IVendorManifest): IVendorManifestPreprocessed => { +const preprocessVendorManifest = (originalManifest: IRawVendorManifest): IVendorManifestPreprocessed => { if (Date.now() >= parseInt(originalManifest.VendorInfo.Expiry.$date.$numberLong)) { const manifest = structuredClone(originalManifest); const info = manifest.VendorInfo; diff --git a/src/types/vendorTypes.ts b/src/types/vendorTypes.ts index 0aa5b83e..e5c7cdfc 100644 --- a/src/types/vendorTypes.ts +++ b/src/types/vendorTypes.ts @@ -38,7 +38,7 @@ interface IVendorInfoPreprocessed extends Omit { ItemManifest: IItemManifestPreprocessed[]; } -export interface IVendorManifest { +export interface IRawVendorManifest { VendorInfo: IVendorInfo; }