diff --git "a/src/api/routes/channels/\043channel_id/invites.ts" "b/src/api/routes/channels/\043channel_id/invites.ts" index 808f0f8..45b7d79 100644 --- "a/src/api/routes/channels/\043channel_id/invites.ts" +++ "b/src/api/routes/channels/\043channel_id/invites.ts" @@ -1,17 +1,17 @@ /* Spacebar: A FOSS re-implementation and extension of the Discord.com backend. Copyright (C) 2023 Spacebar and Spacebar Contributors - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ @@ -72,7 +72,7 @@ }).save(); const data = invite.toJSON(); - data.inviter = (await User.getPublicUser(req.user_id)).toPublicUser(); + data.inviter = await User.getPublicUser(req.user_id); data.guild = await Guild.findOne({ where: { id: guild_id } }); data.channel = channel; diff --git "a/src/api/routes/guilds/\043guild_id/bans.ts" "b/src/api/routes/guilds/\043guild_id/bans.ts" index cf043b7..2bd28ac 100644 --- "a/src/api/routes/guilds/\043guild_id/bans.ts" +++ "b/src/api/routes/guilds/\043guild_id/bans.ts" @@ -20,7 +20,7 @@ import { Ban, DiscordApiErrors, GuildBanAddEvent, GuildBanRemoveEvent, Member, User, emitEvent } from "@spacebar/util"; import { Request, Response, Router } from "express"; import { HTTPError } from "lambert-server"; -import { APIBansArray, BanCreateSchema, BanRegistrySchema, GuildBansResponse } from "@spacebar/schemas"; +import { APIBansArray, BanCreateSchema, BanRegistrySchema, GuildBansResponse, PublicUser } from "@spacebar/schemas"; const router: Router = Router({ mergeParams: true }); @@ -43,7 +43,7 @@ const { guild_id } = req.params; let bans = await Ban.find({ where: { guild_id: guild_id } }); - const promisesToAwait: Promise[] = []; + const promisesToAwait: Promise[] = []; const bansObj: APIBansArray = []; bans = bans.filter((ban) => ban.user_id !== ban.executor_id); // pretend self-bans don't exist to prevent victim chasing @@ -236,7 +236,7 @@ event: "GUILD_BAN_ADD", data: { guild_id: guild_id, - user: banned_user.toPublicUser(), + user: banned_user, delete_message_secs: Math.floor(deleteMessagesMs / 1000), }, guild_id: guild_id, diff --git "a/src/api/routes/guilds/\043guild_id/bulk-ban.ts" "b/src/api/routes/guilds/\043guild_id/bulk-ban.ts" index 004c2ab..41e14eb 100644 --- "a/src/api/routes/guilds/\043guild_id/bulk-ban.ts" +++ "b/src/api/routes/guilds/\043guild_id/bulk-ban.ts" @@ -94,7 +94,7 @@ event: "GUILD_BAN_ADD", data: { guild_id: guild_id, - user: banned_user.toPublicUser(), + user: banned_user, }, guild_id: guild_id, } as GuildBanAddEvent), diff --git "a/src/api/routes/users/\043user_id/profile.ts" "b/src/api/routes/users/\043user_id/profile.ts" index bcd59cd..b100ac3 100644 --- "a/src/api/routes/users/\043user_id/profile.ts" +++ "b/src/api/routes/users/\043user_id/profile.ts" @@ -29,7 +29,10 @@ const { guild_id, with_mutual_guilds, with_mutual_friends, with_mutual_friends_count } = req.query; - const user = await User.getPublicUser(req.params.user_id, { + const user = await User.findOneOrFail({ + where: { + id: req.params.id, + }, relations: ["connected_accounts"], }); diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index 65583f5..915fe29 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts @@ -158,7 +158,9 @@ } if (opts.author_id) { - message.author = await User.getPublicUser(opts.author_id); + message.author = await User.findOneOrFail({ + where: { id: opts.author_id }, + }); const rights = await getRights(opts.author_id); rights.hasThrow("SEND_MESSAGES"); } diff --git a/src/gateway/opcodes/LazyRequest.ts b/src/gateway/opcodes/LazyRequest.ts index d994af5..fe8710a 100644 --- a/src/gateway/opcodes/LazyRequest.ts +++ b/src/gateway/opcodes/LazyRequest.ts @@ -192,7 +192,7 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore if (session?.status == "unknown") session.status = "online"; - const user = (await User.getPublicUser(x)).toPublicUser(); // why is this needed? + const user = await User.getPublicUser(x); return Send(this, { op: OPCODES.Dispatch, diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 4faebda..016424e 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -378,7 +378,7 @@ event: "GUILD_MEMBER_ADD", data: { ...member, - user: user.toPublicUser(), + user: user, guild_id, }, guild_id, diff --git a/src/util/entities/User.ts b/src/util/entities/User.ts index 271a26c..9e9685b 100644 --- a/src/util/entities/User.ts +++ b/src/util/entities/User.ts @@ -206,14 +206,12 @@ return user as UserPrivate; } - static async getPublicUser(user_id: string, opts?: FindOneOptions) { - return await User.findOneOrFail({ + static async getPublicUser(user_id: string): Promise { + const user = await User.findOneOrFail({ where: { id: user_id }, - ...opts, - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore - select: [...PublicUserProjection, ...(opts?.select || [])], // TODO: fix + select: PublicUserProjection, }); + return user.toPublicUser(); } public static async generateDiscriminator(username: string): Promise {