MissionInventoryUpdate(not completed), Mod upgrade, Booster purchase #49
@ -2,6 +2,7 @@ import { RequestHandler } from "express";
|
||||
import { missionInventoryUpdate } from "@/src/services/inventoryService";
|
||||
import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType";
|
||||
/*
|
||||
**** INPUT ****
|
||||
- [ ] crossPlaySetting
|
||||
- [ ] rewardsMultiplier
|
||||
- [ ] ActiveBoosters
|
||||
@ -50,13 +51,38 @@ const missionInventoryUpdateController: RequestHandler = async (req, res) => {
|
||||
try {
|
||||
const parsedData = JSON.parse(data) as MissionInventoryUpdate;
|
||||
if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format");
|
||||
await missionInventoryUpdate(parsedData, id);
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const InventoryJson = JSON.stringify(await missionInventoryUpdate(parsedData, id));
|
||||
|
||||
|
||||
const missionCredits = parsedData.RegularCredits || 0;
|
||||
const creditsBonus = 0;
|
||||
const totalCredits = missionCredits + creditsBonus;
|
||||
|
||||
const MissionCredits = [missionCredits, missionCredits]; // collected credits
|
||||
const CreditsBonus = [creditsBonus, creditsBonus]; // mission reward
|
||||
![]() can you seperate interfaces into seperate files? we got the /types folder, for example string dictionary could be in /types/commonTypes.ts can you seperate interfaces into seperate files? we got the /types folder, for example string dictionary could be in /types/commonTypes.ts
![]() is this the best way? looks a bit suspicious with the many else ifs is this the best way? looks a bit suspicious with the many else ifs
![]() and you could make a types/missionInventoryUpdatesTypes.ts as well and you could make a types/missionInventoryUpdatesTypes.ts as well
![]() need that like this for now need that like this for now
|
||||
const TotalCredits = [totalCredits, totalCredits];
|
||||
|
||||
// TODO - get missions reward table
|
||||
|
||||
res.json({
|
||||
// InventoryJson, // this part will reset game data and missions will be locked
|
||||
TotalCredits,
|
||||
CreditsBonus,
|
||||
MissionCredits
|
||||
});
|
||||
} catch (err) {
|
||||
console.error("Error parsing JSON data:", err);
|
||||
}
|
||||
|
||||
// TODO - get original response
|
||||
res.json({});
|
||||
};
|
||||
|
||||
/*
|
||||
**** OUTPUT ****
|
||||
- [x] InventoryJson
|
||||
- [ ] MissionRewards
|
||||
- [x] TotalCredits
|
||||
- [x] CreditsBonus
|
||||
- [x] MissionCredits
|
||||
- [ ] InventoryChanges
|
||||
*/
|
||||
|
||||
export { missionInventoryUpdateController };
|
||||
|
@ -167,7 +167,7 @@ const addChallenges = (inventory: IInventoryDatabaseDocument, itemsArray: Challe
|
||||
const gearKeys = ["Suits", "Pistols", "LongGuns", "Melee"] as const;
|
||||
type GearKeysType = (typeof gearKeys)[number];
|
||||
|
||||
export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string): Promise<void> => {
|
||||
export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accountId: string) => {
|
||||
const { RawUpgrades, MiscItems, RegularCredits, ChallengeProgress } = data;
|
||||
const inventory = await getInventory(accountId);
|
||||
|
||||
@ -183,7 +183,8 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou
|
||||
addItemsByCategory(inventory, MiscItems, "MiscItems");
|
||||
addChallenges(inventory, ChallengeProgress);
|
||||
|
||||
await inventory.save();
|
||||
const changedInventory = await inventory.save();
|
||||
return changedInventory.toJSON();
|
||||
};
|
||||
|
||||
export const addBooster = async (ItemType: string, time: number, accountId: string): Promise<void> => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user
what is the purpose of this?
can you explain what the difference is between missioncredits and MissionCredits?
can you please use brackets like:
if (something){
expression;
}
it makes it easier to read
where possible: instead of "i" or "j" use descriptive names such as rawUpgrade or so
perhaps make a function for this logic.
A controller should only "control" the calling of functions, with as little logic as possible.
You could make a service/missionInventoryUpdateService and put all the logic there, while you call those functions from the controller. Some logic in the controller is totally fine.
move types and interfaces into types/missionInventoryTypes