From 8e699a310a96399d2bda9a159b1bef119f9cc35d Mon Sep 17 00:00:00 2001 From: videogame hacker Date: Sun, 3 Oct 2021 12:26:14 +0100 Subject: [PATCH] Box the contents of internal event messages This really just gets rid of a Clippy warning but putting them behind a pointer indirection should be optimal --- src/discord.rs | 24 ++++++++++++++---------- src/main.rs | 6 +++--- src/matrix.rs | 28 ++++++++++++++++------------ src/messages.rs | 6 +++--- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/src/discord.rs b/src/discord.rs index 1a7f45b..11402a0 100644 --- a/src/discord.rs +++ b/src/discord.rs @@ -91,12 +91,12 @@ impl EventHandler for DiscordHandler { .as_ref() .map(|m| MessageReference::from(m.as_ref())); - let _ = self.event_tx.send(MessageEvent::Send(SentMessage { + let _ = self.event_tx.send(MessageEvent::Send(Box::new(SentMessage { source: message_ref, content, author: get_message_author(&ctx, &message).await, replies_to, - })); + }))); } async fn message_update( @@ -118,11 +118,13 @@ impl EventHandler for DiscordHandler { let content = discord_message_format::parse(&new_message.content); let content = message_ast::convert_discord(&content); - let _ = self.event_tx.send(MessageEvent::Edit(EditedMessage { - replacing: message_ref, - content, - author: get_message_author(&ctx, &new_message).await, - })); + let _ = self + .event_tx + .send(MessageEvent::Edit(Box::new(EditedMessage { + replacing: message_ref, + content, + author: get_message_author(&ctx, &new_message).await, + }))); } } @@ -134,9 +136,11 @@ impl EventHandler for DiscordHandler { _guild_id: Option, ) { let message_ref = MessageReference::Discord(channel_id.0, deleted_message_id.0); - let _ = self.event_tx.send(MessageEvent::Delete(DeletedMessage { - reference: message_ref, - })); + let _ = self + .event_tx + .send(MessageEvent::Delete(Box::new(DeletedMessage { + reference: message_ref, + }))); } } diff --git a/src/main.rs b/src/main.rs index 3249d7e..b37548a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -88,13 +88,13 @@ async fn main() { while let Some(event) = event_rx.recv().await { match event { MessageEvent::Send(sent_message) => { - bridgers.send_message(sent_message).await; + bridgers.send_message(*sent_message).await; } MessageEvent::Edit(edited_message) => { - bridgers.edit_message(edited_message).await; + bridgers.edit_message(*edited_message).await; } MessageEvent::Delete(deleted_message) => { - bridgers.delete_message(deleted_message).await; + bridgers.delete_message(*deleted_message).await; } MessageEvent::AdminLinkChannels(channels) => { diff --git a/src/matrix.rs b/src/matrix.rs index e87803e..56dd78f 100644 --- a/src/matrix.rs +++ b/src/matrix.rs @@ -182,24 +182,24 @@ async fn on_message_sent( None }; - Some(MessageEvent::Send(SentMessage { + Some(MessageEvent::Send(Box::new(SentMessage { source: message_ref, content, author, replies_to, - })) + }))) } MessageType::Emote(emote) => { let mut content = ctx.get_content(&emote.body, &emote.formatted); content.insert(0, MessageComponent::Plain("* ".to_string())); - Some(MessageEvent::Send(SentMessage { + Some(MessageEvent::Send(Box::new(SentMessage { source: message_ref, content, author, replies_to: None, - })) + }))) } // TODO: Handle reactions, uploads (audio, video, image, file), and any other types of event @@ -226,11 +226,13 @@ async fn on_message_edited( let content = ctx.get_content(&text.body, &text.formatted); if let Some(author) = ctx.get_message_author(&room, &event.sender).await { - let _ = ctx.message_tx.send(MessageEvent::Edit(EditedMessage { - replacing: message_ref, - content, - author, - })); + let _ = ctx + .message_tx + .send(MessageEvent::Edit(Box::new(EditedMessage { + replacing: message_ref, + content, + author, + }))); } } } @@ -238,9 +240,11 @@ async fn on_message_edited( async fn on_redact_event(ctx: Arc, event: SyncRedactionEvent, room: Room) { let message_ref = MessageReference::from((room.room_id(), &event.redacts)); - let _ = ctx.message_tx.send(MessageEvent::Delete(DeletedMessage { - reference: message_ref, - })); + let _ = ctx + .message_tx + .send(MessageEvent::Delete(Box::new(DeletedMessage { + reference: message_ref, + }))); } fn generate_html_content(content: &[MessageComponent], author: &MessageAuthor) -> (String, String) { diff --git a/src/messages.rs b/src/messages.rs index cc065ac..250b0d6 100644 --- a/src/messages.rs +++ b/src/messages.rs @@ -34,7 +34,7 @@ pub struct DeletedMessage { pub enum MessageEvent { AdminLinkChannels(Vec), - Send(SentMessage), - Edit(EditedMessage), - Delete(DeletedMessage), + Send(Box), + Edit(Box), + Delete(Box), }