forked from jmug/stoatchat
feat: reimplement system messages
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
use revolt_quark::{
|
use revolt_quark::{
|
||||||
models::{
|
models::{
|
||||||
channel::{Channel, FieldsChannel, PartialChannel},
|
channel::{Channel, FieldsChannel, PartialChannel},
|
||||||
|
message::SystemMessage,
|
||||||
File, User,
|
File, User,
|
||||||
},
|
},
|
||||||
perms, Database, Error, Permission, Ref, Result,
|
perms, Database, Error, Permission, Ref, Result,
|
||||||
@@ -129,6 +130,38 @@ pub async fn req(
|
|||||||
partial.nsfw = Some(new_nsfw);
|
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
|
channel
|
||||||
.update(db, partial, data.remove.unwrap_or_default())
|
.update(db, partial, data.remove.unwrap_or_default())
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ use revolt_quark::{
|
|||||||
#[openapi(tag = "Groups")]
|
#[openapi(tag = "Groups")]
|
||||||
#[put("/<target>/recipients/<member>")]
|
#[put("/<target>/recipients/<member>")]
|
||||||
pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyResponse> {
|
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)
|
perms(&user)
|
||||||
.channel(&channel)
|
.channel(&channel)
|
||||||
.throw_permission_and_view_channel(db, Permission::InviteOthers)
|
.throw_permission_and_view_channel(db, Permission::InviteOthers)
|
||||||
|
|||||||
@@ -55,5 +55,5 @@ pub async fn req(
|
|||||||
return Err(Error::NotElevated);
|
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
|
/// # Kick Member
|
||||||
///
|
///
|
||||||
@@ -30,5 +33,8 @@ pub async fn req(db: &Db, user: User, target: Ref, member: Ref) -> Result<EmptyR
|
|||||||
return Err(Error::NotElevated);
|
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
|
/// # Delete / Leave Server
|
||||||
///
|
///
|
||||||
@@ -12,7 +15,9 @@ pub async fn req(db: &Db, user: User, target: Ref) -> Result<EmptyResponse> {
|
|||||||
if server.owner == user.id {
|
if server.owner == user.id {
|
||||||
server.delete(db).await
|
server.delete(db).await
|
||||||
} else {
|
} else {
|
||||||
member.delete(db).await
|
server
|
||||||
|
.remove_member(db, member, RemovalIntention::Leave)
|
||||||
|
.await
|
||||||
}
|
}
|
||||||
.map(|_| EmptyResponse)
|
.map(|_| EmptyResponse)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user