Skip to content

Revert "fix: prevent partial config write when model selection is cancelled d…"#2752

Merged
tusharmath merged 1 commit intomainfrom
revert-2728-fix/2714-atomic-model-provider-selection-on-login
Mar 31, 2026
Merged

Revert "fix: prevent partial config write when model selection is cancelled d…"#2752
tusharmath merged 1 commit intomainfrom
revert-2728-fix/2714-atomic-model-provider-selection-on-login

Conversation

@tusharmath
Copy link
Copy Markdown
Collaborator

Reverts #2728

@tusharmath tusharmath merged commit 4618487 into main Mar 31, 2026
11 checks passed
@tusharmath tusharmath deleted the revert-2728-fix/2714-atomic-model-provider-selection-on-login branch March 31, 2026 05:36
Comment on lines +2689 to +2697
async fn on_provider_selection(&mut self) -> Result<()> {
// Select a provider
// If no provider was selected (user canceled), return early
let any_provider = match self.select_provider().await? {
Some(provider) => provider,
None => return Ok(false),
None => return Ok(()),
};

self.activate_provider(any_provider).await?;
Ok(true)
self.activate_provider(any_provider).await
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Logic Error: Loss of cancellation signal

Changing return type from Result<bool> to Result<()> removes the ability to signal user cancellation. When select_provider() returns None (line 2694), this function returns Ok(()), making it indistinguishable from successful completion.

Impact: Callers like on_model_selection_wrapper() (line 2030) can no longer detect if the user cancelled provider selection, potentially leading to unexpected behavior.

Fix: Restore the boolean return type to preserve cancellation signaling:

async fn on_provider_selection(&mut self) -> Result<bool> {
    let any_provider = match self.select_provider().await? {
        Some(provider) => provider,
        None => return Ok(false),  // Signal cancellation
    };
    self.activate_provider(any_provider).await?;
    Ok(true)  // Signal success
}
Suggested change
async fn on_provider_selection(&mut self) -> Result<()> {
// Select a provider
// If no provider was selected (user canceled), return early
let any_provider = match self.select_provider().await? {
Some(provider) => provider,
None => return Ok(false),
None => return Ok(()),
};
self.activate_provider(any_provider).await?;
Ok(true)
self.activate_provider(any_provider).await
async fn on_provider_selection(&mut self) -> Result<bool> {
// Select a provider
// If no provider was selected (user canceled), return early
let any_provider = match self.select_provider().await? {
Some(provider) => provider,
None => return Ok(false),
};
self.activate_provider(any_provider).await?;
Ok(true)
}

Spotted by Graphite

Fix in Graphite


Is this helpful? React 👍 or 👎 to let us know.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant