From 2ec58c0438e0c67003bf1f707bb039fac9a6cadf Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Wed, 3 Jan 2024 17:48:46 -0500 Subject: [PATCH] Follow the project host when clicking their name in the title bar (#3868) This PR adds back the ability to follow the project host when clicking on their name in the title bar. Release Notes: - Added back following the project host when clicking their name in the title bar. --- crates/collab_ui/src/collab_titlebar_item.rs | 36 ++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/crates/collab_ui/src/collab_titlebar_item.rs b/crates/collab_ui/src/collab_titlebar_item.rs index 60bb35a8d5..16d8be89af 100644 --- a/crates/collab_ui/src/collab_titlebar_item.rs +++ b/crates/collab_ui/src/collab_titlebar_item.rs @@ -303,22 +303,38 @@ impl CollabTitlebarItem { // resolve if you are in a room -> render_project_owner // render_project_owner -> resolve if you are in a room -> Option - pub fn render_project_host(&self, cx: &mut ViewContext) -> Option { + pub fn render_project_host(&self, cx: &mut ViewContext) -> Option { let host = self.project.read(cx).host()?; - let host = self.user_store.read(cx).get_cached_user(host.user_id)?; + let host_user = self.user_store.read(cx).get_cached_user(host.user_id)?; let participant_index = self .user_store .read(cx) .participant_indices() - .get(&host.id)?; + .get(&host_user.id)?; Some( - div().border().border_color(gpui::red()).child( - Button::new("project_owner_trigger", host.github_login.clone()) - .color(Color::Player(participant_index.0)) - .style(ButtonStyle::Subtle) - .label_size(LabelSize::Small) - .tooltip(move |cx| Tooltip::text("Toggle following", cx)), - ), + Button::new("project_owner_trigger", host_user.github_login.clone()) + .color(Color::Player(participant_index.0)) + .style(ButtonStyle::Subtle) + .label_size(LabelSize::Small) + .tooltip(move |cx| { + Tooltip::text( + format!( + "{} is sharing this project. Click to follow.", + host_user.github_login.clone() + ), + cx, + ) + }) + .on_click({ + let host_peer_id = host.peer_id.clone(); + cx.listener(move |this, _, cx| { + this.workspace + .update(cx, |workspace, cx| { + workspace.follow(host_peer_id, cx); + }) + .log_err(); + }) + }), ) }