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

SpaceNinjaServer

A simple server for a small space ninja game

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

XFEstudio/SpaceNinjaServer

feat: implement tauntHistory.php (#441)

76bff65d
Sainan <sainan@calamity.gg>
提交于

代码差异

4 个文件 +32 -8
Added src/controllers/api/tauntHistoryController.ts +22 -0
@@ -0,0 +1,22 @@
1 import { RequestHandler } from "express";
2 import { getAccountIdForRequest } from "@/src/services/loginService";
3 import { getInventory } from "@/src/services/inventoryService";
4 import { ITaunt } from "@/src/types/inventoryTypes/inventoryTypes";
5 import { logger } from "@/src/utils/logger";
6
7 // eslint-disable-next-line @typescript-eslint/no-misused-promises
8 export const tauntHistoryController: RequestHandler = async (req, res) => {
9 const accountId = await getAccountIdForRequest(req);
10 const inventory = await getInventory(accountId);
11 const clientTaunt = JSON.parse(String(req.body)) as ITaunt;
12 logger.debug(`updating taunt ${clientTaunt.node} to state ${clientTaunt.state}`);
13 inventory.TauntHistory ??= [];
14 const taunt = inventory.TauntHistory.find(x => x.node == clientTaunt.node);
15 if (taunt) {
16 taunt.state = clientTaunt.state;
17 } else {
18 inventory.TauntHistory.push(clientTaunt);
19 }
20 await inventory.save();
21 res.end();
22 };
Modified src/models/inventoryModels/inventoryModel.ts +4 -4
@@ -32,7 +32,7 @@ import {
32 32 IFusionTreasure,
33 33 ISpectreLoadout,
34 34 IWeaponSkinDatabase,
35 ITauntHistory,
35 ITaunt,
36 36 IPeriodicMissionCompletionDatabase,
37 37 IPeriodicMissionCompletionResponse,
38 38 ILoreFragmentScan,
@@ -533,7 +533,7 @@ weaponSkinsSchema.set("toJSON", {
533 533 }
534 534 });
535 535
536 const tauntHistorySchema = new Schema<ITauntHistory>(
536 const tauntSchema = new Schema<ITaunt>(
537 537 {
538 538 node: String,
539 539 state: String
@@ -772,8 +772,8 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
772 772
773 773 //Ayatan Item
774 774 FusionTreasures: [fusionTreasuresSchema],
775 //"node": "TreasureTutorial", "state": "TS_COMPLETED"
776 TauntHistory: [tauntHistorySchema],
775 //only used for Maroo apparently - { "node": "TreasureTutorial", "state": "TS_COMPLETED" }
776 TauntHistory: { type: [tauntSchema], default: undefined },
777 777
778 778 //noShow2FA,VisitPrimeVault etc
779 779 WebFlags: Schema.Types.Mixed,
Modified src/routes/api.ts +3 -1
@@ -22,6 +22,7 @@ import { getIgnoredUsersController } from "@/src/controllers/api/getIgnoredUsers
22 22 import { getNewRewardSeedController } from "@/src/controllers/api/getNewRewardSeedController";
23 23 import { getShipController } from "@/src/controllers/api/getShipController";
24 24 import { getVendorInfoController } from "@/src/controllers/api/getVendorInfoController";
25 import { gildWeaponController } from "@/src/controllers/api/gildWeaponController";
25 26 import { guildTechController } from "../controllers/api/guildTechController";
26 27 import { hostSessionController } from "@/src/controllers/api/hostSessionController";
27 28 import { hubController } from "@/src/controllers/api/hubController";
@@ -56,12 +57,12 @@ import { startRecipeController } from "@/src/controllers/api/startRecipeControll
56 57 import { stepSequencersController } from "@/src/controllers/api/stepSequencersController";
57 58 import { surveysController } from "@/src/controllers/api/surveysController";
58 59 import { syndicateSacrificeController } from "../controllers/api/syndicateSacrificeController";
60 import { tauntHistoryController } from "@/src/controllers/api/tauntHistoryController";
59 61 import { trainingResultController } from "@/src/controllers/api/trainingResultController";
60 62 import { updateChallengeProgressController } from "@/src/controllers/api/updateChallengeProgressController";
61 63 import { updateSessionGetController, updateSessionPostController } from "@/src/controllers/api/updateSessionController";
62 64 import { updateThemeController } from "../controllers/api/updateThemeController";
63 65 import { upgradesController } from "@/src/controllers/api/upgradesController";
64 import { gildWeaponController } from "../controllers/api/gildWeaponController";
65 66
66 67 const apiRouter = express.Router();
67 68
@@ -128,6 +129,7 @@ apiRouter.post("/startDojoRecipe.php", startDojoRecipeController);
128 129 apiRouter.post("/startRecipe.php", startRecipeController);
129 130 apiRouter.post("/stepSequencers.php", stepSequencersController);
130 131 apiRouter.post("/syndicateSacrifice.php", syndicateSacrificeController);
132 apiRouter.post("/tauntHistory.php", tauntHistoryController);
131 133 apiRouter.post("/trainingResult.php", trainingResultController);
132 134 apiRouter.post("/updateChallengeProgress.php", updateChallengeProgressController);
133 135 apiRouter.post("/updateSession.php", updateSessionPostController);
Modified src/types/inventoryTypes/inventoryTypes.ts +3 -3
@@ -177,7 +177,7 @@ export interface IInventoryResponse {
177 177 CompletedAlerts: string[];
178 178 Consumables: IConsumable[];
179 179 LevelKeys: IConsumable[];
180 TauntHistory: ITauntHistory[];
180 TauntHistory?: ITaunt[];
181 181 StoryModeChoice: string;
182 182 PeriodicMissionCompletions: IPeriodicMissionCompletionDatabase[];
183 183 KubrowPetEggs: IKubrowPetEgg[];
@@ -880,9 +880,9 @@ export interface INotePacks {
880 880 PERCUSSION: string;
881 881 }
882 882
883 export interface ITauntHistory {
883 export interface ITaunt {
884 884 node: string;
885 state: string;
885 state: "TS_UNLOCKED" | "TS_COMPLETED";
886 886 }
887 887
888 888 export interface IWeaponSkinDatabase {