Fix offline workspace deserialization with assistant2 (#21159)

Closes #21156 
/cc @maxdeviant 

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz 2024-11-25 12:21:32 +01:00 committed by GitHub
parent 5b0fa6e585
commit aa58cab766
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -241,25 +241,6 @@ pub fn initialize_workspace(
let prompt_builder = prompt_builder.clone();
cx.spawn(|workspace_handle, mut cx| async move {
let is_assistant2_enabled = if cfg!(test) {
false
} else {
let is_assistant2_feature_flag_enabled = assistant2_feature_flag.await;
release_channel == ReleaseChannel::Dev && is_assistant2_feature_flag_enabled
};
let (assistant_panel, assistant2_panel) = if is_assistant2_enabled {
let assistant2_panel =
assistant2::AssistantPanel::load(workspace_handle.clone(), cx.clone()).await?;
(None, Some(assistant2_panel))
} else {
let assistant_panel =
assistant::AssistantPanel::load(workspace_handle.clone(), prompt_builder, cx.clone()).await?;
(Some(assistant_panel), None)
};
let project_panel = ProjectPanel::load(workspace_handle.clone(), cx.clone());
let outline_panel = OutlinePanel::load(workspace_handle.clone(), cx.clone());
let terminal_panel = TerminalPanel::load(workspace_handle.clone(), cx.clone());
@ -288,6 +269,33 @@ pub fn initialize_workspace(
notification_panel,
)?;
workspace_handle.update(&mut cx, |workspace, cx| {
workspace.add_panel(project_panel, cx);
workspace.add_panel(outline_panel, cx);
workspace.add_panel(terminal_panel, cx);
workspace.add_panel(channels_panel, cx);
workspace.add_panel(chat_panel, cx);
workspace.add_panel(notification_panel, cx);
})?;
let is_assistant2_enabled =
if cfg!(test) || release_channel != ReleaseChannel::Dev {
false
} else {
assistant2_feature_flag.await
}
;
let (assistant_panel, assistant2_panel) = if is_assistant2_enabled {
let assistant2_panel =
assistant2::AssistantPanel::load(workspace_handle.clone(), cx.clone()).await?;
(None, Some(assistant2_panel))
} else {
let assistant_panel =
assistant::AssistantPanel::load(workspace_handle.clone(), prompt_builder, cx.clone()).await?;
(Some(assistant_panel), None)
};
workspace_handle.update(&mut cx, |workspace, cx| {
if let Some(assistant_panel) = assistant_panel {
workspace.add_panel(assistant_panel, cx);
@ -296,13 +304,6 @@ pub fn initialize_workspace(
if let Some(assistant2_panel) = assistant2_panel {
workspace.add_panel(assistant2_panel, cx);
}
workspace.add_panel(project_panel, cx);
workspace.add_panel(outline_panel, cx);
workspace.add_panel(terminal_panel, cx);
workspace.add_panel(channels_panel, cx);
workspace.add_panel(chat_panel, cx);
workspace.add_panel(notification_panel, cx);
})
})
.detach();