Fix selecting and deleting user toolchains (#39068)

I was trying to use the new user toolchains but every time I clicked on
one I had added, it would delete it from the picker. Ironically, it
wouldn't delete it permanently when I tried to by clicking on the trash
can icon. Every time I reopened the workspace all user toolchains were
there.

Release Notes:

- Fixed selecting and deleting user toolchains.
This commit is contained in:
George Waters 2025-09-29 12:08:47 -04:00 committed by GitHub
parent ebdc0572c6
commit 778ca84f85
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 3 deletions

View file

@ -1047,8 +1047,8 @@ impl PickerDelegate for ToolchainSelectorDelegate {
let toolchain = toolchain.clone();
let scope = scope.clone();
this.end_slot(IconButton::new(id, IconName::Trash))
.on_click(cx.listener(move |this, _, _, cx| {
this.end_slot(IconButton::new(id, IconName::Trash).on_click(cx.listener(
move |this, _, _, cx| {
this.delegate.project.update(cx, |this, cx| {
this.remove_toolchain(toolchain.clone(), scope.clone(), cx)
});
@ -1076,7 +1076,8 @@ impl PickerDelegate for ToolchainSelectorDelegate {
}
cx.stop_propagation();
cx.notify();
}))
},
)))
}),
)
}

View file

@ -997,6 +997,13 @@ impl WorkspaceDb {
}
}
}
conn.exec_bound(
sql!(
DELETE FROM user_toolchains WHERE workspace_id = ?1;
)
)?(workspace.id).context("Clearing old user toolchains")?;
for (scope, toolchains) in workspace.user_toolchains {
for toolchain in toolchains {
let query = sql!(INSERT OR REPLACE INTO user_toolchains(remote_connection_id, workspace_id, worktree_id, relative_worktree_path, language_name, name, path, raw_json) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8));