diff --git a/src/core/apollo/generated/apollo-hooks.ts b/src/core/apollo/generated/apollo-hooks.ts index e48fd07fc8..de8ce948a7 100644 --- a/src/core/apollo/generated/apollo-hooks.ts +++ b/src/core/apollo/generated/apollo-hooks.ts @@ -1369,6 +1369,16 @@ export const CommunityAvailableMemberUsersFragmentDoc = gql` ${AvailableUserFragmentDoc} ${PageInfoFragmentDoc} `; +export const VirtualContributorNameFragmentDoc = gql` + fragment VirtualContributorName on VirtualContributor { + id + nameID + profile { + id + displayName + } + } +`; export const OrganizationContributorFragmentDoc = gql` fragment OrganizationContributor on Organization { id @@ -10537,16 +10547,26 @@ export function refetchCommunityAvailableMembersQuery(variables: SchemaTypes.Com } export const AvailableVirtualContributorsDocument = gql` - query AvailableVirtualContributors { - virtualContributors { - id - nameID - profile { + query AvailableVirtualContributors( + $filterSpace: Boolean = false + $filterSpaceId: UUID = "00000000-0000-0000-0000-000000000000" + ) { + lookup @include(if: $filterSpace) { + space(ID: $filterSpaceId) { id - displayName + community { + id + virtualContributorsInRole(role: MEMBER) { + ...VirtualContributorName + } + } } } + virtualContributors @skip(if: $filterSpace) { + ...VirtualContributorName + } } + ${VirtualContributorNameFragmentDoc} `; /** @@ -10561,6 +10581,8 @@ export const AvailableVirtualContributorsDocument = gql` * @example * const { data, loading, error } = useAvailableVirtualContributorsQuery({ * variables: { + * filterSpace: // value for 'filterSpace' + * filterSpaceId: // value for 'filterSpaceId' * }, * }); */ diff --git a/src/core/apollo/generated/graphql-schema.ts b/src/core/apollo/generated/graphql-schema.ts index ef237ef696..a77caf5ad7 100644 --- a/src/core/apollo/generated/graphql-schema.ts +++ b/src/core/apollo/generated/graphql-schema.ts @@ -14925,11 +14925,33 @@ export type AvailableUserFragment = { profile: { __typename?: 'Profile'; id: string; displayName: string }; }; -export type AvailableVirtualContributorsQueryVariables = Exact<{ [key: string]: never }>; +export type AvailableVirtualContributorsQueryVariables = Exact<{ + filterSpace?: InputMaybe; + filterSpaceId?: InputMaybe; +}>; export type AvailableVirtualContributorsQuery = { __typename?: 'Query'; - virtualContributors: Array<{ + lookup?: { + __typename?: 'LookupQueryResults'; + space?: + | { + __typename?: 'Space'; + id: string; + community: { + __typename?: 'Community'; + id: string; + virtualContributorsInRole: Array<{ + __typename?: 'VirtualContributor'; + id: string; + nameID: string; + profile: { __typename?: 'Profile'; id: string; displayName: string }; + }>; + }; + } + | undefined; + }; + virtualContributors?: Array<{ __typename?: 'VirtualContributor'; id: string; nameID: string; @@ -14937,6 +14959,13 @@ export type AvailableVirtualContributorsQuery = { }>; }; +export type VirtualContributorNameFragment = { + __typename?: 'VirtualContributor'; + id: string; + nameID: string; + profile: { __typename?: 'Profile'; id: string; displayName: string }; +}; + export type AddVirtualContributorToCommunityMutationVariables = Exact<{ communityId: Scalars['UUID']; virtualContributorId: Scalars['UUID_NAMEID']; diff --git a/src/domain/community/community/CommunityAdmin/useCommunityAdmin.ts b/src/domain/community/community/CommunityAdmin/useCommunityAdmin.ts index d5ed699f75..63d306fed6 100644 --- a/src/domain/community/community/CommunityAdmin/useCommunityAdmin.ts +++ b/src/domain/community/community/CommunityAdmin/useCommunityAdmin.ts @@ -231,9 +231,14 @@ const useCommunityAdmin = ({ const [fetchAllVirtualContributors] = useAvailableVirtualContributorsLazyQuery(); const getAvailableVirtualContributors = async (filter: string | undefined) => { - const { data } = await fetchAllVirtualContributors(); + const { data } = await fetchAllVirtualContributors({ + variables: { + filterSpace: journeyLevel > 0, + filterSpaceId: spaceId, + }, + }); // Filter out already member organizations - return data?.virtualContributors.filter( + return (data?.lookup?.space?.community.virtualContributorsInRole ?? data?.virtualContributors ?? [])?.filter( vc => !virtualContributors.some(member => member.id === vc.id) && vc.profile.displayName.toLowerCase().includes(filter?.toLowerCase() ?? '') diff --git a/src/domain/community/community/useCommunityAssignment/VirtualContributors.graphql b/src/domain/community/community/useCommunityAssignment/VirtualContributors.graphql index 027548f6d3..b498ae4979 100644 --- a/src/domain/community/community/useCommunityAssignment/VirtualContributors.graphql +++ b/src/domain/community/community/useCommunityAssignment/VirtualContributors.graphql @@ -1,12 +1,30 @@ -query AvailableVirtualContributors { - virtualContributors { - id - nameID - profile { +query AvailableVirtualContributors( + $filterSpace: Boolean = false + $filterSpaceId: UUID = "00000000-0000-0000-0000-000000000000" +) { + lookup @include(if: $filterSpace) { + space(ID: $filterSpaceId) { id - displayName + community { + id + virtualContributorsInRole(role: MEMBER) { + ...VirtualContributorName + } + } } } + virtualContributors @skip(if: $filterSpace) { + ...VirtualContributorName + } +} + +fragment VirtualContributorName on VirtualContributor { + id + nameID + profile { + id + displayName + } } mutation AddVirtualContributorToCommunity($communityId: UUID!, $virtualContributorId: UUID_NAMEID!) {