diff --git a/apps/web/app/(use-page-wrapper)/settings/organizations/(org-user-only)/members/page.tsx b/apps/web/app/(use-page-wrapper)/settings/organizations/(org-user-only)/members/page.tsx index d97770a1f9..e2abfac2f3 100644 --- a/apps/web/app/(use-page-wrapper)/settings/organizations/(org-user-only)/members/page.tsx +++ b/apps/web/app/(use-page-wrapper)/settings/organizations/(org-user-only)/members/page.tsx @@ -3,6 +3,7 @@ import { _generateMetadata } from "app/_utils"; import { unstable_cache } from "next/cache"; import { AttributeRepository } from "@calcom/lib/server/repository/attribute"; +import { MembershipRole } from "@calcom/prisma/enums"; import { viewerOrganizationsRouter } from "@calcom/trpc/server/routers/viewer/organizations/_router"; import { MembersView } from "~/members/members-view"; @@ -26,12 +27,20 @@ const getCachedAttributes = unstable_cache( const Page = async () => { const orgCaller = await createRouterCaller(viewerOrganizationsRouter); - const [org, teams, facetedTeamValues] = await Promise.all([ - orgCaller.listCurrent(), - orgCaller.getTeams(), - orgCaller.getFacetedValues(), - ]); + const [org, teams] = await Promise.all([orgCaller.listCurrent(), orgCaller.getTeams()]); const attributes = await getCachedAttributes(org.id); + const facetedTeamValues = { + roles: [MembershipRole.OWNER, MembershipRole.ADMIN, MembershipRole.MEMBER], + teams, + attributes: attributes.map((attribute) => ({ + id: attribute.id, + name: attribute.name, + options: Array.from(new Set(attribute.options.map((option) => option.value))).map((value) => ({ + value, + })), + })), + }; + return ( ); diff --git a/packages/features/users/components/UserTable/UserListTable.tsx b/packages/features/users/components/UserTable/UserListTable.tsx index ebd692ea5c..51e444b85a 100644 --- a/packages/features/users/components/UserTable/UserListTable.tsx +++ b/packages/features/users/components/UserTable/UserListTable.tsx @@ -30,6 +30,7 @@ import { } from "@calcom/lib/csvUtils"; import { getUserAvatarUrl } from "@calcom/lib/getAvatarUrl"; import { useLocale } from "@calcom/lib/hooks/useLocale"; +import type { MembershipRole } from "@calcom/prisma/enums"; import { trpc } from "@calcom/trpc"; import type { RouterOutputs } from "@calcom/trpc/react"; import classNames from "@calcom/ui/classNames"; @@ -109,8 +110,18 @@ function reducer(state: UserTableState, action: UserTableAction): UserTableState export type UserListTableProps = { org: RouterOutputs["viewer"]["organizations"]["listCurrent"]; teams: RouterOutputs["viewer"]["organizations"]["getTeams"]; - facetedTeamValues?: RouterOutputs["viewer"]["organizations"]["getFacetedValues"]; attributes?: RouterOutputs["viewer"]["attributes"]["list"]; + facetedTeamValues?: { + roles: MembershipRole[]; + teams: RouterOutputs["viewer"]["organizations"]["getTeams"]; + attributes: { + id: string; + name: string; + options: { + value: string; + }[]; + }[]; + }; }; export function UserListTable(props: UserListTableProps) { diff --git a/packages/trpc/server/routers/viewer/organizations/_router.tsx b/packages/trpc/server/routers/viewer/organizations/_router.tsx index 1dab622360..ff935e97c1 100644 --- a/packages/trpc/server/routers/viewer/organizations/_router.tsx +++ b/packages/trpc/server/routers/viewer/organizations/_router.tsx @@ -29,10 +29,6 @@ import { ZSetPasswordSchema } from "./setPassword.schema"; import { ZUpdateInputSchema } from "./update.schema"; import { ZUpdateUserInputSchema } from "./updateUser.schema"; -const NAMESPACE = "organizations"; - -const namespaced = (s: string) => `${NAMESPACE}.${s}`; - export const viewerOrganizationsRouter = router({ getOrganizationOnboarding: authedProcedure.query(async (opts) => { const { default: handler } = await import("./getOrganizationOnboarding.handler"); @@ -162,8 +158,4 @@ export const viewerOrganizationsRouter = router({ const { default: handler } = await import("./createPhoneCall.handler"); return handler(opts); }), - getFacetedValues: authedProcedure.query(async (opts) => { - const { default: handler } = await import("./getFacetedValues.handler"); - return handler(opts); - }), }); diff --git a/packages/trpc/server/routers/viewer/organizations/getFacetedValues.handler.ts b/packages/trpc/server/routers/viewer/organizations/getFacetedValues.handler.ts deleted file mode 100644 index 628960bdab..0000000000 --- a/packages/trpc/server/routers/viewer/organizations/getFacetedValues.handler.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { prisma } from "@calcom/prisma"; -import { MembershipRole } from "@calcom/prisma/enums"; - -import { TRPCError } from "@trpc/server"; - -import type { TrpcSessionUser } from "../../../types"; - -type DeleteOptions = { - ctx: { - user: NonNullable; - }; -}; - -export const getFacetedValuesHandler = async ({ ctx }: DeleteOptions) => { - const { user } = ctx; - - const organizationId = user.organization?.id; - - if (!organizationId) { - throw new TRPCError({ code: "NOT_FOUND", message: "Organization not found" }); - } - const [teams, attributes] = await Promise.all([ - prisma.team.findMany({ - where: { - parentId: organizationId, - }, - select: { - id: true, - name: true, - }, - }), - prisma.attribute.findMany({ - where: { teamId: organizationId }, - select: { - id: true, - name: true, - options: { - select: { - value: true, - }, - distinct: "value", - }, - }, - }), - ]); - - return { - teams: teams, - attributes: attributes, - roles: [MembershipRole.OWNER, MembershipRole.ADMIN, MembershipRole.MEMBER], - }; -}; - -export default getFacetedValuesHandler; diff --git a/packages/trpc/server/routers/viewer/organizations/getFacetedValues.schema.ts b/packages/trpc/server/routers/viewer/organizations/getFacetedValues.schema.ts deleted file mode 100644 index e2981ea1df..0000000000 --- a/packages/trpc/server/routers/viewer/organizations/getFacetedValues.schema.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { z } from "zod"; - -export const ZGetFacetedValuesInput = z.object({ - include: z.enum(["users", "roles", "teams", "attributes"]).array().optional(), -}); - -export type TGetFacetedValuesInputSchema = z.infer;