From 991068aad7be0aaadf9560f9e478a712001d34e0 Mon Sep 17 00:00:00 2001 From: Sainan Date: Mon, 10 Mar 2025 13:57:09 +0100 Subject: [PATCH] construct Members in getGuild response from database --- src/controllers/api/getGuildController.ts | 41 ++++++++++++++++++----- src/types/guildTypes.ts | 9 +++++ 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/src/controllers/api/getGuildController.ts b/src/controllers/api/getGuildController.ts index 71fedaf6..3f741dd8 100644 --- a/src/controllers/api/getGuildController.ts +++ b/src/controllers/api/getGuildController.ts @@ -5,6 +5,9 @@ import { getAccountIdForRequest } from "@/src/services/loginService"; import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers"; import { getGuildVault } from "@/src/services/guildService"; import { logger } from "@/src/utils/logger"; +import { IGuildMemberClient } from "@/src/types/guildTypes"; +import { Account } from "@/src/models/loginModel"; +import { config } from "@/src/services/configService"; const getGuildController: RequestHandler = async (req, res) => { const accountId = await getAccountIdForRequest(req); @@ -25,20 +28,48 @@ const getGuildController: RequestHandler = async (req, res) => { } const guildMembers = await GuildMember.find({ guildId: inventory.GuildId }); - // Handle clans created prior to creation of the GuildMember model. + const members: IGuildMemberClient[] = []; let missingEntry = true; for (const guildMember of guildMembers) { + const member: IGuildMemberClient = { + _id: toOid(guildMember.accountId), + Rank: guildMember.rank, + Status: guildMember.status + }; if (guildMember.accountId.equals(accountId)) { missingEntry = false; + } else { + member.DisplayName = (await Account.findOne( + { + _id: guildMember.accountId + }, + "DisplayName" + ))!.DisplayName; + const inventory = (await Inventory.findOne( + { + accountOwnerId: guildMember.accountId + }, + "PlayerLevel ActiveAvatarImageType" + ))!; + member.PlayerLevel = + config.spoofMasteryRank == -1 ? inventory.PlayerLevel : config.spoofMasteryRank; + member.ActiveAvatarImageType = inventory.ActiveAvatarImageType; } + members.push(member); } if (missingEntry) { + // Handle clans created prior to creation of the GuildMember model. await GuildMember.insertOne({ accountId: accountId, guildId: inventory.GuildId, status: 0, rank: 0 }); + members.push({ + _id: { $oid: accountId }, + Status: 0, + Rank: 0 + }); } res.json({ @@ -46,13 +77,7 @@ const getGuildController: RequestHandler = async (req, res) => { Name: guild.Name, MOTD: guild.MOTD, LongMOTD: guild.LongMOTD, - Members: [ - { - _id: { $oid: req.query.accountId }, - Rank: 0, - Status: 0 - } - ], + Members: members, Ranks: [ { Name: "/Lotus/Language/Game/Rank_Creator", diff --git a/src/types/guildTypes.ts b/src/types/guildTypes.ts index 65edb353..2e10ece7 100644 --- a/src/types/guildTypes.ts +++ b/src/types/guildTypes.ts @@ -42,6 +42,15 @@ export interface IGuildMemberDatabase { rank: number; } +export interface IGuildMemberClient { + _id: IOid; + Status: number; + Rank: number; + DisplayName?: string; + ActiveAvatarImageType?: string; + PlayerLevel?: number; +} + export interface IGuildVault { DojoRefundRegularCredits?: number; DojoRefundMiscItems?: IMiscItem[];