diff --git a/src/database/entities/message.rs b/src/database/entities/message.rs index 04238edc..79463bb7 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 c82fb2ce..d58886b8 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 7c4f037c..d032377f 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) -> 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