From 10f116b4a3fe37dfa0c5476d383602a7089fad30 Mon Sep 17 00:00:00 2001 From: Paul <paulmakles@gmail.com> Date: Fri, 14 May 2021 22:44:35 +0100 Subject: [PATCH] Block voice calls in saved messages channel. Add messages for desc / icon change for group chats. --- src/database/entities/message.rs | 4 ++++ src/database/permissions/channel.rs | 2 +- src/routes/channels/edit_channel.rs | 24 +++++++++++++++++++++++- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs index 04238ed..79463bb 100644 --- a/src/database/entities/message.rs +++ b/src/database/entities/message.rs @@ -30,6 +30,10 @@ pub enum SystemMessage { UserLeft { id: String }, #[serde(rename = "channel_renamed")] ChannelRenamed { name: String, by: String }, + #[serde(rename = "channel_description_changed")] + ChannelDescriptionChanged { by: String }, + #[serde(rename = "channel_icon_changed")] + ChannelIconChanged { by: String }, } #[derive(Serialize, Deserialize, Debug, Clone)] diff --git a/src/database/permissions/channel.rs b/src/database/permissions/channel.rs index c82fb2c..d58886b 100644 --- a/src/database/permissions/channel.rs +++ b/src/database/permissions/channel.rs @@ -40,7 +40,7 @@ impl<'a> PermissionCalculator<'a> { match channel { Channel::SavedMessages { user: owner, .. } => { if &self.perspective.id == owner { - Ok(u32::MAX) + Ok(u32::MAX - ChannelPermission::VoiceCall as u32) } else { Ok(0) } diff --git a/src/routes/channels/edit_channel.rs b/src/routes/channels/edit_channel.rs index 7c4f037..d032377 100644 --- a/src/routes/channels/edit_channel.rs +++ b/src/routes/channels/edit_channel.rs @@ -111,7 +111,29 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> { Message::create( "00000000000000000000000000".to_string(), id.clone(), - Content::SystemMessage(SystemMessage::ChannelRenamed { name, by: user.id }), + Content::SystemMessage(SystemMessage::ChannelRenamed { name, by: user.id.clone() }), + ) + .publish(&target) + .await + .ok(); + } + + if let Some(_) = data.description { + Message::create( + "00000000000000000000000000".to_string(), + id.clone(), + Content::SystemMessage(SystemMessage::ChannelDescriptionChanged { by: user.id.clone() }), + ) + .publish(&target) + .await + .ok(); + } + + if let Some(_) = data.icon { + Message::create( + "00000000000000000000000000".to_string(), + id.clone(), + Content::SystemMessage(SystemMessage::ChannelIconChanged { by: user.id }), ) .publish(&target) .await -- GitLab