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 fs from 'fs';
import fs from "fs";
import { MissionInventoryUpdate } from "@/src/types/missionInventoryUpdateType";
/*
- [ ] crossPlaySetting
- [ ] rewardsMultiplier
@ -39,25 +40,22 @@ import fs from 'fs';
- [ ] FpsMax
- [ ] FpsSamples
*/
const missionInventoryUpdateController: RequestHandler = async (req, res) => {
fs.writeFile("./tmp/missionInventoryUpdate", req.body,(err)=>{
if(err)
return console.log(err);
const missionInventoryUpdateController = async (req: Request, res: Response) => {
fs.writeFile("./tmp/missionInventoryUpdate", req.body as string, err => {
if (err) return console.log(err);
}); // 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;
// TODO - salt check
try {
const parsedData = JSON.parse(data);
if (typeof parsedData !== 'object' || parsedData === null)
throw new Error('Invalid data format');
const parsedData = JSON.parse(data) as MissionInventoryUpdate;
if (typeof parsedData !== "object" || parsedData === null) throw new Error("Invalid data format");
await missionInventoryUpdate(parsedData, id);
} catch (err) {
console.error('Error parsing JSON data:', err);
console.error("Error parsing JSON data:", err);
}
// 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 express from "express";
const statsRouter = express.Router();
// get
statsRouter.get("/view.php", viewController);
// post
statsRouter.post("/upload.php", uploadController);
export { statsRouter };

View File

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