diff --git a/ui/litellm-dashboard/src/components/model_info_view.tsx b/ui/litellm-dashboard/src/components/model_info_view.tsx index 2563c90f59..64f96ac915 100644 --- a/ui/litellm-dashboard/src/components/model_info_view.tsx +++ b/ui/litellm-dashboard/src/components/model_info_view.tsx @@ -966,6 +966,7 @@ export default function ModelInfoView({ setIsDirty(false); setIsEditing(false); }} + disabled={isSaving} > Cancel diff --git a/ui/litellm-dashboard/src/components/organization/organization_view.tsx b/ui/litellm-dashboard/src/components/organization/organization_view.tsx index b284519ce1..76f5e81b2f 100644 --- a/ui/litellm-dashboard/src/components/organization/organization_view.tsx +++ b/ui/litellm-dashboard/src/components/organization/organization_view.tsx @@ -69,6 +69,7 @@ const OrganizationInfoView: React.FC = ({ const [isEditMemberModalVisible, setIsEditMemberModalVisible] = useState(false); const [selectedEditMember, setSelectedEditMember] = useState(null); const [copiedStates, setCopiedStates] = useState>({}); + const [isOrgSaving, setIsOrgSaving] = useState(false); const canEditOrg = is_org_admin || is_proxy_admin; const fetchOrgInfo = async () => { @@ -151,6 +152,7 @@ const OrganizationInfoView: React.FC = ({ const handleOrgUpdate = async (values: any) => { try { if (!accessToken) return; + setIsOrgSaving(true); const updateData: any = { organization_id: organizationId, @@ -194,6 +196,8 @@ const OrganizationInfoView: React.FC = ({ } catch (error) { NotificationsManager.fromBackend("Failed to update organization settings"); console.error("Error updating organization:", error); + } finally { + setIsOrgSaving(false); } }; @@ -492,10 +496,12 @@ const OrganizationInfoView: React.FC = ({
- setIsEditing(false)}> + setIsEditing(false)} disabled={isOrgSaving}> Cancel - Save Changes + + Save Changes +
diff --git a/ui/litellm-dashboard/src/components/team/team_info.tsx b/ui/litellm-dashboard/src/components/team/team_info.tsx index 1c6ba629ef..a53d35e57b 100644 --- a/ui/litellm-dashboard/src/components/team/team_info.tsx +++ b/ui/litellm-dashboard/src/components/team/team_info.tsx @@ -142,6 +142,7 @@ const TeamInfoView: React.FC = ({ const [memberToDelete, setMemberToDelete] = useState(null); const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [isDeleting, setIsDeleting] = useState(false); + const [isTeamSaving, setIsTeamSaving] = useState(false); console.log("userModels in team info", userModels); @@ -310,6 +311,7 @@ const TeamInfoView: React.FC = ({ const handleTeamUpdate = async (values: any) => { try { if (!accessToken) return; + setIsTeamSaving(true); let parsedMetadata = {}; try { @@ -387,6 +389,8 @@ const TeamInfoView: React.FC = ({ fetchTeamInfo(); } catch (error) { console.error("Error updating team:", error); + } finally { + setIsTeamSaving(false); } }; @@ -770,10 +774,12 @@ const TeamInfoView: React.FC = ({
- setIsEditing(false)}> + setIsEditing(false)} disabled={isTeamSaving}> Cancel - Save Changes + + Save Changes +
diff --git a/ui/litellm-dashboard/src/components/templates/key_edit_view.tsx b/ui/litellm-dashboard/src/components/templates/key_edit_view.tsx index 8c10148640..d7376fde14 100644 --- a/ui/litellm-dashboard/src/components/templates/key_edit_view.tsx +++ b/ui/litellm-dashboard/src/components/templates/key_edit_view.tsx @@ -95,6 +95,7 @@ export function KeyEditView({ ); const [autoRotationEnabled, setAutoRotationEnabled] = useState(keyData.auto_rotate || false); const [rotationInterval, setRotationInterval] = useState(keyData.rotation_interval || ""); + const [isKeySaving, setIsKeySaving] = useState(false); const fetchMcpAccessGroups = async () => { if (!accessToken) return; @@ -236,8 +237,17 @@ export function KeyEditView({ console.log("premiumUser:", premiumUser); + const handleSubmit = async (values: any) => { + try { + setIsKeySaving(true); + await onSubmit(values); + } finally { + setIsKeySaving(false); + } + }; + return ( -
+ @@ -403,11 +413,7 @@ export function KeyEditView({ name="disable_global_guardrails" valuePropName="checked" > - + @@ -573,10 +579,12 @@ export function KeyEditView({
- + Cancel - Save Changes + + Save Changes +