diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx index 121f1cbb6..99da05002 100644 --- a/ui/litellm-dashboard/src/components/leftnav.tsx +++ b/ui/litellm-dashboard/src/components/leftnav.tsx @@ -46,8 +46,8 @@ const Sidebar: React.FC = ({ ); } return ( - - + + = ({ ) : null} setPage("settings")}> - Settings + Integrations {userRole == "Admin" ? ( diff --git a/ui/litellm-dashboard/src/components/settings.tsx b/ui/litellm-dashboard/src/components/settings.tsx index 31e17b6f1..fc9f48d35 100644 --- a/ui/litellm-dashboard/src/components/settings.tsx +++ b/ui/litellm-dashboard/src/components/settings.tsx @@ -34,6 +34,7 @@ const Settings: React.FC = ({ const [callbacks, setCallbacks] = useState([]); const [isModalVisible, setIsModalVisible] = useState(false); const [form] = Form.useForm(); + const [selectedCallback, setSelectedCallback] = useState(null); useEffect(() => { if (!accessToken || !userRole || !userID) { @@ -55,6 +56,7 @@ const Settings: React.FC = ({ const handleCancel = () => { setIsModalVisible(false); form.resetFields(); + setSelectedCallback(null); }; const handleOk = () => { @@ -64,8 +66,8 @@ const Settings: React.FC = ({ // Handle form submission form.validateFields().then((values) => { // Call API to add the callback + console.log("Form values:", values); let payload; - console.log("Callback values:", values); if (values.callback === 'langfuse') { payload = { environment_variables: { @@ -80,8 +82,19 @@ const Settings: React.FC = ({ // add langfuse to callbacks setCallbacks(callbacks ? [...callbacks, values.callback] : [values.callback]); + } else if (values.callback === 'slack') { + payload = { + litellm_settings: { + success_callback: [values.callback] + }, + environment_variables: { + SLACK_WEBHOOK_URL: values.slackWebhookUrl + } + }; + setCallbacksCall(accessToken, payload); - + // add slack to callbacks + setCallbacks(callbacks ? [...callbacks, values.callback] : [values.callback]); } else { payload = { error: 'Invalid callback value' @@ -89,9 +102,14 @@ const Settings: React.FC = ({ } setIsModalVisible(false); form.resetFields(); + setSelectedCallback(null); }); }; + const handleCallbackChange = (value: string) => { + setSelectedCallback(value); + }; + return (
@@ -138,33 +156,48 @@ const Settings: React.FC = ({ name="callback" rules={[{ required: true, message: "Please select a callback" }]} > - langfuse - slack + slack alerting - - - + {selectedCallback === 'langfuse' && ( + <> + + + - - - + + + + + )} + + {selectedCallback === 'slack' && ( + + + + )} -
Save