This commit is contained in:
Antonio Scandurra 2022-07-01 14:11:21 +02:00
parent 4d3c708387
commit 833aa726d5

View file

@ -410,10 +410,7 @@ impl LocalWorktree {
while let Some(scan_state) = scan_states_rx.next().await { while let Some(scan_state) = scan_states_rx.next().await {
if let Some(this) = this.upgrade(&cx) { if let Some(this) = this.upgrade(&cx) {
last_scan_state_tx.blocking_send(scan_state).ok(); last_scan_state_tx.blocking_send(scan_state).ok();
this.update(&mut cx, |this, cx| { this.update(&mut cx, |this, cx| this.poll_snapshot(cx));
this.poll_snapshot(cx);
this.as_local_mut().unwrap().broadcast_snapshot()
});
} else { } else {
break; break;
} }
@ -500,8 +497,11 @@ impl LocalWorktree {
fn poll_snapshot(&mut self, cx: &mut ModelContext<Worktree>) { fn poll_snapshot(&mut self, cx: &mut ModelContext<Worktree>) {
match self.scan_state() { match self.scan_state() {
ScanState::Idle => { ScanState::Idle => {
self.snapshot = self.background_snapshot.lock().clone();
self.poll_task.take(); self.poll_task.take();
self.snapshot = self.background_snapshot.lock().clone();
if let Some(share) = self.share.as_mut() {
*share.snapshots_tx.borrow_mut() = self.snapshot.clone();
}
cx.emit(Event::UpdatedEntries); cx.emit(Event::UpdatedEntries);
} }
ScanState::Initializing => { ScanState::Initializing => {
@ -677,7 +677,6 @@ impl LocalWorktree {
snapshot.delete_entry(entry_id); snapshot.delete_entry(entry_id);
} }
this.poll_snapshot(cx); this.poll_snapshot(cx);
this.broadcast_snapshot();
}); });
Ok(()) Ok(())
})) }))
@ -717,7 +716,6 @@ impl LocalWorktree {
this.update(&mut cx, |this, cx| { this.update(&mut cx, |this, cx| {
let this = this.as_local_mut().unwrap(); let this = this.as_local_mut().unwrap();
this.poll_snapshot(cx); this.poll_snapshot(cx);
this.broadcast_snapshot();
}); });
Ok(entry) Ok(entry)
})) }))
@ -757,7 +755,6 @@ impl LocalWorktree {
this.update(&mut cx, |this, cx| { this.update(&mut cx, |this, cx| {
let this = this.as_local_mut().unwrap(); let this = this.as_local_mut().unwrap();
this.poll_snapshot(cx); this.poll_snapshot(cx);
this.broadcast_snapshot()
}); });
Ok(entry) Ok(entry)
})) }))
@ -795,7 +792,6 @@ impl LocalWorktree {
this.update(&mut cx, |this, cx| { this.update(&mut cx, |this, cx| {
let this = this.as_local_mut().unwrap(); let this = this.as_local_mut().unwrap();
this.poll_snapshot(cx); this.poll_snapshot(cx);
this.broadcast_snapshot();
}); });
Ok(entry) Ok(entry)
}) })
@ -844,7 +840,6 @@ impl LocalWorktree {
snapshot.scan_id += 1; snapshot.scan_id += 1;
} }
this.poll_snapshot(cx); this.poll_snapshot(cx);
this.broadcast_snapshot();
Ok(inserted_entry) Ok(inserted_entry)
}) })
}) })
@ -936,15 +931,6 @@ impl LocalWorktree {
pub fn is_shared(&self) -> bool { pub fn is_shared(&self) -> bool {
self.share.is_some() self.share.is_some()
} }
fn broadcast_snapshot(&mut self) {
if matches!(self.scan_state(), ScanState::Idle) {
let snapshot = self.snapshot();
if let Some(share) = self.share.as_mut() {
*share.snapshots_tx.borrow_mut() = snapshot;
}
}
}
} }
impl RemoteWorktree { impl RemoteWorktree {