forked from OpenWF/SpaceNinjaServer
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
|
import { getInventory } from "@/src/services/inventoryService";
|
||
|
import { WeaponTypeInternal } from "@/src/services/itemDataService";
|
||
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||
|
import { RequestHandler } from "express";
|
||
|
|
||
|
export const updateFingerprintController: RequestHandler = async (req, res) => {
|
||
|
const accountId = await getAccountIdForRequest(req);
|
||
|
const request = req.body as IUpdateFingerPrintRequest;
|
||
|
const inventory = await getInventory(accountId, request.category);
|
||
|
const item = inventory[request.category].id(request.oid);
|
||
|
if (item) {
|
||
|
if (request.action == "set" && request.upgradeFingerprint.buffs[0].Tag) {
|
||
|
const newUpgradeFingerprint = request.upgradeFingerprint;
|
||
|
if (!newUpgradeFingerprint.compact) newUpgradeFingerprint.compact = item.ItemType;
|
||
|
|
||
|
item.UpgradeType = request.upgradeType;
|
||
|
item.UpgradeFingerprint = JSON.stringify(newUpgradeFingerprint);
|
||
|
} else if (request.action == "remove") {
|
||
|
item.UpgradeFingerprint = undefined;
|
||
|
item.UpgradeType = undefined;
|
||
|
}
|
||
|
await inventory.save();
|
||
|
}
|
||
|
res.end();
|
||
|
};
|
||
|
|
||
|
interface IUpdateFingerPrintRequest {
|
||
|
category: WeaponTypeInternal;
|
||
|
oid: string;
|
||
|
action: "set" | "remove";
|
||
|
upgradeType: string;
|
||
|
upgradeFingerprint: {
|
||
|
compact?: string;
|
||
|
buffs: {
|
||
|
Tag: string;
|
||
|
Value: number;
|
||
|
}[];
|
||
|
};
|
||
|
}
|