WIP: Start integrating screen-sharing

This commit is contained in:
Antonio Scandurra 2022-10-17 14:50:05 +02:00
parent cce00526b9
commit 81d83841ab
8 changed files with 130 additions and 53 deletions

View file

@ -5,7 +5,7 @@ use crate::{
db::{self, ChannelId, MessageId, ProjectId, User, UserId},
AppState, Result,
};
use anyhow::{anyhow, Context};
use anyhow::anyhow;
use async_tungstenite::tungstenite::{
protocol::CloseFrame as TungsteniteCloseFrame, Message as TungsteniteMessage,
};
@ -605,37 +605,34 @@ impl Server {
room = store.create_room(request.sender_id)?.clone();
}
let live_kit_token = if let Some(live_kit) = self.app_state.live_kit_client.as_ref() {
if let Some(_) = live_kit
.create_room(room.live_kit_room.clone())
.await
.with_context(|| {
format!(
"error creating LiveKit room (LiveKit room: {}, Zed room: {})",
room.live_kit_room, room.id
)
})
.trace_err()
{
live_kit
.room_token_for_user(&room.live_kit_room, &user_id.to_string())
.with_context(|| {
format!(
"error creating LiveKit access token (LiveKit room: {}, Zed room: {})",
room.live_kit_room, room.id
)
})
let live_kit_connection_info =
if let Some(live_kit) = self.app_state.live_kit_client.as_ref() {
if let Some(_) = live_kit
.create_room(room.live_kit_room.clone())
.await
.trace_err()
{
if let Some(token) = live_kit
.room_token_for_user(&room.live_kit_room, &user_id.to_string())
.trace_err()
{
Some(proto::LiveKitConnectionInfo {
server_url: live_kit.url().into(),
token,
})
} else {
None
}
} else {
None
}
} else {
None
}
} else {
None
};
};
response.send(proto::CreateRoomResponse {
room: Some(room),
live_kit_token,
live_kit_connection_info,
})?;
self.update_user_contacts(user_id).await?;
Ok(())
@ -658,23 +655,26 @@ impl Server {
.trace_err();
}
let live_kit_token = if let Some(live_kit) = self.app_state.live_kit_client.as_ref() {
live_kit
.room_token_for_user(&room.live_kit_room, &user_id.to_string())
.with_context(|| {
format!(
"error creating LiveKit access token (LiveKit room: {}, Zed room: {})",
room.live_kit_room, room.id
)
})
.trace_err()
} else {
None
};
let live_kit_connection_info =
if let Some(live_kit) = self.app_state.live_kit_client.as_ref() {
if let Some(token) = live_kit
.room_token_for_user(&room.live_kit_room, &user_id.to_string())
.trace_err()
{
Some(proto::LiveKitConnectionInfo {
server_url: live_kit.url().into(),
token,
})
} else {
None
}
} else {
None
};
response.send(proto::JoinRoomResponse {
room: Some(room.clone()),
live_kit_token,
live_kit_connection_info,
})?;
self.room_updated(room);
}