assistant panel: Fix entering credentials not updating view (#15527)

Co-authored-by: Bennet <bennet@zed.dev>

Release Notes:

- N/A

Co-authored-by: Bennet <bennet@zed.dev>
This commit is contained in:
Thorsten Ball 2024-07-31 12:51:41 +02:00 committed by GitHub
parent c78ea0df7e
commit b571bc800d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 92 additions and 52 deletions

View file

@ -44,7 +44,7 @@ pub struct AnthropicLanguageModelProvider {
state: gpui::Model<State>,
}
struct State {
pub struct State {
api_key: Option<String>,
_subscription: Subscription,
}
@ -61,11 +61,12 @@ impl AnthropicLanguageModelProvider {
Self { http_client, state }
}
}
impl LanguageModelProviderState for AnthropicLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}

View file

@ -50,7 +50,7 @@ pub struct CloudLanguageModelProvider {
_maintain_client_status: Task<()>,
}
struct State {
pub struct State {
client: Arc<Client>,
status: client::Status,
_subscription: Subscription,
@ -99,10 +99,10 @@ impl CloudLanguageModelProvider {
}
impl LanguageModelProviderState for CloudLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}

View file

@ -11,8 +11,8 @@ use futures::future::BoxFuture;
use futures::stream::BoxStream;
use futures::{FutureExt, StreamExt};
use gpui::{
percentage, svg, Animation, AnimationExt, AnyView, AppContext, AsyncAppContext, Model,
ModelContext, Render, Subscription, Task, Transformation,
percentage, svg, Animation, AnimationExt, AnyView, AppContext, AsyncAppContext, Model, Render,
Subscription, Task, Transformation,
};
use settings::{Settings, SettingsStore};
use std::time::Duration;
@ -67,10 +67,10 @@ impl CopilotChatLanguageModelProvider {
}
impl LanguageModelProviderState for CopilotChatLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut ModelContext<T>) -> Option<Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}

View file

@ -36,7 +36,9 @@ pub struct FakeLanguageModelProvider {
}
impl LanguageModelProviderState for FakeLanguageModelProvider {
fn subscribe<T: 'static>(&self, _: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
type ObservableEntity = ();
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
None
}
}

View file

@ -44,7 +44,7 @@ pub struct GoogleLanguageModelProvider {
state: gpui::Model<State>,
}
struct State {
pub struct State {
api_key: Option<String>,
_subscription: Subscription,
}
@ -63,10 +63,10 @@ impl GoogleLanguageModelProvider {
}
impl LanguageModelProviderState for GoogleLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}

View file

@ -32,7 +32,7 @@ pub struct OllamaLanguageModelProvider {
state: gpui::Model<State>,
}
struct State {
pub struct State {
http_client: Arc<dyn HttpClient>,
available_models: Vec<ollama::Model>,
_subscription: Subscription,
@ -87,10 +87,10 @@ impl OllamaLanguageModelProvider {
}
impl LanguageModelProviderState for OllamaLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}

View file

@ -45,7 +45,7 @@ pub struct OpenAiLanguageModelProvider {
state: gpui::Model<State>,
}
struct State {
pub struct State {
api_key: Option<String>,
_subscription: Subscription,
}
@ -64,10 +64,10 @@ impl OpenAiLanguageModelProvider {
}
impl LanguageModelProviderState for OpenAiLanguageModelProvider {
fn subscribe<T: 'static>(&self, cx: &mut gpui::ModelContext<T>) -> Option<gpui::Subscription> {
Some(cx.observe(&self.state, |_, _, cx| {
cx.notify();
}))
type ObservableEntity = State;
fn observable_entity(&self) -> Option<gpui::Model<Self::ObservableEntity>> {
Some(self.state.clone())
}
}