XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFESpaceNinjaServer

chore: report unknown fields in updateChallengeProgress payload (#2210)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2210 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

e686a2d0
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

1 个文件 +27 -12
Modified src/controllers/api/updateChallengeProgressController.ts +27 -12
@@ -4,6 +4,8 @@ import { getAccountForRequest } from "@/src/services/loginService";
4 4 import { addChallenges, getInventory } from "@/src/services/inventoryService";
5 5 import { IChallengeProgress, ISeasonChallenge } from "@/src/types/inventoryTypes/inventoryTypes";
6 6 import { IAffiliationMods } from "@/src/types/purchaseTypes";
7 import { getEntriesUnsafe } from "@/src/utils/ts-utils";
8 import { logger } from "@/src/utils/logger";
7 9
8 10 export const updateChallengeProgressController: RequestHandler = async (req, res) => {
9 11 const challenges = getJSONfromString<IUpdateChallengeProgressRequest>(String(req.body));
@@ -13,9 +15,6 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
13 15 account._id.toString(),
14 16 "ChallengesFixVersion ChallengeProgress SeasonChallengeHistory Affiliations"
15 17 );
16 if (challenges.ChallengesFixVersion !== undefined) {
17 inventory.ChallengesFixVersion = challenges.ChallengesFixVersion;
18 }
19 18 let affiliationMods: IAffiliationMods[] = [];
20 19 if (challenges.ChallengeProgress) {
21 20 affiliationMods = addChallenges(
@@ -25,15 +24,30 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
25 24 challenges.SeasonChallengeCompletions
26 25 );
27 26 }
28 if (challenges.SeasonChallengeHistory) {
29 challenges.SeasonChallengeHistory.forEach(({ challenge, id }) => {
30 const itemIndex = inventory.SeasonChallengeHistory.findIndex(i => i.challenge === challenge);
31 if (itemIndex !== -1) {
32 inventory.SeasonChallengeHistory[itemIndex].id = id;
33 } else {
34 inventory.SeasonChallengeHistory.push({ challenge, id });
35 }
36 });
27 for (const [key, value] of getEntriesUnsafe(challenges)) {
28 switch (key) {
29 case "ChallengesFixVersion":
30 inventory.ChallengesFixVersion = value;
31 break;
32
33 case "SeasonChallengeHistory":
34 value!.forEach(({ challenge, id }) => {
35 const itemIndex = inventory.SeasonChallengeHistory.findIndex(i => i.challenge === challenge);
36 if (itemIndex !== -1) {
37 inventory.SeasonChallengeHistory[itemIndex].id = id;
38 } else {
39 inventory.SeasonChallengeHistory.push({ challenge, id });
40 }
41 });
42 break;
43
44 case "ChallengeProgress":
45 case "SeasonChallengeCompletions":
46 case "ChallengePTS":
47 break;
48 default:
49 logger.warn(`unknown challenge progress entry`, { key, value });
50 }
37 51 }
38 52 await inventory.save();
39 53
@@ -43,6 +57,7 @@ export const updateChallengeProgressController: RequestHandler = async (req, res
43 57 };
44 58
45 59 interface IUpdateChallengeProgressRequest {
60 ChallengePTS?: number;
46 61 ChallengesFixVersion?: number;
47 62 ChallengeProgress?: IChallengeProgress[];
48 63 SeasonChallengeHistory?: ISeasonChallenge[];