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)}
+
+
+
+
+
+ {member.user.email}
+
+
+
+
+ ))}
+
+
{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