diff --git a/src/controllers/api/fusionTreasuresController.ts b/src/controllers/api/fusionTreasuresController.ts new file mode 100644 index 00000000..250f07e3 --- /dev/null +++ b/src/controllers/api/fusionTreasuresController.ts @@ -0,0 +1,36 @@ +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getInventory } from "@/src/services/inventoryService"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { RequestHandler } from "express"; + +export interface IFusionTreasuresRequest { + oldTreasureName: string; + newTreasureName: string; +} + +// eslint-disable-next-line @typescript-eslint/no-misused-promises +const fusionTreasuresController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + // {"oldTreasureName":"/Lotus/Types/Items/FusionTreasures/OroFusexG_01","newTreasureName":"/Lotus/Types/Items/FusionTreasures/OroFusexG_05"} + const payload = getJSONfromString(String(req.body)) as IFusionTreasuresRequest; + const newTreasureName = payload.newTreasureName; + const treasureName = newTreasureName.substring(0, newTreasureName.lastIndexOf("_")); + const sockets = newTreasureName.substring(newTreasureName.lastIndexOf("_") + 1); + console.log("fusionTreasure:" + treasureName + " " + sockets); + const fusionTreasureIndex = inventory.FusionTreasures.findIndex(ft => + payload.oldTreasureName.includes(ft.ItemType) + ); + inventory.FusionTreasures[fusionTreasureIndex].Sockets = parseInt(sockets, 16); + // todo + // remove /Lotus/Types/Items/FusionTreasures/OroFusexOrnamentA + // remove /Lotus/Types/Items/FusionTreasures/OroFusexOrnamentB + await inventory.save(); + res.json({ + InventoryChanges: { + FusionTreasures: [inventory.FusionTreasures[fusionTreasureIndex]] + } + }); +}; + +export { fusionTreasuresController }; diff --git a/src/routes/api.ts b/src/routes/api.ts index ff6c7286..c0f5426f 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -10,6 +10,7 @@ import { dronesController } from "@/src/controllers/api/dronesController"; import { evolveWeaponController } from "@/src/controllers/api/evolveWeaponController"; import { findSessionsController } from "@/src/controllers/api/findSessionsController"; import { focusController } from "@/src/controllers/api/focusController"; +import { fusionTreasuresController } from "@/src/controllers/api/fusionTreasuresController"; import { genericUpdateController } from "@/src/controllers/api/genericUpdateController"; import { getAllianceController } from "@/src/controllers/api/getAllianceController"; import { getCreditsController } from "@/src/controllers/api/getCreditsController"; @@ -107,6 +108,7 @@ apiRouter.post("/createGuild.php", createGuildController); apiRouter.post("/evolveWeapon.php", evolveWeaponController); apiRouter.post("/findSessions.php", findSessionsController); apiRouter.post("/focus.php", focusController); +apiRouter.post("/fusionTreasures.php", fusionTreasuresController); apiRouter.post("/genericUpdate.php", genericUpdateController); apiRouter.post("/getAlliance.php", getAllianceController); apiRouter.post("/gildWeapon.php", gildWeaponController);