返回提交历史
Added
src/controllers/api/tauntHistoryController.ts
+22
-0
Modified
src/models/inventoryModels/inventoryModel.ts
+4
-4
Modified
src/routes/api.ts
+3
-1
Modified
src/types/inventoryTypes/inventoryTypes.ts
+3
-3
XFEstudio/SpaceNinjaServer
feat: implement tauntHistory.php (#441)
76bff65d
代码差异
4 个文件
+32
-8
@@ -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
};
@@ -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,
@@ -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);
@@ -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 {