diff --git a/packages/frontend-2/lib/common/generated/gql/graphql.ts b/packages/frontend-2/lib/common/generated/gql/graphql.ts index 66f0cc8aa..03e457bf9 100644 --- a/packages/frontend-2/lib/common/generated/gql/graphql.ts +++ b/packages/frontend-2/lib/common/generated/gql/graphql.ts @@ -1955,7 +1955,10 @@ export type PendingStreamCollaborator = { id: Scalars['String']['output']; inviteId: Scalars['String']['output']; invitedBy: LimitedUser; + project: Project; + /** @deprecated Use project instead */ projectId: Scalars['String']['output']; + /** @deprecated Use project instead */ projectName: Scalars['String']['output']; role: Scalars['String']['output']; /** @deprecated Use projectId instead */ @@ -8266,6 +8269,7 @@ export type PendingStreamCollaboratorFieldArgs = { id: {}, inviteId: {}, invitedBy: {}, + project: {}, projectId: {}, projectName: {}, role: {}, diff --git a/packages/server/assets/workspacesCore/typedefs/projects.graphql b/packages/server/assets/workspacesCore/typedefs/projects.graphql index 462d3e9e5..b07e4cced 100644 --- a/packages/server/assets/workspacesCore/typedefs/projects.graphql +++ b/packages/server/assets/workspacesCore/typedefs/projects.graphql @@ -16,3 +16,7 @@ extend type ProjectCollaborator { """ workspaceRole: String } + +extend type PendingStreamCollaborator { + workspaceSlug: String +} diff --git a/packages/server/modules/core/graph/generated/graphql.ts b/packages/server/modules/core/graph/generated/graphql.ts index 798695c37..8118364ec 100644 --- a/packages/server/modules/core/graph/generated/graphql.ts +++ b/packages/server/modules/core/graph/generated/graphql.ts @@ -1991,6 +1991,7 @@ export type PendingStreamCollaborator = { token?: Maybe; /** Set only if user is registered */ user?: Maybe; + workspaceSlug?: Maybe; }; export type PendingWorkspaceCollaborator = { @@ -6609,6 +6610,7 @@ export type PendingStreamCollaboratorResolvers; token?: Resolver, ParentType, ContextType>; user?: Resolver, ParentType, ContextType>; + workspaceSlug?: Resolver, ParentType, ContextType>; __isTypeOf?: IsTypeOfResolverFn; }; diff --git a/packages/server/modules/cross-server-sync/graph/generated/graphql.ts b/packages/server/modules/cross-server-sync/graph/generated/graphql.ts index 489d738fd..ec01ba22f 100644 --- a/packages/server/modules/cross-server-sync/graph/generated/graphql.ts +++ b/packages/server/modules/cross-server-sync/graph/generated/graphql.ts @@ -1971,6 +1971,7 @@ export type PendingStreamCollaborator = { token?: Maybe; /** Set only if user is registered */ user?: Maybe; + workspaceSlug?: Maybe; }; export type PendingWorkspaceCollaborator = { diff --git a/packages/server/modules/workspaces/graph/resolvers/projects.ts b/packages/server/modules/workspaces/graph/resolvers/projects.ts index 0961e6f18..6b8809b82 100644 --- a/packages/server/modules/workspaces/graph/resolvers/projects.ts +++ b/packages/server/modules/workspaces/graph/resolvers/projects.ts @@ -1,8 +1,10 @@ import { db } from '@/db/knex' +import { StreamNotFoundError } from '@/modules/core/errors/stream' import { Resolvers } from '@/modules/core/graph/generated/graphql' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { getPaginatedItemsFactory } from '@/modules/shared/services/paginatedItems' import { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' +import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' import { intersectProjectCollaboratorsAndWorkspaceCollaboratorsFactory } from '@/modules/workspaces/repositories/projects' import { countInvitableCollaboratorsByProjectIdFactory, @@ -68,6 +70,28 @@ export default FF_WORKSPACES_MODULE_ENABLED addedToWorkspaceTotalCount: async (parent) => { return parent.length } + }, + PendingStreamCollaborator: { + workspaceSlug: async (parent, _args, ctx) => { + const project = await ctx.loaders.streams.getStream.load(parent.streamId) + if (!project) { + throw new StreamNotFoundError(null, { + info: { projectId: parent.streamId } + }) + } + if (!project.workspaceId) { + return null + } + const workspace = await ctx.loaders.workspaces?.getWorkspace.load( + project.workspaceId + ) + if (!workspace) { + throw new WorkspaceNotFoundError(null, { + info: { workspaceId: project.workspaceId } + }) + } + return workspace.slug + } } } as Resolvers) : {} diff --git a/packages/server/test/graphql/generated/graphql.ts b/packages/server/test/graphql/generated/graphql.ts index c58c68f04..de376b329 100644 --- a/packages/server/test/graphql/generated/graphql.ts +++ b/packages/server/test/graphql/generated/graphql.ts @@ -1972,6 +1972,7 @@ export type PendingStreamCollaborator = { token?: Maybe; /** Set only if user is registered */ user?: Maybe; + workspaceSlug?: Maybe; }; export type PendingWorkspaceCollaborator = {