collab tweaks (#7706)
- Don't leave call when clicking on channel - Don't prompt to leave a call you're not in Release Notes: - N/A
This commit is contained in:
parent
d13a731cd6
commit
21d2b5fe50
2 changed files with 26 additions and 33 deletions
|
@ -1479,23 +1479,7 @@ impl CollabPanel {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ListEntry::Channel { channel, .. } => {
|
ListEntry::Channel { channel, .. } => self.open_channel(channel.id, cx),
|
||||||
let is_active = maybe!({
|
|
||||||
let call_channel = ActiveCall::global(cx)
|
|
||||||
.read(cx)
|
|
||||||
.room()?
|
|
||||||
.read(cx)
|
|
||||||
.channel_id()?;
|
|
||||||
|
|
||||||
Some(call_channel == channel.id)
|
|
||||||
})
|
|
||||||
.unwrap_or(false);
|
|
||||||
if is_active {
|
|
||||||
self.open_channel_notes(channel.id, cx)
|
|
||||||
} else {
|
|
||||||
self.open_channel(channel.id, cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ListEntry::ContactPlaceholder => self.toggle_contact_finder(cx),
|
ListEntry::ContactPlaceholder => self.toggle_contact_finder(cx),
|
||||||
ListEntry::CallParticipant { user, peer_id, .. } => {
|
ListEntry::CallParticipant { user, peer_id, .. } => {
|
||||||
if Some(user) == self.user_store.read(cx).current_user().as_ref() {
|
if Some(user) == self.user_store.read(cx).current_user().as_ref() {
|
||||||
|
@ -1977,20 +1961,30 @@ impl CollabPanel {
|
||||||
.detach_and_prompt_err("Call failed", cx, |_, _| None);
|
.detach_and_prompt_err("Call failed", cx, |_, _| None);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open_channel(&self, channel_id: u64, cx: &mut ViewContext<Self>) {
|
fn open_channel(&mut self, channel_id: u64, cx: &mut ViewContext<Self>) {
|
||||||
let Some(workspace) = self.workspace.upgrade() else {
|
let Some(workspace) = self.workspace.upgrade() else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let Some(handle) = cx.window_handle().downcast::<Workspace>() else {
|
let Some(handle) = cx.window_handle().downcast::<Workspace>() else {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
let is_in_call = ActiveCall::global(cx)
|
||||||
|
.read(cx)
|
||||||
|
.room()
|
||||||
|
.map(|room| room.read(cx).in_call())
|
||||||
|
.unwrap_or(false);
|
||||||
|
if !is_in_call {
|
||||||
workspace::open_channel(
|
workspace::open_channel(
|
||||||
channel_id,
|
channel_id,
|
||||||
workspace.read(cx).app_state().clone(),
|
workspace.read(cx).app_state().clone(),
|
||||||
Some(handle),
|
Some(handle),
|
||||||
cx,
|
cx,
|
||||||
)
|
)
|
||||||
.detach_and_prompt_err("Failed to join channel", cx, |_, _| None)
|
.detach_and_prompt_err("Failed to join channel", cx, |_, _| None);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.open_channel_notes(channel_id, cx);
|
||||||
|
self.join_channel_chat(channel_id, cx);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn join_channel_call(&mut self, _channel_id: ChannelId, cx: &mut ViewContext<Self>) {
|
fn join_channel_call(&mut self, _channel_id: ChannelId, cx: &mut ViewContext<Self>) {
|
||||||
|
@ -2590,8 +2584,6 @@ impl CollabPanel {
|
||||||
)
|
)
|
||||||
.on_click(cx.listener(move |this, _, cx| {
|
.on_click(cx.listener(move |this, _, cx| {
|
||||||
this.open_channel(channel_id, cx);
|
this.open_channel(channel_id, cx);
|
||||||
this.open_channel_notes(channel_id, cx);
|
|
||||||
this.join_channel_chat(channel_id, cx);
|
|
||||||
}))
|
}))
|
||||||
.on_secondary_mouse_down(cx.listener(
|
.on_secondary_mouse_down(cx.listener(
|
||||||
move |this, event: &MouseDownEvent, cx| {
|
move |this, event: &MouseDownEvent, cx| {
|
||||||
|
|
|
@ -1217,7 +1217,9 @@ impl Workspace {
|
||||||
if let Some(active_call) = active_call {
|
if let Some(active_call) = active_call {
|
||||||
if !quitting
|
if !quitting
|
||||||
&& workspace_count == 1
|
&& workspace_count == 1
|
||||||
&& active_call.read_with(&cx, |call, _| call.room().is_some())?
|
&& active_call.read_with(&cx, |call, cx| {
|
||||||
|
call.room().is_some_and(|room| room.read(cx).in_call())
|
||||||
|
})?
|
||||||
{
|
{
|
||||||
let answer = window.update(&mut cx, |_, cx| {
|
let answer = window.update(&mut cx, |_, cx| {
|
||||||
cx.prompt(
|
cx.prompt(
|
||||||
|
@ -1230,14 +1232,13 @@ impl Workspace {
|
||||||
|
|
||||||
if answer.await.log_err() == Some(1) {
|
if answer.await.log_err() == Some(1) {
|
||||||
return anyhow::Ok(false);
|
return anyhow::Ok(false);
|
||||||
} else {
|
}
|
||||||
active_call
|
active_call
|
||||||
.update(&mut cx, |call, cx| call.hang_up(cx))?
|
.update(&mut cx, |call, cx| call.hang_up(cx))?
|
||||||
.await
|
.await
|
||||||
.log_err();
|
.log_err();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
Ok(this
|
Ok(this
|
||||||
.update(&mut cx, |this, cx| {
|
.update(&mut cx, |this, cx| {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue