From 03fa923ef4e79cbe14c3dcd239799dfd4a72a07b Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Fri, 11 Jun 2021 19:18:46 +0100 Subject: [PATCH] Refactor: Send system messages directly from content. --- src/database/entities/message.rs | 13 ++++++ src/routes/channels/delete_channel.rs | 12 ++---- src/routes/channels/edit_channel.rs | 46 +++++++--------------- src/routes/channels/group_add_member.rs | 18 +++------ src/routes/channels/group_remove_member.rs | 18 +++------ 5 files changed, 42 insertions(+), 65 deletions(-) diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs index 07c2eca..7d107ff 100644 --- a/src/database/entities/message.rs +++ b/src/database/entities/message.rs @@ -43,6 +43,19 @@ pub enum Content { SystemMessage(SystemMessage), } +impl Content { + pub async fn send_as_system(self, target: &Channel) -> Result<()> { + Message::create( + "00000000000000000000000000".to_string(), + target.id().to_string(), + self, + None + ) + .publish(&target) + .await + } +} + #[derive(Serialize, Deserialize, Debug, Clone)] pub struct Message { #[serde(rename = "_id")] diff --git a/src/routes/channels/delete_channel.rs b/src/routes/channels/delete_channel.rs index 7b3dfed..2869d17 100644 --- a/src/routes/channels/delete_channel.rs +++ b/src/routes/channels/delete_channel.rs @@ -98,15 +98,9 @@ pub async fn req(user: User, target: Ref) -> Result<()> { } .publish(id.clone()); - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::UserLeft { id: user.id }), - None - ) - .publish(&target) - .await - .ok(); + Content::SystemMessage(SystemMessage::UserLeft { id: user.id }) + .send_as_system(&target) + .await.ok(); Ok(()) } diff --git a/src/routes/channels/edit_channel.rs b/src/routes/channels/edit_channel.rs index 8d33a14..668dfe0 100644 --- a/src/routes/channels/edit_channel.rs +++ b/src/routes/channels/edit_channel.rs @@ -112,44 +112,26 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { if let Channel::Group { .. } = &target { if let Some(name) = data.name { - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::ChannelRenamed { - name, - by: user.id.clone(), - }), - None - ) - .publish(&target) - .await - .ok(); + Content::SystemMessage(SystemMessage::ChannelRenamed { + name, + by: user.id.clone(), + }) + .send_as_system(&target) + .await.ok(); } if let Some(_) = data.description { - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::ChannelDescriptionChanged { - by: user.id.clone(), - }), - None - ) - .publish(&target) - .await - .ok(); + Content::SystemMessage(SystemMessage::ChannelDescriptionChanged { + by: user.id.clone(), + }) + .send_as_system(&target) + .await.ok(); } if let Some(_) = data.icon { - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::ChannelIconChanged { by: user.id }), - None - ) - .publish(&target) - .await - .ok(); + Content::SystemMessage(SystemMessage::ChannelIconChanged { by: user.id }) + .send_as_system(&target) + .await.ok(); } } diff --git a/src/routes/channels/group_add_member.rs b/src/routes/channels/group_add_member.rs index bb6aa70..e00c8af 100644 --- a/src/routes/channels/group_add_member.rs +++ b/src/routes/channels/group_add_member.rs @@ -55,18 +55,12 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<()> { } .publish(id.clone()); - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::UserAdded { - id: member.id, - by: user.id, - }), - None - ) - .publish(&channel) - .await - .ok(); + Content::SystemMessage(SystemMessage::UserAdded { + id: member.id, + by: user.id, + }) + .send_as_system(&channel) + .await.ok(); Ok(()) } else { diff --git a/src/routes/channels/group_remove_member.rs b/src/routes/channels/group_remove_member.rs index 9f7ea61..640bb8e 100644 --- a/src/routes/channels/group_remove_member.rs +++ b/src/routes/channels/group_remove_member.rs @@ -51,18 +51,12 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<()> { } .publish(id.clone()); - Message::create( - "00000000000000000000000000".to_string(), - id.clone(), - Content::SystemMessage(SystemMessage::UserRemove { - id: member.id, - by: user.id, - }), - None - ) - .publish(&channel) - .await - .ok(); + Content::SystemMessage(SystemMessage::UserRemove { + id: member.id, + by: user.id, + }) + .send_as_system(&channel) + .await.ok(); Ok(()) } else { -- GitLab