mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 05:26:59 +00:00
feat: reimplement system messages
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
use revolt_quark::{
|
||||
models::{
|
||||
channel::{Channel, FieldsChannel, PartialChannel},
|
||||
message::SystemMessage,
|
||||
File, User,
|
||||
},
|
||||
perms, Database, Error, Permission, Ref, Result,
|
||||
@@ -129,6 +130,38 @@ pub async fn req(
|
||||
partial.nsfw = Some(new_nsfw);
|
||||
}
|
||||
|
||||
// Send out mutation system messages.
|
||||
if let Channel::Group { .. } = &channel {
|
||||
if let Some(name) = &partial.name {
|
||||
SystemMessage::ChannelRenamed {
|
||||
name: name.to_string(),
|
||||
by: user.id.clone(),
|
||||
}
|
||||
.into_message(channel.id().to_string())
|
||||
.create(db, &channel, None)
|
||||
.await
|
||||
.ok();
|
||||
}
|
||||
|
||||
if partial.description.is_some() {
|
||||
SystemMessage::ChannelDescriptionChanged {
|
||||
by: user.id.clone(),
|
||||
}
|
||||
.into_message(channel.id().to_string())
|
||||
.create(db, &channel, None)
|
||||
.await
|
||||
.ok();
|
||||
}
|
||||
|
||||
if partial.icon.is_some() {
|
||||
SystemMessage::ChannelIconChanged { by: user.id }
|
||||
.into_message(channel.id().to_string())
|
||||
.create(db, &channel, None)
|
||||
.await
|
||||
.ok();
|
||||
}
|
||||
}
|
||||
|
||||
channel
|
||||
.update(db, partial, data.remove.unwrap_or_default())
|
||||
.await?;
|
||||
|
||||
@@ -9,7 +9,7 @@ use revolt_quark::{
|
||||
#[openapi(tag = "Groups")]
|
||||
#[put("/<target>/recipients/<member>")]
|
||||
pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyResponse> {
|
||||
let channel = target.as_channel(db).await?;
|
||||
let mut channel = target.as_channel(db).await?;
|
||||
perms(&user)
|
||||
.channel(&channel)
|
||||
.throw_permission_and_view_channel(db, Permission::InviteOthers)
|
||||
|
||||
@@ -55,5 +55,5 @@ pub async fn req(
|
||||
return Err(Error::NotElevated);
|
||||
}
|
||||
|
||||
member.ban(db, data.reason).await.map(Json)
|
||||
server.ban_member(db, member, data.reason).await.map(Json)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
use revolt_quark::{models::User, perms, Db, EmptyResponse, Error, Permission, Ref, Result};
|
||||
use revolt_quark::{
|
||||
models::{server_member::RemovalIntention, User},
|
||||
perms, Db, EmptyResponse, Error, Permission, Ref, Result,
|
||||
};
|
||||
|
||||
/// # Kick Member
|
||||
///
|
||||
@@ -30,5 +33,8 @@ pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyR
|
||||
return Err(Error::NotElevated);
|
||||
}
|
||||
|
||||
member.delete(db).await.map(|_| EmptyResponse)
|
||||
server
|
||||
.remove_member(db, member, RemovalIntention::Kick)
|
||||
.await
|
||||
.map(|_| EmptyResponse)
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
use revolt_quark::{models::User, Db, EmptyResponse, Ref, Result};
|
||||
use revolt_quark::{
|
||||
models::{server_member::RemovalIntention, User},
|
||||
Db, EmptyResponse, Ref, Result,
|
||||
};
|
||||
|
||||
/// # Delete / Leave Server
|
||||
///
|
||||
@@ -12,7 +15,9 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result<EmptyResponse> {
|
||||
if server.owner == user.id {
|
||||
server.delete(db).await
|
||||
} else {
|
||||
member.delete(db).await
|
||||
server
|
||||
.remove_member(db, member, RemovalIntention::Leave)
|
||||
.await
|
||||
}
|
||||
.map(|_| EmptyResponse)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user