diff --git a/.prettierignore b/.prettierignore index 59d6af97..8929f3d1 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,4 @@ +src/routes/api.ts static/webui/libs/ *.html *.md diff --git a/src/controllers/api/confirmGuildInvitationController.ts b/src/controllers/api/confirmGuildInvitationController.ts index e65cf9db..9f43b893 100644 --- a/src/controllers/api/confirmGuildInvitationController.ts +++ b/src/controllers/api/confirmGuildInvitationController.ts @@ -9,62 +9,8 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes"; import { RequestHandler } from "express"; import { Types } from "mongoose"; -export const confirmGuildInvitationController: RequestHandler = async (req, res) => { - if (req.body) { - // POST request: Clan representative accepting invite(s). - const accountId = await getAccountIdForRequest(req); - const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!; - if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) { - res.status(400).json("Invalid permission"); - return; - } - const payload = getJSONfromString<{ userId: string }>(String(req.body)); - const filter: { accountId?: string; status: number } = { status: 1 }; - if (payload.userId != "all") { - filter.accountId = payload.userId; - } - const guildMembers = await GuildMember.find(filter); - const newMembers: string[] = []; - for (const guildMember of guildMembers) { - guildMember.status = 0; - guildMember.RequestMsg = undefined; - guildMember.RequestExpiry = undefined; - await guildMember.save(); - - // Remove other pending applications for this account - await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 }); - - // Update inventory of new member - const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes"); - inventory.GuildId = new Types.ObjectId(req.query.clanId as string); - addRecipes(inventory, [ - { - ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint", - ItemCount: 1 - } - ]); - await inventory.save(); - - // Add join to clan log - const account = (await Account.findOne({ _id: guildMember.accountId }))!; - guild.RosterActivity ??= []; - guild.RosterActivity.push({ - dateTime: new Date(), - entryType: 6, - details: getSuffixedName(account) - }); - - newMembers.push(account._id.toString()); - } - await guild.save(); - res.json({ - NewMembers: newMembers - }); - return; - } - - // GET request: A player accepting an invite they got in their inbox. - +// GET request: A player accepting an invite they got in their inbox. +export const confirmGuildInvitationGetController: RequestHandler = async (req, res) => { const account = await getAccountForRequest(req); const invitedGuildMember = await GuildMember.findOne({ accountId: account._id, @@ -124,3 +70,55 @@ export const confirmGuildInvitationController: RequestHandler = async (req, res) res.end(); } }; + +// POST request: Clan representative accepting invite(s). +export const confirmGuildInvitationPostController: RequestHandler = async (req, res) => { + const accountId = await getAccountIdForRequest(req); + const guild = (await Guild.findById(req.query.clanId as string, "Ranks RosterActivity"))!; + if (!(await hasGuildPermission(guild, accountId, GuildPermission.Recruiter))) { + res.status(400).json("Invalid permission"); + return; + } + const payload = getJSONfromString<{ userId: string }>(String(req.body)); + const filter: { accountId?: string; status: number } = { status: 1 }; + if (payload.userId != "all") { + filter.accountId = payload.userId; + } + const guildMembers = await GuildMember.find(filter); + const newMembers: string[] = []; + for (const guildMember of guildMembers) { + guildMember.status = 0; + guildMember.RequestMsg = undefined; + guildMember.RequestExpiry = undefined; + await guildMember.save(); + + // Remove other pending applications for this account + await GuildMember.deleteMany({ accountId: guildMember.accountId, status: 1 }); + + // Update inventory of new member + const inventory = await getInventory(guildMember.accountId.toString(), "GuildId Recipes"); + inventory.GuildId = new Types.ObjectId(req.query.clanId as string); + addRecipes(inventory, [ + { + ItemType: "/Lotus/Types/Keys/DojoKeyBlueprint", + ItemCount: 1 + } + ]); + await inventory.save(); + + // Add join to clan log + const account = (await Account.findOne({ _id: guildMember.accountId }))!; + guild.RosterActivity ??= []; + guild.RosterActivity.push({ + dateTime: new Date(), + entryType: 6, + details: getSuffixedName(account) + }); + + newMembers.push(account._id.toString()); + } + await guild.save(); + res.json({ + NewMembers: newMembers + }); +}; diff --git a/src/routes/api.ts b/src/routes/api.ts index e05602f0..055ac4f6 100644 --- a/src/routes/api.ts +++ b/src/routes/api.ts @@ -20,7 +20,7 @@ import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialo import { clearNewEpisodeRewardController } from "@/src/controllers/api/clearNewEpisodeRewardController"; import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController"; import { confirmAllianceInvitationController } from "@/src/controllers/api/confirmAllianceInvitationController"; -import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController"; +import { confirmGuildInvitationGetController, confirmGuildInvitationPostController } from "@/src/controllers/api/confirmGuildInvitationController"; import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController"; import { contributeToDojoComponentController } from "@/src/controllers/api/contributeToDojoComponentController"; import { contributeToVaultController } from "@/src/controllers/api/contributeToVaultController"; @@ -146,7 +146,7 @@ apiRouter.get("/changeGuildRank.php", changeGuildRankController); apiRouter.get("/checkDailyMissionBonus.php", checkDailyMissionBonusController); apiRouter.get("/claimLibraryDailyTaskReward.php", claimLibraryDailyTaskRewardController); apiRouter.get("/confirmAllianceInvitation.php", confirmAllianceInvitationController); -apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationController); +apiRouter.get("/confirmGuildInvitation.php", confirmGuildInvitationGetController); apiRouter.get("/credits.php", creditsController); apiRouter.get("/declineAllianceInvite.php", declineAllianceInviteController); apiRouter.get("/declineGuildInvite.php", declineGuildInviteController); @@ -201,7 +201,7 @@ apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController); apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController); apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController); apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController); -apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationController); +apiRouter.post("/confirmGuildInvitation.php", confirmGuildInvitationPostController); apiRouter.post("/contributeGuildClass.php", contributeGuildClassController); apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController); apiRouter.post("/contributeToVault.php", contributeToVaultController);