From 215b83974c231d96af7a48f8c0df9a6b1d748efb Mon Sep 17 00:00:00 2001 From: Sainan Date: Wed, 15 Jan 2025 05:20:17 +0100 Subject: [PATCH] feat(webui): add "add missing warframes" & "add missing weapons" (#775) --- src/controllers/custom/addItemController.ts | 33 ---------- src/controllers/custom/addItemsController.ts | 33 ++++++++++ src/helpers/customHelpers/addItemHelpers.ts | 46 ------------- src/routes/custom.ts | 4 +- static/webui/index.html | 37 ++++++----- static/webui/script.js | 69 +++++++++++++++++--- 6 files changed, 116 insertions(+), 106 deletions(-) delete mode 100644 src/controllers/custom/addItemController.ts create mode 100644 src/controllers/custom/addItemsController.ts delete mode 100644 src/helpers/customHelpers/addItemHelpers.ts diff --git a/src/controllers/custom/addItemController.ts b/src/controllers/custom/addItemController.ts deleted file mode 100644 index a045739c..00000000 --- a/src/controllers/custom/addItemController.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { getAccountIdForRequest } from "@/src/services/loginService"; -import { ItemType, toAddItemRequest } from "@/src/helpers/customHelpers/addItemHelpers"; -import { getWeaponType } from "@/src/services/itemDataService"; -import { addPowerSuit, addEquipment, getInventory } from "@/src/services/inventoryService"; -import { RequestHandler } from "express"; - -const addItemController: RequestHandler = async (req, res) => { - const accountId = await getAccountIdForRequest(req); - const request = toAddItemRequest(req.body); - - switch (request.type) { - case ItemType.Powersuit: { - const inventory = await getInventory(accountId); - const inventoryChanges = addPowerSuit(inventory, request.InternalName); - await inventory.save(); - res.json(inventoryChanges); - return; - } - case ItemType.Weapon: { - const inventory = await getInventory(accountId); - const weaponType = getWeaponType(request.InternalName); - const inventoryChanges = addEquipment(inventory, weaponType, request.InternalName); - await inventory.save(); - res.json(inventoryChanges); - break; - } - default: - res.status(400).json({ error: "something went wrong" }); - break; - } -}; - -export { addItemController }; diff --git a/src/controllers/custom/addItemsController.ts b/src/controllers/custom/addItemsController.ts new file mode 100644 index 00000000..bc033174 --- /dev/null +++ b/src/controllers/custom/addItemsController.ts @@ -0,0 +1,33 @@ +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getWeaponType } from "@/src/services/itemDataService"; +import { addPowerSuit, addEquipment, getInventory } from "@/src/services/inventoryService"; +import { RequestHandler } from "express"; + +export const addItemsController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const requests = req.body as IAddItemRequest[]; + const inventory = await getInventory(accountId); + for (const request of requests) { + switch (request.type) { + case ItemType.Powersuit: + addPowerSuit(inventory, request.internalName); + break; + + case ItemType.Weapon: + addEquipment(inventory, getWeaponType(request.internalName), request.internalName); + break; + } + } + await inventory.save(); + res.end(); +}; + +enum ItemType { + Powersuit = "Powersuit", + Weapon = "Weapon" +} + +interface IAddItemRequest { + type: ItemType; + internalName: string; +} diff --git a/src/helpers/customHelpers/addItemHelpers.ts b/src/helpers/customHelpers/addItemHelpers.ts deleted file mode 100644 index 5ce2378f..00000000 --- a/src/helpers/customHelpers/addItemHelpers.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { isString } from "@/src/helpers/general"; - -export enum ItemType { - Powersuit = "Powersuit", - Weapon = "Weapon" -} - -export const isItemType = (itemType: string): itemType is ItemType => { - return Object.keys(ItemType).includes(itemType); -}; - -const parseItemType = (itemType: unknown): ItemType => { - if (!itemType || !isString(itemType) || !isItemType(itemType)) { - throw new Error("incorrect item type"); - } - - return itemType; -}; - -interface IAddItemRequest { - type: ItemType; - InternalName: string; -} - -const parseInternalItemName = (internalName: unknown): string => { - if (!isString(internalName)) { - throw new Error("incorrect internal name"); - } - - return internalName; -}; - -export const toAddItemRequest = (body: unknown): IAddItemRequest => { - if (!body || typeof body !== "object") { - throw new Error("incorrect or missing add item request data"); - } - - if ("type" in body && "internalName" in body) { - return { - type: parseItemType(body.type), - InternalName: parseInternalItemName(body.internalName) - }; - } - - throw new Error("malformed add item request"); -}; diff --git a/src/routes/custom.ts b/src/routes/custom.ts index c8f87a56..e4299412 100644 --- a/src/routes/custom.ts +++ b/src/routes/custom.ts @@ -8,7 +8,7 @@ import { deleteAccountController } from "@/src/controllers/custom/deleteAccountC import { renameAccountController } from "@/src/controllers/custom/renameAccountController"; import { createAccountController } from "@/src/controllers/custom/createAccountController"; -import { addItemController } from "@/src/controllers/custom/addItemController"; +import { addItemsController } from "@/src/controllers/custom/addItemsController"; import { getConfigDataController } from "@/src/controllers/custom/getConfigDataController"; import { updateConfigDataController } from "@/src/controllers/custom/updateConfigDataController"; @@ -23,7 +23,7 @@ customRouter.get("/deleteAccount", deleteAccountController); customRouter.get("/renameAccount", renameAccountController); customRouter.post("/createAccount", createAccountController); -customRouter.post("/addItem", addItemController); +customRouter.post("/addItems", addItemsController); customRouter.get("/config", getConfigDataController); customRouter.post("/config", updateConfigDataController); diff --git a/static/webui/index.html b/static/webui/index.html index 254209f2..b6188114 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -82,11 +82,11 @@
-

+

Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.

-
+
Add Items
@@ -94,9 +94,9 @@
-
+
-
+
Warframes
@@ -108,9 +108,16 @@
+
+
Bulk Actions
+
+ + +
+
-
+
Weapons
@@ -128,7 +135,7 @@

-
+
Archon Shard Slots

You can use these unlimited slots to apply a wide range of upgrades.

@@ -145,13 +152,13 @@
-

+

Note: Changes made here will only be reflected in-game when the game re-downloads your inventory. Visiting the navigation should be the easiest way to trigger that.

-
+
-
+
Add Riven