feat: Implement LLM provider deletion and refactor ConfigManager to preserve unknown payload sections.
This commit is contained in:
@@ -31,6 +31,7 @@
|
||||
let testStatus = $state({ type: "", message: "" });
|
||||
let isTesting = $state(false);
|
||||
let togglingProviderIds = $state(new Set());
|
||||
let deletingProviderIds = $state(new Set());
|
||||
|
||||
function isMultimodalModel(modelName) {
|
||||
const token = (modelName || "").toLowerCase();
|
||||
@@ -155,6 +156,38 @@
|
||||
onSave();
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDelete(provider) {
|
||||
if (deletingProviderIds.has(provider.id)) return;
|
||||
if (
|
||||
!confirm(
|
||||
$t.llm.delete_confirm.replace("{name}", provider.name || provider.id),
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
deletingProviderIds.add(provider.id);
|
||||
deletingProviderIds = new Set(deletingProviderIds);
|
||||
|
||||
try {
|
||||
await requestApi(`/llm/providers/${provider.id}`, "DELETE");
|
||||
providers = providers.filter(({ id }) => id !== provider.id);
|
||||
addToast($t.llm.delete_success.replace("{name}", provider.name), "success");
|
||||
onSave();
|
||||
} catch (err) {
|
||||
addToast(
|
||||
$t.llm.delete_failed.replace(
|
||||
"{error}",
|
||||
err?.message || $t.common.error,
|
||||
),
|
||||
"error",
|
||||
);
|
||||
} finally {
|
||||
deletingProviderIds.delete(provider.id);
|
||||
deletingProviderIds = new Set(deletingProviderIds);
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="p-4">
|
||||
@@ -345,11 +378,23 @@
|
||||
>
|
||||
{$t.common.edit}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="text-sm text-red-600 hover:underline"
|
||||
onclick={() => handleDelete(provider)}
|
||||
disabled={deletingProviderIds.has(provider.id)}
|
||||
>
|
||||
{#if deletingProviderIds.has(provider.id)}
|
||||
...
|
||||
{:else}
|
||||
{$t.common.delete}
|
||||
{/if}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class={`text-sm ${provider.is_active ? "text-orange-600" : "text-green-600"} hover:underline`}
|
||||
onclick={() => toggleActive(provider)}
|
||||
disabled={togglingProviderIds.has(provider.id)}
|
||||
disabled={togglingProviderIds.has(provider.id) || deletingProviderIds.has(provider.id)}
|
||||
>
|
||||
{#if togglingProviderIds.has(provider.id)}
|
||||
...
|
||||
|
||||
Reference in New Issue
Block a user