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: split confirmGuildInvitation get & post controllers (#1465)

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

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

代码差异

3 个文件 +58 -59
Modified .prettierignore +1 -0
@@ -1,3 +1,4 @@
1 src/routes/api.ts
1 2 static/webui/libs/
2 3 *.html
3 4 *.md
Modified src/controllers/api/confirmGuildInvitationController.ts +54 -56
@@ -9,62 +9,8 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
9 9 import { RequestHandler } from "express";
10 10 import { Types } from "mongoose";
11 11
12 export const confirmGuildInvitationController: RequestHandler = async (req, res) => {
13 if (req.body) {
14 // POST request: Clan representative accepting invite(s).
15 const accountId = await getAccountIdForRequest(req);
16 const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!;
17 if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) {
18 res.status(400).json("Invalid permission");
19 return;
20 }
21 const payload = getJSONfromString<{ userId: string }>(String(req.body));
22 const filter: { accountId?: string; status: number } = { status: 1 };
23 if (payload.userId != "all") {
24 filter.accountId = payload.userId;
25 }
26 const guildMembers = await GuildMember.find(filter);
27 const newMembers: string[] = [];
28 for (const guildMember of guildMembers) {
29 guildMember.status = 0;
30 guildMember.RequestMsg = undefined;
31 guildMember.RequestExpiry = undefined;
32 await guildMember.save();
33
34 // Remove other pending applications for this account
35 await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 });
36
37 // Update inventory of new member
38 const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes");
39 inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
40 addRecipes(inventory, [
41 {
42 ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint",
43 ItemCount: 1
44 }
45 ]);
46 await inventory.save();
47
48 // Add join to clan log
49 const account = (await Account.findOne({ _id: guildMember.accountId }))!;
50 guild.RosterActivity ??= [];
51 guild.RosterActivity.push({
52 dateTime: new Date(),
53 entryType: 6,
54 details: getSuffixedName(account)
55 });
56
57 newMembers.push(account._id.toString());
58 }
59 await guild.save();
60 res.json({
61 NewMembers: newMembers
62 });
63 return;
64 }
65
66 // GET request: A player accepting an invite they got in their inbox.
67
12 // GET request: A player accepting an invite they got in their inbox.
13 export const confirmGuildInvitationGetController: RequestHandler = async (req, res) => {
68 14 const account = await getAccountForRequest(req);
69 15 const invitedGuildMember = await GuildMember.findOne({
70 16 accountId: account._id,
@@ -124,3 +70,55 @@ export const confirmGuildInvitationController: RequestHandler = async (req, res)
124 70 res.end();
125 71 }
126 72 };
73
74 // POST request: Clan representative accepting invite(s).
75 export const confirmGuildInvitationPostController: RequestHandler = async (req, res) => {
76 const accountId = await getAccountIdForRequest(req);
77 const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!;
78 if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) {
79 res.status(400).json("Invalid permission");
80 return;
81 }
82 const payload = getJSONfromString<{ userId: string }>(String(req.body));
83 const filter: { accountId?: string; status: number } = { status: 1 };
84 if (payload.userId != "all") {
85 filter.accountId = payload.userId;
86 }
87 const guildMembers = await GuildMember.find(filter);
88 const newMembers: string[] = [];
89 for (const guildMember of guildMembers) {
90 guildMember.status = 0;
91 guildMember.RequestMsg = undefined;
92 guildMember.RequestExpiry = undefined;
93 await guildMember.save();
94
95 // Remove other pending applications for this account
96 await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 });
97
98 // Update inventory of new member
99 const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes");
100 inventory.GuildId = new Types.ObjectId(req.query.clanId as string);
101 addRecipes(inventory, [
102 {
103 ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint",
104 ItemCount: 1
105 }
106 ]);
107 await inventory.save();
108
109 // Add join to clan log
110 const account = (await Account.findOne({ _id: guildMember.accountId }))!;
111 guild.RosterActivity ??= [];
112 guild.RosterActivity.push({
113 dateTime: new Date(),
114 entryType: 6,
115 details: getSuffixedName(account)
116 });
117
118 newMembers.push(account._id.toString());
119 }
120 await guild.save();
121 res.json({
122 NewMembers: newMembers
123 });
124 };
Modified src/routes/api.ts +3 -3
@@ -20,7 +20,7 @@ import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialo
20 20 import { clearNewEpisodeRewardController } from "@/src/controllers/api/clearNewEpisodeRewardController";
21 21 import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
22 22 import { confirmAllianceInvitationController } from "@/src/controllers/api/confirmAllianceInvitationController";
23 import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController";
23 import { confirmGuildInvitationGetController, confirmGuildInvitationPostController } from "@/src/controllers/api/confirmGuildInvitationController";
24 24 import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController";
25 25 import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController";
26 26 import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController";
@@ -146,7 +146,7 @@ apiRouter.get("/changeGuildRank.php", changeGuildRankController);
146 146 apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController);
147 147 apiRouter.get("/claimLibraryDailyTaskReward.php", claimLibraryDailyTaskRewardController);
148 148 apiRouter.get("/confirmAllianceInvitation.php", confirmAllianceInvitationController);
149 apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationController);
149 apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationGetController);
150 150 apiRouter.get("/credits.php", creditsController);
151 151 apiRouter.get("/declineAllianceInvite.php", declineAllianceInviteController);
152 152 apiRouter.get("/declineGuildInvite.php", declineGuildInviteController);
@@ -201,7 +201,7 @@ apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
201 201 apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
202 202 apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController);
203 203 apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
204 apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationController);
204 apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationPostController);
205 205 apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
206 206 apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
207 207 apiRouter.post("/contributeToVault.php", contributeToVaultController);