mirror of
https://github.com/stoatchat/stoatchat.git
synced 2026-07-14 05:26:59 +00:00
feat: make Channel::server return a reference
This commit is contained in:
@@ -435,9 +435,9 @@ impl Channel {
|
||||
}
|
||||
|
||||
/// Clone this channel's server id
|
||||
pub fn server(&self) -> Option<String> {
|
||||
pub fn server(&self) -> Option<&str> {
|
||||
match self {
|
||||
Channel::TextChannel { server, .. } | Channel::VoiceChannel { server, .. } => Some(server.clone()),
|
||||
Channel::TextChannel { server, .. } | Channel::VoiceChannel { server, .. } => Some(server),
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
use livekit_protocol::ParticipantPermission;
|
||||
use redis_kiss::{get_connection as _get_connection, Conn, redis::Pipeline, AsyncCommands};
|
||||
use crate::{events::client::EventV1, models::{Channel, User}, util::{permissions::DatabasePermissionQuery, reference::Reference}, Database, Role, Server};
|
||||
use crate::{events::client::EventV1, models::{Channel, User}, util::{permissions::DatabasePermissionQuery, reference::Reference}, Database, Server};
|
||||
use revolt_models::v0::{self, PartialUserVoiceState, UserVoiceState};
|
||||
use revolt_permissions::{calculate_channel_permissions, ChannelPermission, PermissionValue};
|
||||
use revolt_result::{create_error, Result, ToRevoltError};
|
||||
|
||||
@@ -54,7 +54,7 @@ impl VoiceClient {
|
||||
.with_grants(VideoGrants {
|
||||
room_join: true,
|
||||
can_publish: true,
|
||||
can_publish_sources: vec![], // allowed_sources.into_iter().map(ToString::to_string).collect(),
|
||||
can_publish_sources: allowed_sources.into_iter().map(ToString::to_string).collect(),
|
||||
can_subscribe: permissions.has_channel_permission(ChannelPermission::Listen),
|
||||
room: channel.id().to_string(),
|
||||
..Default::default()
|
||||
|
||||
@@ -50,7 +50,7 @@ async fn ingress(db: &State<Database>, voice_client: &State<VoiceClient>, body:
|
||||
.as_channel(db)
|
||||
.await?;
|
||||
|
||||
let voice_state = create_voice_state(channel_id, channel.server().as_deref(), user_id).await?;
|
||||
let voice_state = create_voice_state(channel_id, channel.server(), user_id).await?;
|
||||
|
||||
EventV1::VoiceChannelJoin {
|
||||
id: channel_id.clone(),
|
||||
@@ -67,7 +67,7 @@ async fn ingress(db: &State<Database>, voice_client: &State<VoiceClient>, body:
|
||||
.as_channel(db)
|
||||
.await?;
|
||||
|
||||
delete_voice_state(channel_id, channel.server().as_deref(), user_id).await?;
|
||||
delete_voice_state(channel_id, channel.server(), user_id).await?;
|
||||
|
||||
EventV1::VoiceChannelLeave {
|
||||
id: channel_id.clone(),
|
||||
@@ -93,12 +93,12 @@ async fn ingress(db: &State<Database>, voice_client: &State<VoiceClient>, body:
|
||||
)
|
||||
{
|
||||
voice_client.remove_user(user_id, channel_id).await?;
|
||||
delete_voice_state(channel_id, channel.server().as_deref(), user_id).await?;
|
||||
delete_voice_state(channel_id, channel.server(), user_id).await?;
|
||||
}
|
||||
|
||||
let partial = update_voice_state_tracks(
|
||||
channel_id,
|
||||
channel.server().as_deref(),
|
||||
channel.server(),
|
||||
user_id,
|
||||
body.event == "track_published", // to avoid duplicating this entire case twice
|
||||
track.source
|
||||
|
||||
@@ -55,7 +55,7 @@ pub async fn delete(
|
||||
|
||||
for user_id in get_voice_channel_members(channel.id()).await? {
|
||||
voice_client.remove_user(&user_id, channel.id()).await?;
|
||||
delete_voice_state(channel.id(), channel.server().as_deref(), &user.id).await?;
|
||||
delete_voice_state(channel.id(), channel.server(), &user.id).await?;
|
||||
};
|
||||
|
||||
Ok(EmptyResponse)
|
||||
|
||||
@@ -76,7 +76,7 @@ pub async fn set_default_permissions(
|
||||
}
|
||||
|
||||
let server = match channel.server() {
|
||||
Some(server_id) => Some(Reference::from_unchecked(server_id).as_server(db).await?),
|
||||
Some(server_id) => Some(Reference::from_unchecked(server_id.to_string()).as_server(db).await?),
|
||||
None => None
|
||||
};
|
||||
|
||||
|
||||
@@ -157,8 +157,8 @@ pub async fn edit(
|
||||
roles,
|
||||
timeout,
|
||||
remove,
|
||||
mut can_publish,
|
||||
mut can_receive,
|
||||
can_publish,
|
||||
can_receive,
|
||||
voice_channel,
|
||||
} = data;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user