forked from jmug/stoatchat
Refactor: Send system messages directly from content.
This commit is contained in:
@@ -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")]
|
||||||
|
|||||||
@@ -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(())
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user