diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index 4775ceefd..b9b41dd71 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -164,6 +164,9 @@ const CreateKeyPage = () => { /> ) : page == "settings" ? ( ) : ( { } }; + + +export const getCallbacksCall = async ( + accessToken: String, + userID: String, + userRole: String +) => { + /** + * Get all the models user has access to + */ + try { + let url = proxyBaseUrl ? `${proxyBaseUrl}/get/config/callbacks` : `/get/config/callbacks`; + + //message.info("Requesting model data"); + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + }); + + if (!response.ok) { + const errorData = await response.text(); + message.error(errorData); + throw new Error("Network response was not ok"); + } + + const data = await response.json(); + //message.info("Received model data"); + return data; + // Handle success - you might want to update some state or UI based on the created key + } catch (error) { + console.error("Failed to get callbacks:", error); + throw error; + } +}; + + diff --git a/ui/litellm-dashboard/src/components/settings.tsx b/ui/litellm-dashboard/src/components/settings.tsx index ac279be60..b60984fe9 100644 --- a/ui/litellm-dashboard/src/components/settings.tsx +++ b/ui/litellm-dashboard/src/components/settings.tsx @@ -1,39 +1,62 @@ import React, { useState, useEffect } from "react"; -import { Card, Title, Subtitle, Table, TableHead, TableRow, TableHeaderCell, TableCell, TableBody, Metric, Text, Grid, Button, } from "@tremor/react"; +import { Card, Title, Subtitle, Table, TableHead, TableRow, Badge, TableHeaderCell, TableCell, TableBody, Metric, Text, Grid, Button, Col, } from "@tremor/react"; +import { getCallbacksCall } from "./networking"; -const Settings = () => { - const [callbacks, setCallbacks] = useState([ - { name: "Callback 1", envVars: ["sk-243******", "SECRET_KEY_2", "SECRET_KEY_3"] }, - { name: "Callback 2", envVars: ["sk-456******", "SECRET_KEY_4", "SECRET_KEY_5"] }, - ]); +interface SettingsPageProps { + accessToken: string | null; + userRole: string | null; + userID: string | null; +} + +const Settings: React.FC = ({ + accessToken, + userRole, + userID, + }) => { + const [callbacks, setCallbacks] = useState(["None"]); + + useEffect(() => { + if (!accessToken || !userRole || !userID) { + return; + } + getCallbacksCall(accessToken, userID, userRole).then((data) => { + console.log("callbacks",data); + let callbacks_data = data.data; + let callback_names = callbacks_data.success_callback // ["callback1", "callback2"] + + setCallbacks(callback_names); + }); + }, [accessToken, userRole, userID]); return (
- Settings - Logging Callbacks - - - - - Callback Name - Environment Variables - - - - {callbacks.map((callback, index) => ( - - {callback.name} - - {callback.envVars.map((envVar, index) => ( - {envVar} - ))} - - - ))} - -
+ Settings + + + + Logging Callbacks + + +
+ {callbacks.length === 0 ? ( + None + ) : ( + callbacks.map((callback, index) => ( + + {callback} + + )) + )} +
+ + + +
+ + +