2023-06-14 02:26:19 +02:00
|
|
|
import { parseBoolean, parseNumber, parseString } from "@/src/helpers/general";
|
2024-01-25 14:49:45 +01:00
|
|
|
import { weapons } from "@/src/services/itemDataService";
|
2023-12-28 16:24:52 +01:00
|
|
|
import { slotPurchaseNameToSlotName } from "@/src/services/purchaseService";
|
|
|
|
import { IPurchaseRequest, SlotPurchaseName } from "@/src/types/purchaseTypes";
|
2023-06-14 02:26:19 +02:00
|
|
|
|
2023-12-28 16:24:52 +01:00
|
|
|
export const toPurchaseRequest = (purchaseRequest: unknown): IPurchaseRequest => {
|
2023-06-14 02:26:19 +02:00
|
|
|
if (!purchaseRequest || typeof purchaseRequest !== "object") {
|
|
|
|
throw new Error("incorrect or missing purchase request data");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (
|
|
|
|
"PurchaseParams" in purchaseRequest &&
|
|
|
|
"buildLabel" in purchaseRequest &&
|
|
|
|
purchaseRequest.PurchaseParams &&
|
|
|
|
typeof purchaseRequest.PurchaseParams === "object" &&
|
|
|
|
"Source" in purchaseRequest.PurchaseParams &&
|
|
|
|
"StoreItem" in purchaseRequest.PurchaseParams &&
|
|
|
|
"StorePage" in purchaseRequest.PurchaseParams &&
|
|
|
|
"SearchTerm" in purchaseRequest.PurchaseParams &&
|
|
|
|
"CurrentLocation" in purchaseRequest.PurchaseParams &&
|
|
|
|
"Quantity" in purchaseRequest.PurchaseParams &&
|
|
|
|
"UsePremium" in purchaseRequest.PurchaseParams &&
|
|
|
|
"ExpectedPrice" in purchaseRequest.PurchaseParams
|
|
|
|
) {
|
|
|
|
return {
|
|
|
|
PurchaseParams: {
|
|
|
|
Source: parseNumber(purchaseRequest.PurchaseParams.Source),
|
|
|
|
StoreItem: parseString(purchaseRequest.PurchaseParams.StoreItem),
|
|
|
|
StorePage: parseString(purchaseRequest.PurchaseParams.StorePage),
|
|
|
|
SearchTerm: parseString(purchaseRequest.PurchaseParams.SearchTerm),
|
|
|
|
CurrentLocation: parseString(purchaseRequest.PurchaseParams.CurrentLocation),
|
|
|
|
Quantity: parseNumber(purchaseRequest.PurchaseParams.Quantity),
|
|
|
|
UsePremium: parseBoolean(purchaseRequest.PurchaseParams.UsePremium),
|
|
|
|
ExpectedPrice: parseNumber(purchaseRequest.PurchaseParams.ExpectedPrice)
|
|
|
|
},
|
|
|
|
buildLabel: parseString(purchaseRequest.buildLabel)
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
throw new Error("invalid purchaseRequest");
|
|
|
|
};
|
|
|
|
|
2023-12-28 16:24:52 +01:00
|
|
|
export const isSlotPurchaseName = (slotPurchaseName: string): slotPurchaseName is SlotPurchaseName => {
|
|
|
|
return slotPurchaseName in slotPurchaseNameToSlotName;
|
|
|
|
};
|
|
|
|
|
|
|
|
export const parseSlotPurchaseName = (slotPurchaseName: string) => {
|
|
|
|
if (!isSlotPurchaseName(slotPurchaseName)) throw new Error(`invalid slot name ${slotPurchaseName}`);
|
|
|
|
return slotPurchaseName;
|
|
|
|
};
|