From 2c067969a0699c359b3642791999407c2289cdaa Mon Sep 17 00:00:00 2001 From: "Rainb0w :3" <81040339+Rainb0wCodes@users.noreply.github.com> Date: Sat, 8 Apr 2023 22:07:23 -0600 Subject: [PATCH 1/3] properly track reactions --- .../channels/#channel_id/messages/#message_id/reactions.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts index eafa70c8..fa1c996d 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -180,6 +180,7 @@ router.put( if (already_added.user_ids.includes(req.user_id)) return res.sendStatus(204); // Do not throw an error ¯\_(ツ)_/¯ as discord also doesn't throw any error already_added.count++; + already_added.user_ids.push(req.user_id); } else message.reactions.push({ count: 1, @@ -247,6 +248,7 @@ router.delete( already_added.count--; if (already_added.count <= 0) message.reactions.remove(already_added); + else already_added.user_ids.splice(already_added.user_ids.indexOf(user_id), 1); await message.save(); From 88031fd0b7fa6c8e8d104340874944fe53efc19a Mon Sep 17 00:00:00 2001 From: "Rainb0w :3" <81040339+Rainb0wCodes@users.noreply.github.com> Date: Mon, 10 Apr 2023 20:26:00 -0600 Subject: [PATCH 2/3] Update reactions.ts --- .../channels/#channel_id/messages/#message_id/reactions.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts index fa1c996d..e0a51668 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -248,7 +248,8 @@ router.delete( already_added.count--; if (already_added.count <= 0) message.reactions.remove(already_added); - else already_added.user_ids.splice(already_added.user_ids.indexOf(user_id), 1); + else + already_added.user_ids.splice(already_added.user_ids.indexOf(user_id), 1); await message.save(); From ab07ad692c837e5abe016cfb4a973d35d50c8d44 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 11 Apr 2023 13:47:26 +1000 Subject: [PATCH 3/3] send public member in message_reaction_add eventt --- .../#channel_id/messages/#message_id/reactions.ts | 13 +++++++++++-- src/util/entities/Member.ts | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts index e0a51668..cb66cd64 100644 --- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts +++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts @@ -28,6 +28,7 @@ import { MessageReactionRemoveEmojiEvent, MessageReactionRemoveEvent, PartialEmoji, + PublicMemberProjection, PublicUserProjection, User, } from "@spacebar/util"; @@ -192,7 +193,12 @@ router.put( const member = channel.guild_id && - (await Member.findOneOrFail({ where: { id: req.user_id } })); + ( + await Member.findOneOrFail({ + where: { id: req.user_id }, + select: PublicMemberProjection, + }) + ).toPublicMember(); await emitEvent({ event: "MESSAGE_REACTION_ADD", @@ -249,7 +255,10 @@ router.delete( if (already_added.count <= 0) message.reactions.remove(already_added); else - already_added.user_ids.splice(already_added.user_ids.indexOf(user_id), 1); + already_added.user_ids.splice( + already_added.user_ids.indexOf(user_id), + 1, + ); await message.save(); diff --git a/src/util/entities/Member.ts b/src/util/entities/Member.ts index 13e74dcd..cd885c13 100644 --- a/src/util/entities/Member.ts +++ b/src/util/entities/Member.ts @@ -440,6 +440,15 @@ export class Member extends BaseClassWithoutId { ]); } } + + toPublicMember() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const member: any = {}; + PublicMemberProjection.forEach((x) => { + member[x] = this[x]; + }); + return member as PublicMember; + } } export interface ChannelOverride {