summary refs log tree commit diff
diff options
context:
space:
mode:
authorMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-29 21:27:33 +1000
committerMadeline <46743919+MaddyUnderStars@users.noreply.github.com>2022-09-29 21:29:54 +1000
commite7b702924497edb1da01857c8bcd02f2cfa7eda1 (patch)
tree126760183787c32568f1b9f3ef0a16e7bcd30288
parentPrevent URL embedding and mentions when in codeblock (diff)
downloadserver-e7b702924497edb1da01857c8bcd02f2cfa7eda1.tar.xz
Fix fetching members for roles in POST message
-rw-r--r--src/api/routes/channels/#channel_id/messages/index.ts27
-rw-r--r--src/api/util/handlers/Message.ts10
2 files changed, 21 insertions, 16 deletions
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index 8598d1f8..747701db 100644
--- a/src/api/routes/channels/#channel_id/messages/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -255,17 +255,22 @@ router.post(
 			);
 		}
 
-		const member = await Member.findOneOrFail({
-			where: { id: req.user_id },
-			relations: ["roles"],
-		});
-		member.roles = member.roles
-			.filter((role: Role) => {
-				return role.id !== role.guild_id;
-			})
-			.map((role: Role) => {
-				return role.id;
-			}) as any;
+		if (message.guild_id) {
+			// handleMessage will fetch the Member, but only if they are not guild owner.
+			// have to fetch ourselves otherwise.
+			if (!message.member) {
+				message.member = await Member.findOneOrFail({
+					where: { id: req.user_id, guild_id: message.guild_id },
+					relations: ["roles"]
+				});
+			}
+
+			//@ts-ignore
+			message.member.roles =
+				message.member.roles.
+					filter(x => x.id != x.guild_id)
+					.map(x => x.id);
+		}
 
 		let read_state = await ReadState.findOne({
 			where: { user_id: req.user_id, channel_id }
diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts
index 005d9d23..c0bdb6b0 100644
--- a/src/api/util/handlers/Message.ts
+++ b/src/api/util/handlers/Message.ts
@@ -64,7 +64,7 @@ export async function handleMessage(opts: MessageOptions): Promise<Message> {
 		channel_id: opts.channel_id,
 		attachments: opts.attachments || [],
 		embeds: opts.embeds || [],
-		reactions: /*opts.reactions ||*/ [],
+		reactions: /*opts.reactions ||*/[],
 		type: opts.type ?? 0,
 	});
 
@@ -247,12 +247,12 @@ export async function postHandleMessage(message: Message) {
 				const width =
 					parseInt(
 						$('meta[property="og:image:width"]').attr("content") ||
-							"",
+						"",
 					) || undefined;
 				const height =
 					parseInt(
 						$('meta[property="og:image:height"]').attr("content") ||
-							"",
+						"",
 					) || undefined;
 
 				const url = $('meta[property="og:url"]').attr("content");
@@ -317,7 +317,7 @@ export async function postHandleMessage(message: Message) {
 					data.embeds.push(embed);
 				}
 			}
-		} catch (error) {}
+		} catch (error) { }
 	}
 
 	await Promise.all([
@@ -345,7 +345,7 @@ export async function sendMessage(opts: MessageOptions) {
 		} as MessageCreateEvent),
 	]);
 
-	postHandleMessage(message).catch((e) => {}); // no await as it should catch error non-blockingly
+	postHandleMessage(message).catch((e) => { }); // no await as it should catch error non-blockingly
 
 	return message;
 }