diff --git a/src/controllers/api/updateChallengeProgressController.ts b/src/controllers/api/updateChallengeProgressController.ts index b822d8188..887224e3d 100644 --- a/src/controllers/api/updateChallengeProgressController.ts +++ b/src/controllers/api/updateChallengeProgressController.ts @@ -1,7 +1,20 @@ import { RequestHandler } from "express"; +import { IChallengeProgress } from "@/src/types/inventoryTypes/inventoryTypes"; +import { getJSONfromString } from "@/src/helpers/stringHelpers"; +import { getAccountIdForRequest } from "@/src/services/loginService"; +import { getInventory, addChallenges } from "@/src/services/inventoryService"; -const updateChallengeProgressController: RequestHandler = (_request, response) => { - response.sendStatus(200); +interface IUpdateChallengeProgessRequest { + ChallengeProgress: IChallengeProgress[]; +} + +const updateChallengeProgressController: RequestHandler = async (req, res) => { + const payload: IUpdateChallengeProgessRequest = getJSONfromString(req.body.toString()); + const accountId = await getAccountIdForRequest(req); + const inventory = await getInventory(accountId); + addChallenges(inventory, payload.ChallengeProgress); + inventory.save(); + res.status(200).end(); }; export { updateChallengeProgressController }; diff --git a/src/services/inventoryService.ts b/src/services/inventoryService.ts index 0d6852583..550cbc628 100644 --- a/src/services/inventoryService.ts +++ b/src/services/inventoryService.ts @@ -290,7 +290,7 @@ const addMods = (inventory: IInventoryDatabaseDocument, itemsArray: IRawUpgrade[ }); }; -const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { +export const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: IChallengeProgress[] | undefined) => { const category = inventory.ChallengeProgress; itemsArray?.forEach(({ Name, Progress }) => {