Don't allow dropping files on remote projects (cherry-pick #11218) (#11225)
gcp-cherry-pick-bot[bot]
and
Conrad Irwin
created 2 years ago
Cherry-picked Don't allow dropping files on remote projects (#11218)
Release Notes:
- Fixed a panic when a remote participant dropped a local file on your
project
Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Change summary
crates/project/src/project.rs | 12 +++++++-----
crates/workspace/src/pane.rs | 18 ++++++++++++++++++
2 files changed, 25 insertions(+), 5 deletions(-)
Detailed changes
@@ -8457,11 +8457,13 @@ impl Project {
OpenBuffer::Weak(_) => {}
},
hash_map::Entry::Vacant(e) => {
- assert!(
- is_remote,
- "received buffer update from {:?}",
- envelope.original_sender_id
- );
+ if !is_remote {
+ debug_panic!(
+ "received buffer update from {:?}",
+ envelope.original_sender_id
+ );
+ return Err(anyhow!("received buffer update for non-remote project"));
+ }
e.insert(OpenBuffer::Operations(ops));
}
}
@@ -1887,6 +1887,24 @@ impl Pane {
let mut to_pane = cx.view().clone();
let mut split_direction = self.drag_split_direction;
let paths = paths.paths().to_vec();
+ let is_remote = self
+ .workspace
+ .update(cx, |workspace, cx| {
+ if workspace.project().read(cx).is_remote() {
+ workspace.show_error(
+ &anyhow::anyhow!("Cannot drop files on a remote project"),
+ cx,
+ );
+ true
+ } else {
+ false
+ }
+ })
+ .unwrap_or(true);
+ if is_remote {
+ return;
+ }
+
self.workspace
.update(cx, |workspace, cx| {
let fs = Arc::clone(workspace.project().read(cx).fs());