This commit is contained in:
holmityd 2023-08-30 20:14:06 +04:00
parent 856d3c1ccb
commit f054db1327
4 changed files with 47 additions and 24 deletions

View File

@ -1,6 +1,7 @@
import { RequestHandler } from "express"; import { Request, Response } from "express";
import { missionInventoryUpdate } from "@/src/services/inventoryService"; import { missionInventoryUpdate } from "@/src/services/inventoryService";
import fs from 'fs'; import fs from "fs";
import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType";
/* /*
- [ ] crossPlaySetting - [ ] crossPlaySetting
- [ ] rewardsMultiplier - [ ] rewardsMultiplier
@ -39,25 +40,22 @@ import fs from 'fs';
- [ ] FpsMax - [ ] FpsMax
- [ ] FpsSamples - [ ] FpsSamples
*/ */
const missionInventoryUpdateController: RequestHandler = async (req, res) => { const missionInventoryUpdateController = async (req: Request, res: Response) => {
fs.writeFile("./tmp/missionInventoryUpdate", req.body,(err)=>{ fs.writeFile("./tmp/missionInventoryUpdate", req.body as string, err => {
if(err) if (err) return console.log(err);
return console.log(err); }); // temp log, !!! tmp folder need on main dir
}); // temp log, !!! tmp folder need on main dir
const [data, _secondIGuessIsSalt] = String(req.body).split("\n"); const [data] = String(req.body).split("\n");
const id = req.query.accountId as string; const id = req.query.accountId as string;
// TODO - salt check // TODO - salt check
try { try {
const parsedData = JSON.parse(data); const parsedData = JSON.parse(data) as MissionInventoryUpdate;
if (typeof parsedData !== 'object' || parsedData === null) if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format");
throw new Error('Invalid data format');
await missionInventoryUpdate(parsedData, id); await missionInventoryUpdate(parsedData, id);
} catch (err) { } catch (err) {
console.error('Error parsing JSON data:', err); console.error("Error parsing JSON data:", err);
} }
// TODO - get original response // TODO - get original response

View File

@ -0,0 +1,7 @@
import { RequestHandler } from "express";
const viewController: RequestHandler = (_req, res) => {
res.json({});
};
export { viewController };

View File

@ -1,7 +1,14 @@
import { viewController } from "../controllers/api/viewController";
import { uploadController } from "@/src/controllers/stats/uploadController"; import { uploadController } from "@/src/controllers/stats/uploadController";
import express from "express"; import express from "express";
const statsRouter = express.Router(); const statsRouter = express.Router();
// get
statsRouter.get("/view.php", viewController);
// post
statsRouter.post("/upload.php", uploadController); statsRouter.post("/upload.php", uploadController);
export { statsRouter }; export { statsRouter };

View File

@ -6,7 +6,12 @@ import { ISuitResponse } from "@/src/types/inventoryTypes/SuitTypes";
import { SlotType } from "@/src/types/purchaseTypes"; import { SlotType } from "@/src/types/purchaseTypes";
import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes"; import { IWeaponResponse } from "@/src/types/inventoryTypes/weaponTypes";
import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes"; import { FlavourItem } from "@/src/types/inventoryTypes/inventoryTypes";
import { MissionInventoryUpdate, MissionInventoryUpdateCard, MissionInventoryUpdateGear, MissionInventoryUpdateItem } from "../types/missionInventoryUpdateType"; import {
MissionInventoryUpdate,
MissionInventoryUpdateCard,
MissionInventoryUpdateGear,
MissionInventoryUpdateItem
} from "../types/missionInventoryUpdateType";
const createInventory = async (accountOwnerId: Types.ObjectId) => { const createInventory = async (accountOwnerId: Types.ObjectId) => {
try { try {
@ -113,21 +118,27 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou
// TODO - multipliers logic // TODO - multipliers logic
const addGearExpByCategory = (gearArray: MissionInventoryUpdateGear[] | undefined, categoryName: 'Pistols'|'LongGuns'|'Melee'|'Suits') => { const addGearExpByCategory = (
gearArray: MissionInventoryUpdateGear[] | undefined,
categoryName: "Pistols" | "LongGuns" | "Melee" | "Suits"
) => {
const category = inventory[categoryName]; const category = inventory[categoryName];
gearArray?.forEach(({ ItemId, XP }) => { gearArray?.forEach(({ ItemId, XP }) => {
const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid)); const itemIndex = category.findIndex(i => i._id?.equals(ItemId.$oid));
const item = category[itemIndex]; const item = category[itemIndex];
if (itemIndex !== -1 && item.XP!=undefined) { if (itemIndex !== -1 && item.XP != undefined) {
item.XP += XP; item.XP += XP;
inventory.markModified(`${categoryName}.${itemIndex}.XP`); inventory.markModified(`${categoryName}.${itemIndex}.XP`);
} }
}); });
}; };
const addItemsByCategory = (itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined, categoryName: 'RawUpgrades'|'MiscItems') => { const addItemsByCategory = (
itemsArray: (MissionInventoryUpdateItem | MissionInventoryUpdateCard)[] | undefined,
categoryName: "RawUpgrades" | "MiscItems"
) => {
const category = inventory[categoryName]; const category = inventory[categoryName];
itemsArray?.forEach(({ ItemCount, ItemType }) => { itemsArray?.forEach(({ ItemCount, ItemType }) => {
@ -142,13 +153,13 @@ export const missionInventoryUpdate = async (data: MissionInventoryUpdate, accou
}); });
}; };
inventory.RegularCredits += RegularCredits||0; inventory.RegularCredits += RegularCredits || 0;
addGearExpByCategory(Pistols, 'Pistols'); addGearExpByCategory(Pistols, "Pistols");
addGearExpByCategory(LongGuns, 'LongGuns'); addGearExpByCategory(LongGuns, "LongGuns");
addGearExpByCategory(Melee, 'Melee'); addGearExpByCategory(Melee, "Melee");
addGearExpByCategory(Suits, 'Suits'); addGearExpByCategory(Suits, "Suits");
addItemsByCategory(RawUpgrades, 'RawUpgrades'); // TODO - check mods fusion level addItemsByCategory(RawUpgrades, "RawUpgrades"); // TODO - check mods fusion level
addItemsByCategory(MiscItems, 'MiscItems'); addItemsByCategory(MiscItems, "MiscItems");
// TODO - save ChallengeProgress (idk where to save) // TODO - save ChallengeProgress (idk where to save)