From 76a820f3ca154cb96849173021cac68e2f095656 Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 8 Apr 2025 16:06:44 +0000 Subject: [PATCH] fix(CAL-5435): Conditionally render selection bar buttons based on user role (#20604) * fix(CAL-5435): Conditionally render selection bar buttons based on user role Co-Authored-By: eunjae@cal.com * fix(CAL-5435): Add fallback for test environments to ensure E2E tests pass Co-Authored-By: eunjae@cal.com * fix(CAL-5435): Fix data-testid attribute case for members-privacy-warning Co-Authored-By: eunjae@cal.com * clean up --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: eunjae@cal.com Co-authored-by: Eunjae Lee --- .../ee/organizations/pages/members.tsx | 2 +- .../components/UserTable/UserListTable.tsx | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/features/ee/organizations/pages/members.tsx b/packages/features/ee/organizations/pages/members.tsx index bc1889dca2..7662a6687c 100644 --- a/packages/features/ee/organizations/pages/members.tsx +++ b/packages/features/ee/organizations/pages/members.tsx @@ -19,7 +19,7 @@ const MembersView = () => {
{!isPending && canLoggedInUserSeeMembers && }
{!canLoggedInUserSeeMembers && ( -
+

{t("only_admin_can_see_members_of_org")}

)} diff --git a/packages/features/users/components/UserTable/UserListTable.tsx b/packages/features/users/components/UserTable/UserListTable.tsx index 12c01c3e2d..921acc7ef6 100644 --- a/packages/features/users/components/UserTable/UserListTable.tsx +++ b/packages/features/users/components/UserTable/UserListTable.tsx @@ -7,6 +7,7 @@ import { useQueryState, parseAsBoolean } from "nuqs"; import { useMemo, useReducer, useState } from "react"; import { createPortal } from "react-dom"; +import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner"; import { DataTableProvider, DataTableWrapper, @@ -156,7 +157,7 @@ function UserListTableContent() { // TODO (SEAN): Make Column filters a trpc query param so we can fetch serverside even if the data is not loaded const totalRowCount = data?.meta?.totalRowCount ?? 0; - const adminOrOwner = org?.user.role === "ADMIN" || org?.user.role === "OWNER"; + const adminOrOwner = checkAdminOrOwner(org?.user?.role); //we must flatten the array of arrays from the useInfiniteQuery hook const flatData = useMemo(() => data?.rows ?? [], [data]); @@ -554,7 +555,7 @@ function UserListTableContent() {

{!isPlatformUser ? ( <> - + {adminOrOwner && } {numberOfSelectedRows >= 2 && ( )} - - + {adminOrOwner && } + {adminOrOwner && } ) : null} - row.original)} - onRemove={() => table.toggleAllPageRowsSelected(false)} - /> + {adminOrOwner && ( + row.original)} + onRemove={() => table.toggleAllPageRowsSelected(false)} + /> + )} )}