Emit an event when adding a worktree to a project

Max Brunsfeld created

Change summary

crates/collab/src/rpc.rs      | 21 +++++++++++----------
crates/project/src/project.rs |  2 ++
2 files changed, 13 insertions(+), 10 deletions(-)

Detailed changes

crates/collab/src/rpc.rs 🔗

@@ -2234,7 +2234,6 @@ mod tests {
             .read_with(cx_a, |project, _| project.next_remote_id())
             .await;
 
-        let project_a_events = Rc::new(RefCell::new(Vec::new()));
         let user_b = client_a
             .user_store
             .update(cx_a, |store, cx| {
@@ -2242,15 +2241,6 @@ mod tests {
             })
             .await
             .unwrap();
-        project_a.update(cx_a, {
-            let project_a_events = project_a_events.clone();
-            move |_, cx| {
-                cx.subscribe(&cx.handle(), move |_, _, event, _| {
-                    project_a_events.borrow_mut().push(event.clone());
-                })
-                .detach();
-            }
-        });
 
         let (worktree_a, _) = project_a
             .update(cx_a, |p, cx| {
@@ -2262,6 +2252,17 @@ mod tests {
             .read_with(cx_a, |tree, _| tree.as_local().unwrap().scan_complete())
             .await;
 
+        let project_a_events = Rc::new(RefCell::new(Vec::new()));
+        project_a.update(cx_a, {
+            let project_a_events = project_a_events.clone();
+            move |_, cx| {
+                cx.subscribe(&cx.handle(), move |_, _, event, _| {
+                    project_a_events.borrow_mut().push(event.clone());
+                })
+                .detach();
+            }
+        });
+
         // Request to join that project as client B
         let project_b = cx_b.spawn(|mut cx| {
             let client = client_b.client.clone();

crates/project/src/project.rs 🔗

@@ -139,6 +139,7 @@ pub struct Collaborator {
 #[derive(Clone, Debug, PartialEq, Eq)]
 pub enum Event {
     ActiveEntryChanged(Option<ProjectEntryId>),
+    WorktreeAdded,
     WorktreeRemoved(WorktreeId),
     DiskBasedDiagnosticsStarted,
     DiskBasedDiagnosticsUpdated,
@@ -3637,6 +3638,7 @@ impl Project {
             self.worktrees
                 .push(WorktreeHandle::Weak(worktree.downgrade()));
         }
+        cx.emit(Event::WorktreeAdded);
         cx.notify();
     }