forked from jmug/stoatchat
feat: track join time
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
use revolt_database::{
|
||||
util::{permissions::DatabasePermissionQuery, reference::Reference},
|
||||
voice::{
|
||||
delete_voice_state, get_channel_node, get_voice_channel_members, is_in_voice_channel,
|
||||
VoiceClient,
|
||||
delete_channel_voice_state, delete_voice_state, get_channel_node, get_voice_channel_members, is_in_voice_channel, VoiceClient
|
||||
},
|
||||
Channel, Database, PartialChannel, User, AMQP,
|
||||
};
|
||||
@@ -63,6 +62,7 @@ pub async fn delete(
|
||||
voice_client
|
||||
.remove_user(&node, &user.id, channel.id())
|
||||
.await?;
|
||||
|
||||
delete_voice_state(channel.id(), None, &user.id).await?;
|
||||
};
|
||||
}
|
||||
@@ -73,10 +73,9 @@ pub async fn delete(
|
||||
if let Some(users) = get_voice_channel_members(channel.id()).await? {
|
||||
let node = get_channel_node(channel.id()).await?.unwrap();
|
||||
|
||||
for user in users {
|
||||
voice_client.remove_user(&node, &user, channel.id()).await?;
|
||||
delete_voice_state(channel.id(), channel.server(), &user).await?;
|
||||
}
|
||||
voice_client.delete_room(&node, channel.id()).await?;
|
||||
|
||||
delete_channel_voice_state(channel.id(), channel.server(), &users).await?;
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
use revolt_database::{
|
||||
util::{permissions::DatabasePermissionQuery, reference::Reference},
|
||||
Channel, Database, File, PartialChannel, SystemMessage, User, AMQP,
|
||||
util::{permissions::DatabasePermissionQuery, reference::Reference}, voice::{delete_channel_voice_state, get_channel_node, get_voice_channel_members, VoiceClient}, Channel, Database, File, PartialChannel, SystemMessage, User, AMQP
|
||||
};
|
||||
use revolt_models::v0;
|
||||
use revolt_permissions::{calculate_channel_permissions, ChannelPermission};
|
||||
@@ -15,6 +14,7 @@ use validator::Validate;
|
||||
#[patch("/<target>", data = "<data>")]
|
||||
pub async fn edit(
|
||||
db: &State<Database>,
|
||||
voice_client: &State<VoiceClient>,
|
||||
amqp: &State<AMQP>,
|
||||
user: User,
|
||||
target: Reference<'_>,
|
||||
@@ -214,6 +214,9 @@ pub async fn edit(
|
||||
v0::FieldsChannel::Icon => {
|
||||
icon.take();
|
||||
}
|
||||
v0::FieldsChannel::Voice => {
|
||||
voice.take();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
@@ -257,5 +260,15 @@ pub async fn edit(
|
||||
)
|
||||
.await?;
|
||||
|
||||
if channel.voice().is_none() {
|
||||
if let Some(users) = get_voice_channel_members(channel.id()).await? {
|
||||
let node = get_channel_node(channel.id()).await?.unwrap();
|
||||
|
||||
voice_client.delete_room(&node, channel.id()).await?;
|
||||
|
||||
delete_channel_voice_state(channel.id(), channel.server(), &users).await?;
|
||||
};
|
||||
}
|
||||
|
||||
Ok(Json(channel.into()))
|
||||
}
|
||||
|
||||
@@ -87,6 +87,7 @@ pub async fn call(
|
||||
voice_client
|
||||
.remove_user(&node, &user.id, &channel_id)
|
||||
.await?;
|
||||
|
||||
delete_voice_state(&channel_id, channel.server(), &user.id).await?;
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user