From 25031d113aa2be3f55c264c4776c5ddb291654d9 Mon Sep 17 00:00:00 2001 From: "rajarshee.chatterjee@harness.io" Date: Thu, 27 Jul 2023 12:32:13 +0000 Subject: [PATCH] feat: [CODE-649]: Users Dropdown in Add New Member Dialog (#248) --- .../AddNewMember/AddNewMember.tsx | 51 ++++++++++++++++--- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/web/src/pages/SpaceAccessControl/AddNewMember/AddNewMember.tsx b/web/src/pages/SpaceAccessControl/AddNewMember/AddNewMember.tsx index fed50df6c..1c20da8f1 100644 --- a/web/src/pages/SpaceAccessControl/AddNewMember/AddNewMember.tsx +++ b/web/src/pages/SpaceAccessControl/AddNewMember/AddNewMember.tsx @@ -11,10 +11,11 @@ import { MembershipAddRequestBody, TypesMembership, TypesPrincipalInfo, + useListPrincipals, useMembershipAdd, useMembershipUpdate } from 'services/code' -import { getErrorMessage } from 'utils/Utils' +import { getErrorMessage, LIST_FETCHING_LIMIT } from 'utils/Utils' import { roleStringKeyMap } from '../SpaceAccessControl' @@ -23,6 +24,7 @@ const roles = ['reader', 'executor', 'contributor', 'space_owner'] as const const useAddNewMember = ({ onClose }: { onClose: () => void }) => { const [isEditFlow, setIsEditFlow] = useState(false) const [membershipDetails, setMembershipDetails] = useState() + const [searchTerm, setSearchTerm] = useState('') const space = useGetSpaceParam() const { getString } = useStrings() @@ -34,6 +36,16 @@ const useAddNewMember = ({ onClose }: { onClose: () => void }) => { user_uid: membershipDetails?.principal?.uid || '' }) + const { data: users, loading: fetchingUsers } = useListPrincipals({ + queryParams: { + query: searchTerm, + page: 1, + limit: LIST_FETCHING_LIMIT, + type: ['user'] + }, + debounce: 500 + }) + const roleOptions: SelectOption[] = useMemo( () => roles.map(role => ({ @@ -43,12 +55,26 @@ const useAddNewMember = ({ onClose }: { onClose: () => void }) => { [] ) + const userOptions: SelectOption[] = useMemo( + () => + users?.map(user => ({ + value: user.uid as string, + label: (user.display_name || user.email) as string + })) || [], + [users] + ) + + const handleClose = () => { + setSearchTerm('') + hideModal() + } + const [openModal, hideModal] = useModalHook(() => { return ( initialValues={{ @@ -68,18 +94,29 @@ const useAddNewMember = ({ onClose }: { onClose: () => void }) => { showSuccess(getString('spaceMemberships.memberAdded')) } - hideModal() + handleClose() onClose() } catch (error) { showError(getErrorMessage(error)) } }}> - ) - }, [isEditFlow, membershipDetails]) + }, [isEditFlow, membershipDetails, userOptions]) return { openModal: (isEditing?: boolean, memberInfo?: TypesPrincipalInfo) => {