build(ui): show users the teams they're in

This commit is contained in:
Krrish Dholakia 2024-02-24 12:42:01 -08:00
parent 0b77420087
commit 785a4a2ac2
3 changed files with 57 additions and 7 deletions

View file

@ -0,0 +1,40 @@
import React, { useState, useEffect } from "react";
import { Typography } from "antd";
import { Select, SelectItem } from "@tremor/react";
interface DashboardTeamProps {
teams: string[] | null;
}
const DashboardTeam: React.FC<DashboardTeamProps> = ({ teams }) => {
const { Title, Paragraph } = Typography;
const [value, setValue] = useState("");
console.log(`received teams ${teams}`);
return (
<div className="mt-10">
<Title level={4}>Default Team</Title>
<Paragraph>
If you belong to multiple teams, this setting controls which
organization is used by default when creating new API Keys.
</Paragraph>
{teams && teams.length > 0 ? (
<Select
id="distance"
value={value}
onValueChange={setValue}
className="mt-2"
>
{teams.map((model) => (
<SelectItem value="model">{model}</SelectItem>
))}
</Select>
) : (
<Paragraph>
No team created. <b>Defaulting to personal account.</b>
</Paragraph>
)}
</div>
);
};
export default DashboardTeam;

View file

@ -30,13 +30,14 @@ const Sidebar: React.FC<SidebarProps> = ({ setPage, userRole }) => {
<Menu.Item key="4" onClick={() => setPage("usage")}> <Menu.Item key="4" onClick={() => setPage("usage")}>
Usage Usage
</Menu.Item> </Menu.Item>
{ {userRole == "Admin" ? (
userRole == "Admin" ? <Menu.Item key="5" onClick={() => setPage("users")}>
<Menu.Item key="5" onClick={() => setPage("users")}> Users
Users </Menu.Item>
</Menu.Item> ) : null}
: null <Menu.Item key="6" onClick={() => setPage("teams")}>
} Teams
</Menu.Item>
</Menu> </Menu>
</Sider> </Sider>
</Layout> </Layout>

View file

@ -5,6 +5,7 @@ import { Grid, Col, Card, Text } from "@tremor/react";
import CreateKey from "./create_key_button"; import CreateKey from "./create_key_button";
import ViewKeyTable from "./view_key_table"; import ViewKeyTable from "./view_key_table";
import ViewUserSpend from "./view_user_spend"; import ViewUserSpend from "./view_user_spend";
import DashboardTeam from "./dashboard_default_team";
import EnterProxyUrl from "./enter_proxy_url"; import EnterProxyUrl from "./enter_proxy_url";
import { message } from "antd"; import { message } from "antd";
import Navbar from "./navbar"; import Navbar from "./navbar";
@ -36,6 +37,7 @@ const UserDashboard: React.FC<UserDashboardProps> = ({
setUserEmail, setUserEmail,
}) => { }) => {
const [data, setData] = useState<null | any[]>(null); // Keep the initialization of state here const [data, setData] = useState<null | any[]>(null); // Keep the initialization of state here
const [teams, setTeams] = useState<null | string[]>(null); // Keep the initialization of state here
const [userSpendData, setUserSpendData] = useState<UserSpendData | null>( const [userSpendData, setUserSpendData] = useState<UserSpendData | null>(
null null
); );
@ -111,8 +113,14 @@ const UserDashboard: React.FC<UserDashboardProps> = ({
const fetchData = async () => { const fetchData = async () => {
try { try {
const response = await userInfoCall(accessToken, userID, userRole); const response = await userInfoCall(accessToken, userID, userRole);
console.log(
`received teams in user dashboard: ${Object.keys(
response
)}; team type: ${Array.isArray(response.teams)}`
);
setUserSpendData(response["user_info"]); setUserSpendData(response["user_info"]);
setData(response["keys"]); // Assuming this is the correct path to your data setData(response["keys"]); // Assuming this is the correct path to your data
setTeams(response["teams"]);
sessionStorage.setItem( sessionStorage.setItem(
"userData" + userID, "userData" + userID,
JSON.stringify(response["keys"]) JSON.stringify(response["keys"])
@ -191,6 +199,7 @@ const UserDashboard: React.FC<UserDashboardProps> = ({
data={data} data={data}
setData={setData} setData={setData}
/> />
<DashboardTeam teams={teams} />
</Col> </Col>
</Grid> </Grid>
</div> </div>