diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs index 04238edc99dc0e1836b8d6cb38b0faf74c60bd8a..79463bb713fc3393af93bac57b3682c8e08e8b8e 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 c82fb2cee32659e9437481b654a3b1002fefd567..d58886b8a5535805cf34818307e59584382aff9d 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 7c4f037cca2d353d5d2b9e8af3fb85bb7bcae28a..d032377f7a517cbe8155665eb19a1d6bad0f8236 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