Merge pull request #1206 from zed-industries/fix-offline-project-leak

Fix project leak in contacts panel
This commit is contained in:
Max Brunsfeld 2022-06-17 15:55:43 -07:00 committed by GitHub
commit 4bb5a2f19e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -508,18 +508,12 @@ impl ContactsPanel {
}
fn render_offline_project(
project: WeakModelHandle<Project>,
project_handle: WeakModelHandle<Project>,
theme: &theme::ContactsPanel,
tooltip_style: &TooltipStyle,
is_selected: bool,
cx: &mut RenderContext<Self>,
) -> ElementBox {
let project = if let Some(project) = project.upgrade(cx.deref_mut()) {
project
} else {
return Empty::new().boxed();
};
let host_avatar_height = theme
.contact_avatar
.width
@ -529,13 +523,17 @@ impl ContactsPanel {
enum LocalProject {}
enum ToggleOnline {}
let project_id = project.id();
let project_id = project_handle.id();
MouseEventHandler::new::<LocalProject, _, _>(project_id, cx, |state, cx| {
let row = theme.project_row.style_for(state, is_selected);
let mut worktree_root_names = String::new();
let project_ = project.read(cx);
let is_going_online = project_.is_online();
for tree in project_.visible_worktrees(cx) {
let project = if let Some(project) = project_handle.upgrade(cx.deref_mut()) {
project.read(cx)
} else {
return Empty::new().boxed();
};
let is_going_online = project.is_online();
for tree in project.visible_worktrees(cx) {
if !worktree_root_names.is_empty() {
worktree_root_names.push_str(", ");
}
@ -563,9 +561,8 @@ impl ContactsPanel {
button
.with_cursor_style(CursorStyle::PointingHand)
.on_click(move |_, _, cx| {
cx.dispatch_action(ToggleProjectOnline {
project: Some(project.clone()),
})
let project = project_handle.upgrade(cx.deref_mut());
cx.dispatch_action(ToggleProjectOnline { project })
})
.with_tooltip::<ToggleOnline, _>(
project_id,