返回提交历史
Modified
.prettierignore
+1
-0
Modified
src/controllers/api/confirmGuildInvitationController.ts
+54
-56
Modified
src/routes/api.ts
+3
-3
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
代码差异
3 个文件
+58
-59
@@ -1,3 +1,4 @@
1
src/routes/api.ts
1
2
static/webui/libs/
2
3
*.html
3
4
*.md
@@ -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
};
@@ -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);