import React, { useState, useEffect } from "react"; import { Select, SelectItem, Text, Title } from "@tremor/react"; import { ProxySettings, UserInfo } from "./user_dashboard"; import { getProxyUISettings } from "./networking" interface DashboardTeamProps { teams: Object[] | null; setSelectedTeam: React.Dispatch<React.SetStateAction<any | null>>; userRole: string | null; proxySettings: ProxySettings | null; setProxySettings: React.Dispatch<React.SetStateAction<ProxySettings | null>>; userInfo: UserInfo | null; accessToken: string | null; setKeys: React.Dispatch<React.SetStateAction<any | null>>; } type TeamInterface = { models: any[]; team_id: null; team_alias: String; max_budget: number | null; } const DashboardTeam: React.FC<DashboardTeamProps> = ({ teams, setSelectedTeam, userRole, proxySettings, setProxySettings, userInfo, accessToken, setKeys }) => { console.log(`userInfo: ${JSON.stringify(userInfo)}`) const defaultTeam: TeamInterface = { models: userInfo?.models || [], team_id: null, team_alias: "Default Team", max_budget: userInfo?.max_budget || null, } const getProxySettings = async () => { if (proxySettings === null && accessToken) { const proxy_settings: ProxySettings = await getProxyUISettings(accessToken); setProxySettings(proxy_settings); } }; useEffect(() => { getProxySettings(); }, [proxySettings]); const [value, setValue] = useState(defaultTeam); let updatedTeams; console.log(`userRole: ${userRole}`) console.log(`proxySettings: ${JSON.stringify(proxySettings)}`) if (userRole === "App User") { // Non-Admin SSO users should only see their own team - they should not see "Default Team" updatedTeams = teams; } else if (proxySettings && proxySettings.DEFAULT_TEAM_DISABLED === true) { updatedTeams = teams ? [...teams] : [defaultTeam]; } else { updatedTeams = teams ? [...teams, defaultTeam] : [defaultTeam]; } return ( <div className="mt-5 mb-5"> <Title>Select Team</Title> <Text> If you belong to multiple teams, this setting controls which team is used by default when creating new API Keys. </Text> <Text className="mt-3 mb-3"> <b>Default Team:</b> If no team_id is set for a key, it will be grouped under here. </Text> {updatedTeams && updatedTeams.length > 0 ? ( <Select defaultValue="0"> {updatedTeams.map((team: any, index) => ( <SelectItem key={index} value={String(index)} onClick={() => { setSelectedTeam(team); // setKeys(team["keys"]); }} > {team["team_alias"]} </SelectItem> ))} </Select> ) : ( <Text> No team created. <b>Defaulting to personal account.</b> </Text> )} </div> ); }; export default DashboardTeam;