diff --git a/src/controllers/api/fusionTreasuresController.ts b/src/controllers/api/fusionTreasuresController.ts index 086f017e3..27ea78206 100644 --- a/src/controllers/api/fusionTreasuresController.ts +++ b/src/controllers/api/fusionTreasuresController.ts @@ -2,22 +2,14 @@ import { RequestHandler } from "express"; import { ExportResources } from "warframe-public-export-plus"; import { getAccountIdForRequest } from "@/src/services/loginService"; import { addFusionTreasures, addMiscItems, getInventory } from "@/src/services/inventoryService"; -import { IFusionTreasure, IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes"; +import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers"; interface IFusionTreasureRequest { oldTreasureName: string; newTreasureName: string; } -const parseFusionTreasure = (name: string, count: number): IFusionTreasure => { - const arr = name.split("_"); - return { - ItemType: arr[0], - Sockets: parseInt(arr[1], 16), - ItemCount: count - }; -}; - export const fusionTreasuresController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); const inventory = await getInventory(accountId); diff --git a/src/controllers/api/sellController.ts b/src/controllers/api/sellController.ts index 461d83bda..b19cf2dc3 100644 --- a/src/controllers/api/sellController.ts +++ b/src/controllers/api/sellController.ts @@ -10,13 +10,15 @@ import { combineInventoryChanges, addCrewShipRawSalvage, addFusionPoints, - addCrewShipFusionPoints + addCrewShipFusionPoints, + addFusionTreasures } from "@/src/services/inventoryService"; import { InventorySlot } from "@/src/types/inventoryTypes/inventoryTypes"; import { ExportDojoRecipes } from "warframe-public-export-plus"; import { IInventoryChanges } from "@/src/types/purchaseTypes"; import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel"; import { sendWsBroadcastEx } from "@/src/services/wsService"; +import { parseFusionTreasure } from "@/src/helpers/inventoryHelpers"; export const sellController: RequestHandler = async (req, res) => { const payload = JSON.parse(String(req.body)) as ISellRequest; @@ -295,6 +297,11 @@ export const sellController: RequestHandler = async (req, res) => { ]); }); } + if (payload.Items.FusionTreasures) { + payload.Items.FusionTreasures.forEach(sellItem => { + addFusionTreasures(inventory, [parseFusionTreasure(sellItem.String, sellItem.Count * -1)]); + }); + } await inventory.save(); res.json({ @@ -327,6 +334,7 @@ interface ISellRequest { CrewMembers?: ISellItem[]; CrewShipWeapons?: ISellItem[]; CrewShipWeaponSkins?: ISellItem[]; + FusionTreasures?: ISellItem[]; }; SellPrice: number; SellCurrency: diff --git a/src/helpers/inventoryHelpers.ts b/src/helpers/inventoryHelpers.ts index 2bcbe90a4..552ab3ec7 100644 --- a/src/helpers/inventoryHelpers.ts +++ b/src/helpers/inventoryHelpers.ts @@ -1,6 +1,7 @@ import { IMongoDate, IOid, IOidWithLegacySupport } from "@/src/types/commonTypes"; import { Types } from "mongoose"; import { TRarity } from "warframe-public-export-plus"; +import { IFusionTreasure } from "@/src/types/inventoryTypes/inventoryTypes"; export const version_compare = (a: string, b: string): number => { const a_digits = a @@ -51,6 +52,15 @@ export const fromMongoDate = (date: IMongoDate): Date => { return new Date(parseInt(date.$date.$numberLong)); }; +export const parseFusionTreasure = (name: string, count: number): IFusionTreasure => { + const arr = name.split("_"); + return { + ItemType: arr[0], + Sockets: parseInt(arr[1], 16), + ItemCount: count + }; +}; + export type TTraitsPool = Record< "Colors" | "EyeColors" | "FurPatterns" | "BodyTypes" | "Heads" | "Tails", { type: string; rarity: TRarity }[]