Refactor: Send system messages directly from content.

This commit is contained in:
Paul
2021-06-11 19:18:46 +01:00
parent 78c890aa59
commit 03fa923ef4
5 changed files with 42 additions and 65 deletions

View File

@@ -43,6 +43,19 @@ pub enum Content {
SystemMessage(SystemMessage), 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)] #[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Message { pub struct Message {
#[serde(rename = "_id")] #[serde(rename = "_id")]

View File

@@ -98,15 +98,9 @@ pub async fn req(user: User, target: Ref) -> Result<()> {
} }
.publish(id.clone()); .publish(id.clone());
Message::create( Content::SystemMessage(SystemMessage::UserLeft { id: user.id })
"00000000000000000000000000".to_string(), .send_as_system(&target)
id.clone(), .await.ok();
Content::SystemMessage(SystemMessage::UserLeft { id: user.id }),
None
)
.publish(&target)
.await
.ok();
Ok(()) Ok(())
} }

View File

@@ -112,44 +112,26 @@ pub async fn req(user: User, target: Ref, data: Json<Data>) -> Result<()> {
if let Channel::Group { .. } = &target { if let Channel::Group { .. } = &target {
if let Some(name) = data.name { if let Some(name) = data.name {
Message::create( Content::SystemMessage(SystemMessage::ChannelRenamed {
"00000000000000000000000000".to_string(), name,
id.clone(), by: user.id.clone(),
Content::SystemMessage(SystemMessage::ChannelRenamed { })
name, .send_as_system(&target)
by: user.id.clone(), .await.ok();
}),
None
)
.publish(&target)
.await
.ok();
} }
if let Some(_) = data.description { if let Some(_) = data.description {
Message::create( Content::SystemMessage(SystemMessage::ChannelDescriptionChanged {
"00000000000000000000000000".to_string(), by: user.id.clone(),
id.clone(), })
Content::SystemMessage(SystemMessage::ChannelDescriptionChanged { .send_as_system(&target)
by: user.id.clone(), .await.ok();
}),
None
)
.publish(&target)
.await
.ok();
} }
if let Some(_) = data.icon { if let Some(_) = data.icon {
Message::create( Content::SystemMessage(SystemMessage::ChannelIconChanged { by: user.id })
"00000000000000000000000000".to_string(), .send_as_system(&target)
id.clone(), .await.ok();
Content::SystemMessage(SystemMessage::ChannelIconChanged { by: user.id }),
None
)
.publish(&target)
.await
.ok();
} }
} }

View File

@@ -55,18 +55,12 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<()> {
} }
.publish(id.clone()); .publish(id.clone());
Message::create( Content::SystemMessage(SystemMessage::UserAdded {
"00000000000000000000000000".to_string(), id: member.id,
id.clone(), by: user.id,
Content::SystemMessage(SystemMessage::UserAdded { })
id: member.id, .send_as_system(&channel)
by: user.id, .await.ok();
}),
None
)
.publish(&channel)
.await
.ok();
Ok(()) Ok(())
} else { } else {

View File

@@ -51,18 +51,12 @@ pub async fn req(user: User, target: Ref, member: Ref) -> Result<()> {
} }
.publish(id.clone()); .publish(id.clone());
Message::create( Content::SystemMessage(SystemMessage::UserRemove {
"00000000000000000000000000".to_string(), id: member.id,
id.clone(), by: user.id,
Content::SystemMessage(SystemMessage::UserRemove { })
id: member.id, .send_as_system(&channel)
by: user.id, .await.ok();
}),
None
)
.publish(&channel)
.await
.ok();
Ok(()) Ok(())
} else { } else {