diff --git a/src/api/routes/channels/#channel_id/invites.ts b/src/api/routes/channels/#channel_id/invites.ts
index 808f0f8c7..45b7d7902 100644
--- a/src/api/routes/channels/#channel_id/invites.ts
+++ b/src/api/routes/channels/#channel_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 @@ router.post(
}).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/#guild_id/bans.ts b/src/api/routes/guilds/#guild_id/bans.ts
index cf043b7e2..2bd28acee 100644
--- a/src/api/routes/guilds/#guild_id/bans.ts
+++ b/src/api/routes/guilds/#guild_id/bans.ts
@@ -20,7 +20,7 @@ import { route } from "@spacebar/api";
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 @@ router.get(
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 @@ router.put(
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/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts
index 004c2ab26..41e14ebd8 100644
--- a/src/api/routes/guilds/#guild_id/bulk-ban.ts
+++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts
@@ -94,7 +94,7 @@ router.post(
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/#user_id/profile.ts b/src/api/routes/users/#user_id/profile.ts
index bcd59cd18..b100ac35a 100644
--- a/src/api/routes/users/#user_id/profile.ts
+++ b/src/api/routes/users/#user_id/profile.ts
@@ -29,7 +29,10 @@ router.get("/", route({ responses: { 200: { body: "UserProfileResponse" } } }),
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 65583f53a..915fe2921 100644
--- a/src/api/util/handlers/Message.ts
+++ b/src/api/util/handlers/Message.ts
@@ -158,7 +158,9 @@ export async function handleMessage(opts: MessageOptions): Promise {
}
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 d994af597..fe8710ab6 100644
--- a/src/gateway/opcodes/LazyRequest.ts
+++ b/src/gateway/opcodes/LazyRequest.ts
@@ -192,7 +192,7 @@ export async function onLazyRequest(this: WebSocket, { d }: Payload) {
// 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 4faebdaf3..016424ec8 100644
--- a/src/util/entities/Member.ts
+++ b/src/util/entities/Member.ts
@@ -378,7 +378,7 @@ export class Member extends BaseClassWithoutId {
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 271a26c38..9e9685b03 100644
--- a/src/util/entities/User.ts
+++ b/src/util/entities/User.ts
@@ -206,14 +206,12 @@ export class User extends BaseClass {
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 {