diff --git a/api/rpk-api/hub/firm/routes.py b/api/rpk-api/hub/firm/routes.py index 1708d15..14641d2 100644 --- a/api/rpk-api/hub/firm/routes.py +++ b/api/rpk-api/hub/firm/routes.py @@ -7,6 +7,10 @@ from hub.firm import Firm, FirmRead, FirmCreate, FirmUpdate router = APIRouter() +@router.get("/", response_model=list[FirmRead], response_description="{} records retrieved".format(Firm.__name__)) +async def read_list(user=Depends(get_current_user)) -> list[FirmRead]: + return await Firm.find({ "owner": user.id}).to_list() + @router.post("/", response_description="{} added to the database".format(Firm.__name__)) async def create(item: FirmCreate, user=Depends(get_current_user)) -> FirmRead: firm_dict = {"name": item.name, "instance": item.instance} diff --git a/gui/rpk-gui/src/interfaces/index.tsx b/gui/rpk-gui/src/interfaces/index.tsx index 3c20e64..d6e795a 100644 --- a/gui/rpk-gui/src/interfaces/index.tsx +++ b/gui/rpk-gui/src/interfaces/index.tsx @@ -10,4 +10,6 @@ type User = { firms: [IFirm], }; +export type IAuthUser = User; + export type IUser = User | null; diff --git a/gui/rpk-gui/src/pages/hub/index.tsx b/gui/rpk-gui/src/pages/hub/index.tsx index 14d919d..08d3fef 100644 --- a/gui/rpk-gui/src/pages/hub/index.tsx +++ b/gui/rpk-gui/src/pages/hub/index.tsx @@ -1,37 +1,36 @@ import { Button } from "@mui/material"; import { Link } from "react-router"; -import { useGetIdentity } from "@refinedev/core"; +import { useGetIdentity, useList } from "@refinedev/core"; +import { IAuthUser, IFirm } from "../../interfaces"; -type Firm = { - name: string, - instance: string, -} -type User = { - firms: [Firm], -} export const Hub = () => { - const user = useGetIdentity(); + const { data: user } = useGetIdentity(); + const { data: list } = useList({resource: "firms/", pagination: { mode: "off" }}, ) + if (user === undefined || list === undefined) { + return

Loading

+ } + console.log("list data: ", list); + const ownedFirms = list.data; + if (user === undefined || ownedFirms === undefined) { + return

Loading

+ } + console.log("owned firms: ", ownedFirms); - console.log(user); - let ownFirms = []; - let workFirms = []; - //firms.forEach((f, index) => { - // workFirms.push(
  • {f.instance}/{f.name}
  • ) - //}) - //{firms.map((f: Firm, index) => ( - //
  • {f.instance} / {f.name}
  • - // ))} return (

    HUB

    List of managed firms

      -
    • + {ownedFirms.map((f: IFirm, index) => ( +
    • {f.instance} / {f.name}
    • + ))}

    List of firm you're working at

      - + {user.firms.map((f: IFirm, index) => ( +
    • {f.instance} / {f.name}
    • + ))}
    diff --git a/gui/rpk-gui/src/providers/data-provider.tsx b/gui/rpk-gui/src/providers/data-provider.tsx index f6fef36..604bc80 100644 --- a/gui/rpk-gui/src/providers/data-provider.tsx +++ b/gui/rpk-gui/src/providers/data-provider.tsx @@ -31,7 +31,8 @@ export const dataProvider: DataProvider = { getList: async ({ resource, pagination, filters, sorters, meta }) => { const params = new URLSearchParams(); - if (pagination) { + const serverPagination = pagination && pagination.mode =="server"; + if (serverPagination) { params.append("page", String(pagination.current)); params.append("size", String(pagination.pageSize)); } @@ -54,9 +55,15 @@ export const dataProvider: DataProvider = { const data = await response.json(); + if (serverPagination) { + return { + data: data.items, + total: data.total, + }; + } return { - data: data.items, - total: data.total, // We'll cover this in the next steps. + data: data, + total: data.length, }; }, create: async ({ resource, variables }) => {