|
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") { |
|
|
|
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; |
|
|