From 2fddcd78b7d58d816f9b764f85e100b2408ce124 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle <139135120+andrewwallacespeckle@users.noreply.github.com> Date: Fri, 27 Jun 2025 10:35:37 +0200 Subject: [PATCH] feat(server+fe): Implement LimitedWorkspace for PendingWorkspaceCollaborator (#4984) --- .../components/auth/WorkspaceInviteHeader.vue | 7 +- .../nav/notifications/WorkspaceInvite.vue | 8 ++- .../frontend-2/components/invite/Banner.vue | 2 +- .../components/workspace/JoinPage.vue | 2 +- .../components/workspace/invite/Banner.vue | 11 +-- .../components/workspace/invite/Block.vue | 15 ++-- .../components/workspace/invite/Card.vue | 68 +++++++++++++++++-- .../lib/common/generated/gql/gql.ts | 42 +++++++----- .../lib/common/generated/gql/graphql.ts | 55 ++++++++------- .../lib/workspaces/composables/management.ts | 16 +++-- .../typedefs/workspaces.graphql | 4 +- .../modules/core/graph/generated/graphql.ts | 8 +-- .../graph/generated/graphql.ts | 4 +- .../workspaces/graph/resolvers/workspaces.ts | 12 +--- .../workspaces/tests/helpers/graphql.ts | 6 +- .../tests/integration/invites.graph.spec.ts | 8 +-- .../server/test/graphql/generated/graphql.ts | 36 +++++----- 17 files changed, 185 insertions(+), 119 deletions(-) diff --git a/packages/frontend-2/components/auth/WorkspaceInviteHeader.vue b/packages/frontend-2/components/auth/WorkspaceInviteHeader.vue index d7b1d9177..1ef79a0b0 100644 --- a/packages/frontend-2/components/auth/WorkspaceInviteHeader.vue +++ b/packages/frontend-2/components/auth/WorkspaceInviteHeader.vue @@ -3,7 +3,7 @@

Join workspace

You're accepting an invitation to join - {{ invite.workspaceName }} + {{ invite.workspace.name }} @@ -29,8 +29,10 @@ graphql(` id ...LimitedUserAvatar } - workspaceId - workspaceName + workspace { + id + name + } token user { id diff --git a/packages/frontend-2/components/invite/Banner.vue b/packages/frontend-2/components/invite/Banner.vue index 2e700e363..49b307708 100644 --- a/packages/frontend-2/components/invite/Banner.vue +++ b/packages/frontend-2/components/invite/Banner.vue @@ -66,7 +66,7 @@ type GenericInviteItem = { invitedBy?: AvatarUserType workspace?: { id: string - logo?: string + logo?: MaybeNullOrUndefined name: string } user?: MaybeNullOrUndefined<{ diff --git a/packages/frontend-2/components/workspace/JoinPage.vue b/packages/frontend-2/components/workspace/JoinPage.vue index 39421dd75..1c0b2d621 100644 --- a/packages/frontend-2/components/workspace/JoinPage.vue +++ b/packages/frontend-2/components/workspace/JoinPage.vue @@ -145,7 +145,7 @@ const actionedWorkspaces = ref< const remainingWorkspaces = computed(() => { const actionedIds = new Set(actionedWorkspaces.value.map((w) => w.id)) const inviteWorkspaceIds = new Set( - localInvites.value.map((invite) => invite.workspaceId) + localInvites.value.map((invite) => invite.workspace.id) ) return (discoverableWorkspacesAndJoinRequests.value || []).filter( diff --git a/packages/frontend-2/components/workspace/invite/Banner.vue b/packages/frontend-2/components/workspace/invite/Banner.vue index 1481c657b..05511ea84 100644 --- a/packages/frontend-2/components/workspace/invite/Banner.vue +++ b/packages/frontend-2/components/workspace/invite/Banner.vue @@ -5,7 +5,7 @@ has invited you to join @@ -25,8 +25,11 @@ graphql(` id ...LimitedUserAvatar } - workspaceId - workspaceName + workspace { + id + name + logo + } token user { id @@ -63,7 +66,7 @@ const processInvite = async (shouldAccept: boolean, token: Optional) => mixpanel.track('Workspace Joined', { location: 'invite banner', // eslint-disable-next-line camelcase - workspace_id: props.invite.workspaceId + workspace_id: props.invite.workspace.id }) } else { await decline() diff --git a/packages/frontend-2/components/workspace/invite/Block.vue b/packages/frontend-2/components/workspace/invite/Block.vue index f8b5179ca..791862ff1 100644 --- a/packages/frontend-2/components/workspace/invite/Block.vue +++ b/packages/frontend-2/components/workspace/invite/Block.vue @@ -3,7 +3,7 @@

Join workspace

You're accepting an invitation to join - {{ invite.workspaceName }} + {{ invite.workspace.name }}