diff --git a/crates/assistant/src/assistant_panel.rs b/crates/assistant/src/assistant_panel.rs index 2f83e6bc21636a98248bf06422ad24ccfbacbcce..8548788f0b591fc2aedd91d0d95119dc514bc8a8 100644 --- a/crates/assistant/src/assistant_panel.rs +++ b/crates/assistant/src/assistant_panel.rs @@ -543,19 +543,18 @@ impl AssistantPanel { cx.emit(AssistantPanelEvent::ContextEdited); true } - - pane::Event::RemoveItem { idx } => { - if self + pane::Event::RemovedItem { .. } => { + let has_configuration_view = self .pane .read(cx) - .item_for_index(*idx) - .map_or(false, |item| item.downcast::().is_some()) - { + .items_of_type::() + .next() + .is_some(); + + if !has_configuration_view { self.configuration_subscription = None; } - false - } - pane::Event::RemovedItem { .. } => { + cx.emit(AssistantPanelEvent::ContextEdited); true } @@ -4437,6 +4436,7 @@ impl ConfigurationView { provider: &Arc, cx: &mut ViewContext, ) -> Div { + let provider_id = provider.id().0.clone(); let provider_name = provider.name().0.clone(); let configuration_view = self.configuration_views.get(&provider.id()).cloned(); @@ -4458,12 +4458,15 @@ impl ConfigurationView { .when(provider.is_authenticated(cx), move |this| { this.child( h_flex().justify_end().child( - Button::new("new-context", "Open new context") - .icon_position(IconPosition::Start) - .icon(IconName::Plus) - .style(ButtonStyle::Filled) - .layer(ElevationIndex::ModalSurface) - .on_click(open_new_context), + Button::new( + SharedString::from(format!("new-context-{provider_id}")), + "Open new context", + ) + .icon_position(IconPosition::Start) + .icon(IconName::Plus) + .style(ButtonStyle::Filled) + .layer(ElevationIndex::ModalSurface) + .on_click(open_new_context), ), ) }),