Remove dev servers (#19638)
TODO: - [ ] Check that workspace migration worked - [ ] Add server migrations and make sure SeaORM files are in sync (maybe?) Release Notes: - N/A --------- Co-authored-by: Conrad <conrad@zed.dev> Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
This commit is contained in:
parent
b5f816dde5
commit
02718284ef
55 changed files with 391 additions and 5024 deletions
|
@ -16,7 +16,7 @@ use anyhow::{anyhow, Context as _, Result};
|
|||
use call::{call_settings::CallSettings, ActiveCall};
|
||||
use client::{
|
||||
proto::{self, ErrorCode, PanelId, PeerId},
|
||||
ChannelId, Client, DevServerProjectId, ErrorExt, ProjectId, Status, TypedEnvelope, UserStore,
|
||||
ChannelId, Client, ErrorExt, ProjectId, Status, TypedEnvelope, UserStore,
|
||||
};
|
||||
use collections::{hash_map, HashMap, HashSet};
|
||||
use derive_more::{Deref, DerefMut};
|
||||
|
@ -52,7 +52,7 @@ use notifications::{
|
|||
pub use pane::*;
|
||||
pub use pane_group::*;
|
||||
pub use persistence::{
|
||||
model::{ItemId, LocalPaths, SerializedDevServerProject, SerializedWorkspaceLocation},
|
||||
model::{ItemId, LocalPaths, SerializedWorkspaceLocation},
|
||||
WorkspaceDb, DB as WORKSPACE_DB,
|
||||
};
|
||||
use persistence::{
|
||||
|
@ -97,7 +97,7 @@ use ui::{
|
|||
IntoElement, ParentElement as _, Pixels, SharedString, Styled as _, ViewContext,
|
||||
VisualContext as _, WindowContext,
|
||||
};
|
||||
use util::{maybe, ResultExt, TryFutureExt};
|
||||
use util::{ResultExt, TryFutureExt};
|
||||
use uuid::Uuid;
|
||||
pub use workspace_settings::{
|
||||
AutosaveSetting, RestoreOnStartupBehavior, TabBarSettings, WorkspaceSettings,
|
||||
|
@ -2057,7 +2057,7 @@ impl Workspace {
|
|||
|
||||
fn add_folder_to_project(&mut self, _: &AddFolderToProject, cx: &mut ViewContext<Self>) {
|
||||
let project = self.project.read(cx);
|
||||
if project.is_via_collab() && project.dev_server_project_id().is_none() {
|
||||
if project.is_via_collab() {
|
||||
self.show_error(
|
||||
&anyhow!("You cannot add folders to someone else's project"),
|
||||
cx,
|
||||
|
@ -4133,20 +4133,6 @@ impl Workspace {
|
|||
} else {
|
||||
None
|
||||
}
|
||||
} else if let Some(dev_server_project_id) = self.project().read(cx).dev_server_project_id()
|
||||
{
|
||||
let store = dev_server_projects::Store::global(cx).read(cx);
|
||||
maybe!({
|
||||
let project = store.dev_server_project(dev_server_project_id)?;
|
||||
let dev_server = store.dev_server(project.dev_server_id)?;
|
||||
|
||||
let dev_server_project = SerializedDevServerProject {
|
||||
id: dev_server_project_id,
|
||||
dev_server_name: dev_server.name.to_string(),
|
||||
paths: project.paths.to_vec(),
|
||||
};
|
||||
Some(SerializedWorkspaceLocation::DevServer(dev_server_project))
|
||||
})
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
@ -5180,13 +5166,12 @@ async fn join_channel_internal(
|
|||
if let Some(workspace) = requesting_window {
|
||||
let project = workspace.update(cx, |workspace, cx| {
|
||||
let project = workspace.project.read(cx);
|
||||
let is_dev_server = project.dev_server_project_id().is_some();
|
||||
|
||||
if !is_dev_server && !CallSettings::get_global(cx).share_on_join {
|
||||
if !CallSettings::get_global(cx).share_on_join {
|
||||
return None;
|
||||
}
|
||||
|
||||
if (project.is_local() || project.is_via_ssh() || is_dev_server)
|
||||
if (project.is_local() || project.is_via_ssh())
|
||||
&& project.visible_worktrees(cx).any(|tree| {
|
||||
tree.read(cx)
|
||||
.root_entry()
|
||||
|
@ -5685,84 +5670,6 @@ fn serialize_ssh_project(
|
|||
})
|
||||
}
|
||||
|
||||
pub fn join_dev_server_project(
|
||||
dev_server_project_id: DevServerProjectId,
|
||||
project_id: ProjectId,
|
||||
app_state: Arc<AppState>,
|
||||
window_to_replace: Option<WindowHandle<Workspace>>,
|
||||
cx: &mut AppContext,
|
||||
) -> Task<Result<WindowHandle<Workspace>>> {
|
||||
let windows = cx.windows();
|
||||
cx.spawn(|mut cx| async move {
|
||||
let existing_workspace = windows.into_iter().find_map(|window| {
|
||||
window.downcast::<Workspace>().and_then(|window| {
|
||||
window
|
||||
.update(&mut cx, |workspace, cx| {
|
||||
if workspace.project().read(cx).remote_id() == Some(project_id.0) {
|
||||
Some(window)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
})
|
||||
.unwrap_or(None)
|
||||
})
|
||||
});
|
||||
|
||||
let serialized_workspace: Option<SerializedWorkspace> =
|
||||
persistence::DB.workspace_for_dev_server_project(dev_server_project_id);
|
||||
|
||||
let workspace = if let Some(existing_workspace) = existing_workspace {
|
||||
existing_workspace
|
||||
} else {
|
||||
let project = Project::remote(
|
||||
project_id.0,
|
||||
app_state.client.clone(),
|
||||
app_state.user_store.clone(),
|
||||
app_state.languages.clone(),
|
||||
app_state.fs.clone(),
|
||||
cx.clone(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
let workspace_id = if let Some(ref serialized_workspace) = serialized_workspace {
|
||||
serialized_workspace.id
|
||||
} else {
|
||||
persistence::DB.next_id().await?
|
||||
};
|
||||
|
||||
if let Some(window_to_replace) = window_to_replace {
|
||||
cx.update_window(window_to_replace.into(), |_, cx| {
|
||||
cx.replace_root_view(|cx| {
|
||||
Workspace::new(Some(workspace_id), project, app_state.clone(), cx)
|
||||
});
|
||||
})?;
|
||||
window_to_replace
|
||||
} else {
|
||||
let window_bounds_override = window_bounds_env_override();
|
||||
cx.update(|cx| {
|
||||
let mut options = (app_state.build_window_options)(None, cx);
|
||||
options.window_bounds = window_bounds_override.map(WindowBounds::Windowed);
|
||||
cx.open_window(options, |cx| {
|
||||
cx.new_view(|cx| {
|
||||
Workspace::new(Some(workspace_id), project, app_state.clone(), cx)
|
||||
})
|
||||
})
|
||||
})??
|
||||
}
|
||||
};
|
||||
|
||||
workspace
|
||||
.update(&mut cx, |_, cx| {
|
||||
cx.activate(true);
|
||||
cx.activate_window();
|
||||
open_items(serialized_workspace, vec![], app_state, cx)
|
||||
})?
|
||||
.await?;
|
||||
|
||||
anyhow::Ok(workspace)
|
||||
})
|
||||
}
|
||||
|
||||
pub fn join_in_room_project(
|
||||
project_id: u64,
|
||||
follow_user_id: u64,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue