diff --git a/dashboard/src/components/provider/ProviderChatCompletionPanel.vue b/dashboard/src/components/provider/ProviderChatCompletionPanel.vue index 71d053f421..54c48cc634 100644 --- a/dashboard/src/components/provider/ProviderChatCompletionPanel.vue +++ b/dashboard/src/components/provider/ProviderChatCompletionPanel.vue @@ -89,6 +89,7 @@ :supports-tool-call="supportsToolCall" :supports-reasoning="supportsReasoning" :format-context-limit="formatContextLimit" + :saving-providers="savingProviderToggles" :testing-providers="testingProviders" :tm="tm" @fetch-models="fetchAvailableModels" @@ -209,6 +210,7 @@ const { availableModels, loadingModels, savingSource, + savingProviderToggles, testingProviders, isSourceModified, configSchema, diff --git a/dashboard/src/components/provider/ProviderModelsPanel.vue b/dashboard/src/components/provider/ProviderModelsPanel.vue index 3e787f059d..86a673b3f7 100644 --- a/dashboard/src/components/provider/ProviderModelsPanel.vue +++ b/dashboard/src/components/provider/ProviderModelsPanel.vue @@ -84,12 +84,13 @@
@@ -97,7 +98,7 @@ icon="mdi-connection" size="small" variant="text" - :disabled="!entry.provider.enable" + :disabled="!entry.provider.enable || isProviderSaving(entry.provider.id)" :loading="isProviderTesting(entry.provider.id)" @click.stop="emit('test-provider', entry.provider)" > @@ -240,6 +241,10 @@ const props = defineProps({ type: Array, default: () => [] }, + savingProviders: { + type: Array, + default: () => [] + }, tm: { type: Function, required: true @@ -288,6 +293,7 @@ const capabilityIcons = (metadata) => { } const isProviderTesting = (providerId) => props.testingProviders.includes(providerId) +const isProviderSaving = (providerId) => props.savingProviders.includes(providerId)