diff --git a/src/app/members/page.tsx b/src/app/members/page.tsx index 1ff30d54..fb648915 100644 --- a/src/app/members/page.tsx +++ b/src/app/members/page.tsx @@ -2,13 +2,22 @@ import { HiOutlinePlusSmall } from "react-icons/hi2"; import { useModal } from "~/app/providers/modal"; +import { useWorkspace } from "~/app/providers/workspace"; import Modal from "~/app/components/modal"; import { ImportBoardsForm } from "~/app/boards/components/ImportBoardsForm"; import { NewBoardForm } from "~/app/boards/components/NewBoardForm"; +import { api } from "~/trpc/react"; + export default function MembersPage() { const { openModal, modalContentType } = useModal(); + const { workspace } = useWorkspace(); + + const { data } = api.workspace.byId.useQuery( + { publicId: workspace.publicId }, + { enabled: workspace?.publicId ? true : false }, + ); return (
@@ -33,6 +42,43 @@ export default function MembersPage() {
+
+ {data?.members.map((member) => ( +
+
+ + + {member.user.name + ?.split(" ") + .map((namePart) => namePart.charAt(0).toUpperCase()) + .join("")} + + +
+
+
+
+

+ {member.user.name} +

+ + {member.role.charAt(0).toUpperCase() + member.role.slice(1)} + +
+
+
+
+ ))} +
+ {modalContentType === "NEW_BOARD" && } {modalContentType === "IMPORT_BOARDS" && } diff --git a/src/server/api/routers/workspace.ts b/src/server/api/routers/workspace.ts index 67866004..05289730 100644 --- a/src/server/api/routers/workspace.ts +++ b/src/server/api/routers/workspace.ts @@ -1,6 +1,7 @@ +import { z } from "zod"; import { and, eq, isNull } from "drizzle-orm"; -import { workspaceMembers } from "~/server/db/schema"; +import { workspaces, workspaceMembers } from "~/server/db/schema"; import { createTRPCRouter, @@ -29,4 +30,35 @@ export const workspaceRouter = createTRPCRouter({ } }); }), + byId: publicProcedure + .input(z.object({ publicId: z.string().min(12) })) + .query(({ ctx, input }) => { + const userId = ctx.session?.user.id; + + if (!userId) return; + + return ctx.db.query.workspaces.findFirst({ + where: and(eq(workspaces.publicId, input.publicId), isNull(workspaces.deletedAt)), + columns: { + publicId: true, + }, + with: { + members: { + columns: { + publicId: true, + role: true, + }, + with: { + user: { + columns: { + id: true, + name: true, + email: true, + } + } + } + } + } + }); + }), }); \ No newline at end of file