diff --git a/ui/litellm-dashboard/src/components/model_add/add_credentials_tab.tsx b/ui/litellm-dashboard/src/components/model_add/add_credentials_tab.tsx index 175eaa7a5a..249e02b965 100644 --- a/ui/litellm-dashboard/src/components/model_add/add_credentials_tab.tsx +++ b/ui/litellm-dashboard/src/components/model_add/add_credentials_tab.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import React, { useEffect, useState } from "react"; import { Card, Form, @@ -41,8 +41,6 @@ const AddCredentialsModal: React.FC = ({ const [selectedProvider, setSelectedProvider] = useState(Providers.OpenAI); const [showAdvancedSettings, setShowAdvancedSettings] = useState(false); - console.log(`existingCredential in add credentials tab: ${JSON.stringify(existingCredential)}`); - const handleSubmit = (values: any) => { if (addOrEdit === "add") { onAddCredential(values); @@ -52,6 +50,20 @@ const AddCredentialsModal: React.FC = ({ form.resetFields(); }; + useEffect(() => { + if (existingCredential) { + form.setFieldsValue({ + credential_name: existingCredential.credential_name, + custom_llm_provider: existingCredential.credential_info.custom_llm_provider, + api_base: existingCredential.credential_values.api_base, + api_version: existingCredential.credential_values.api_version, + base_model: existingCredential.credential_values.base_model, + api_key: existingCredential.credential_values.api_key, + }); + setSelectedProvider(existingCredential.credential_info.custom_llm_provider as Providers); + } + }, [existingCredential]); + return ( = ({ tooltip="Helper to auto-populate provider specific fields" > { setSelectedProvider(value as Providers); + form.setFieldValue("custom_llm_provider", value); }} > {Object.entries(Providers).map(([providerEnum, providerDisplayName]) => ( @@ -108,8 +120,9 @@ const AddCredentialsModal: React.FC = ({ const target = e.target as HTMLImageElement; const parent = target.parentElement; if (parent) { - const fallbackDiv = document.createElement('div'); - fallbackDiv.className = 'w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs'; + const fallbackDiv = document.createElement("div"); + fallbackDiv.className = + "w-5 h-5 rounded-full bg-gray-200 flex items-center justify-center text-xs"; fallbackDiv.textContent = providerDisplayName.charAt(0); parent.replaceChild(fallbackDiv, target); } diff --git a/ui/litellm-dashboard/src/components/model_add/credentials.tsx b/ui/litellm-dashboard/src/components/model_add/credentials.tsx index c1d6c92c46..5640350240 100644 --- a/ui/litellm-dashboard/src/components/model_add/credentials.tsx +++ b/ui/litellm-dashboard/src/components/model_add/credentials.tsx @@ -38,12 +38,10 @@ const CredentialsPanel: React.FC = ({ accessToken, upload const [isUpdateModalOpen, setIsUpdateModalOpen] = useState(false); const [selectedCredential, setSelectedCredential] = useState(null); const [form] = Form.useForm(); - console.log(`selectedCredential in credentials panel: ${JSON.stringify(selectedCredential)}`); const restrictedFields = ['credential_name', 'custom_llm_provider']; const handleUpdateCredential = async (values: any) => { if (!accessToken) { - console.error('No access token found'); return; } @@ -61,14 +59,12 @@ const CredentialsPanel: React.FC = ({ accessToken, upload const response = await credentialUpdateCall(accessToken, values.credential_name, newCredential); message.success('Credential updated successfully'); - console.log(`response: ${JSON.stringify(response)}`); setIsUpdateModalOpen(false); fetchCredentials(accessToken); } const handleAddCredential = async (values: any) => { if (!accessToken) { - console.error('No access token found'); return; } @@ -87,7 +83,6 @@ const CredentialsPanel: React.FC = ({ accessToken, upload // Add to list and close modal const response = await credentialCreateCall(accessToken, newCredential); message.success('Credential added successfully'); - console.log(`response: ${JSON.stringify(response)}`); setIsAddModalOpen(false); fetchCredentials(accessToken); }; @@ -120,11 +115,9 @@ const CredentialsPanel: React.FC = ({ accessToken, upload const handleDeleteCredential = async (credentialName: string) => { if (!accessToken) { - console.error('No access token found'); return; } const response = await credentialDeleteCall(accessToken, credentialName); - console.log(`response: ${JSON.stringify(response)}`); message.success('Credential deleted successfully'); fetchCredentials(accessToken); }; @@ -175,7 +168,6 @@ const CredentialsPanel: React.FC = ({ accessToken, upload variant="light" size="sm" onClick={() => { - console.log(`credential being set: ${JSON.stringify(credential)}`); setSelectedCredential(credential); setIsUpdateModalOpen(true); }} diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 6fcd183fb4..6cfbd33090 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -42,7 +42,7 @@ export interface Organization { export interface CredentialItem { credential_name: string; - credential_values: object; + credential_values: any; credential_info: { custom_llm_provider?: string; description?: string;