diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx
index 12eea2dd8ecc..d7e77775683c 100644
--- a/ui/litellm-dashboard/src/components/networking.tsx
+++ b/ui/litellm-dashboard/src/components/networking.tsx
@@ -162,3 +162,32 @@ export const keySpendLogsCall = async (accessToken: String, token: String) => {
throw error;
}
};
+
+
+
+export const spendUsersCall = async (accessToken: String, userID: String) => {
+ try {
+ const url = proxyBaseUrl ? `${proxyBaseUrl}/spend/users` : `/spend/users`;
+ console.log("in spendUsersCall:", url);
+ const response = await fetch(`${url}/?user_id=${userID}`, {
+ 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();
+ console.log(data);
+ return data;
+ } catch (error) {
+ console.error("Failed to get spend for user", error);
+ throw error;
+ }
+};
+
diff --git a/ui/litellm-dashboard/src/components/user_dashboard.tsx b/ui/litellm-dashboard/src/components/user_dashboard.tsx
index b1a06939b166..6310de0e53cb 100644
--- a/ui/litellm-dashboard/src/components/user_dashboard.tsx
+++ b/ui/litellm-dashboard/src/components/user_dashboard.tsx
@@ -120,7 +120,7 @@ const UserDashboard = () => {
-
+
= ({ userID, userSpendData }) => {
+const ViewUserSpend: React.FC = ({ userID, userSpendData, userRole, accessToken }) => {
console.log("User SpendData:", userSpendData);
- const spend = userSpendData?.spend;
- const maxBudget = userSpendData?.max_budget || null;
+ const [spend, setSpend] = useState(userSpendData?.spend);
+ const [maxBudget, setMaxBudget] = useState(userSpendData?.max_budget || null);
+
+ useEffect(() => {
+ const fetchData = async () => {
+ if (userRole === "Admin") {
+ try {
+ const data = await spendUsersCall(accessToken, "litellm-proxy-budget");
+ console.log("Result from callSpendUsers:", data);
+ const total_budget = data[0]
+ setSpend(total_budget?.spend);
+ setMaxBudget(total_budget?.max_budget || null);
+ } catch (error) {
+ console.error("Failed to get spend for user", error);
+ }
+ }
+ };
+
+ fetchData();
+ }, [userRole, accessToken, userID]);
+
const displayMaxBudget = maxBudget !== null ? `$${maxBudget} limit` : "No limit";
- const displayText = `$${spend} / ${displayMaxBudget}`;
return (
<>