mirror of
https://github.com/zed-industries/zed.git
synced 2024-11-07 20:39:04 +03:00
Don't panic when collaborating with older Zed versions (#7162)
Older Zed versions may send a buffer id of 0, which is no-longer supported. (as of #6993) This doesn't fix that, but it does ensure that we don't panic in the workspace by maintaining the invariant that from_proto_state returns Some(Task) if the variant matches. It also converts the panic to an error should something similar happen again in the future. Release Notes: - N/A
This commit is contained in:
parent
59f77d316f
commit
689d43047d
@ -73,18 +73,16 @@ impl FollowableItem for Editor {
|
||||
.iter()
|
||||
.map(|excerpt| excerpt.buffer_id)
|
||||
.collect::<HashSet<_>>();
|
||||
let buffers = project
|
||||
.update(cx, |project, cx| {
|
||||
buffer_ids
|
||||
.iter()
|
||||
.map(|id| BufferId::new(*id).map(|id| project.open_buffer_by_id(id, cx)))
|
||||
.collect::<Result<Vec<_>>>()
|
||||
})
|
||||
.ok()?;
|
||||
let buffers = project.update(cx, |project, cx| {
|
||||
buffer_ids
|
||||
.iter()
|
||||
.map(|id| BufferId::new(*id).map(|id| project.open_buffer_by_id(id, cx)))
|
||||
.collect::<Result<Vec<_>>>()
|
||||
});
|
||||
|
||||
let pane = pane.downgrade();
|
||||
Some(cx.spawn(|mut cx| async move {
|
||||
let mut buffers = futures::future::try_join_all(buffers)
|
||||
let mut buffers = futures::future::try_join_all(buffers?)
|
||||
.await
|
||||
.debug_assert_ok("leaders don't share views for unshared buffers")?;
|
||||
let editor = pane.update(&mut cx, |pane, cx| {
|
||||
|
@ -2784,8 +2784,10 @@ impl Workspace {
|
||||
item_tasks.push(task);
|
||||
leader_view_ids.push(id);
|
||||
break;
|
||||
} else {
|
||||
assert!(variant.is_some());
|
||||
} else if variant.is_none() {
|
||||
Err(anyhow!(
|
||||
"failed to construct view from leader (maybe from a different version of zed?)"
|
||||
))?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user