refactor(fe): members settings usePaginatedQuery
refactor(fe): members settings usePaginatedQuery
This commit is contained in:
@@ -31,7 +31,7 @@
|
||||
}
|
||||
]"
|
||||
:items="guests"
|
||||
:loading="searchResultLoading"
|
||||
:loading="loading"
|
||||
:empty-message="
|
||||
search.length
|
||||
? `No guests found for '${search}'`
|
||||
@@ -97,6 +97,12 @@
|
||||
<span v-else />
|
||||
</template>
|
||||
</LayoutTable>
|
||||
<InfiniteLoading
|
||||
v-if="guests?.length"
|
||||
:settings="{ identifier }"
|
||||
class="py-4"
|
||||
@infinite="onInfiniteLoad"
|
||||
/>
|
||||
<SettingsWorkspacesMembersActionsProjectPermissionsDialog
|
||||
v-model:open="showProjectPermissionsDialog"
|
||||
:user="targetUser"
|
||||
@@ -108,16 +114,14 @@
|
||||
<script setup lang="ts">
|
||||
import {
|
||||
WorkspaceSeatType,
|
||||
type SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
type SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
type SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { Roles, type MaybeNullOrUndefined } from '@speckle/shared'
|
||||
import { Roles, type Nullable } from '@speckle/shared'
|
||||
import { settingsWorkspacesMembersSearchQuery } from '~~/lib/settings/graphql/queries'
|
||||
import { useQuery } from '@vue/apollo-composable'
|
||||
import { LearnMoreRolesSeatsUrl } from '~~/lib/common/helpers/route'
|
||||
import { usePaginatedQuery } from '~/lib/common/composables/graphql'
|
||||
|
||||
const props = defineProps<{
|
||||
workspace: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspaceSlug: string
|
||||
}>()
|
||||
|
||||
@@ -128,26 +132,36 @@ const targetUser = ref<SettingsWorkspacesMembersActionsMenu_UserFragment | undef
|
||||
undefined
|
||||
)
|
||||
|
||||
const { result: searchResult, loading: searchResultLoading } = useQuery(
|
||||
settingsWorkspacesMembersSearchQuery,
|
||||
() => ({
|
||||
const {
|
||||
identifier,
|
||||
onInfiniteLoad,
|
||||
query: { result, loading }
|
||||
} = usePaginatedQuery({
|
||||
query: settingsWorkspacesMembersSearchQuery,
|
||||
baseVariables: computed(() => ({
|
||||
query: search.value?.length ? search.value : null,
|
||||
limit: 10,
|
||||
slug: props.workspaceSlug,
|
||||
filter: {
|
||||
search: search.value,
|
||||
roles: [Roles.Workspace.Guest]
|
||||
roles: [Roles.Workspace.Guest],
|
||||
seatType: seatTypeFilter.value
|
||||
},
|
||||
slug: props.workspaceSlug,
|
||||
workspaceId: props.workspace?.id || ''
|
||||
cursor: null as Nullable<string>
|
||||
})),
|
||||
resolveKey: (vars) => [vars.query || '', vars.filter?.seatType || ''],
|
||||
resolveCurrentResult: (res) => res?.workspaceBySlug.team,
|
||||
resolveNextPageVariables: (baseVars, cursor) => ({
|
||||
...baseVars,
|
||||
cursor
|
||||
}),
|
||||
() => ({
|
||||
enabled: !!search.value.length || !!seatTypeFilter.value
|
||||
})
|
||||
)
|
||||
resolveCursorFromVariables: (vars) => vars.cursor
|
||||
})
|
||||
|
||||
const workspace = computed(() => result.value?.workspaceBySlug)
|
||||
|
||||
const guests = computed(() => {
|
||||
const guestArray =
|
||||
search.value.length || seatTypeFilter.value
|
||||
? searchResult.value?.workspaceBySlug?.team.items
|
||||
: props.workspace?.team.items
|
||||
const guestArray = workspace.value?.team.items
|
||||
|
||||
return (guestArray || [])
|
||||
.map((g) => ({ ...g, seatType: g.seatType || WorkspaceSeatType.Viewer }))
|
||||
@@ -155,5 +169,5 @@ const guests = computed(() => {
|
||||
.filter((item) => !seatTypeFilter.value || item.seatType === seatTypeFilter.value)
|
||||
})
|
||||
|
||||
const isWorkspaceAdmin = computed(() => props.workspace?.role === Roles.Workspace.Admin)
|
||||
const isWorkspaceAdmin = computed(() => workspace.value?.role === Roles.Workspace.Admin)
|
||||
</script>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
}
|
||||
]"
|
||||
:items="members"
|
||||
:loading="searchResultLoading"
|
||||
:loading="loading"
|
||||
:empty-message="
|
||||
hasNoResults ? 'No members found' : 'This workspace has no members'
|
||||
"
|
||||
@@ -118,6 +118,12 @@
|
||||
/>
|
||||
</template>
|
||||
</LayoutTable>
|
||||
<InfiniteLoading
|
||||
v-if="members?.length"
|
||||
:settings="{ identifier }"
|
||||
class="py-4"
|
||||
@infinite="onInfiniteLoad"
|
||||
/>
|
||||
<SettingsWorkspacesMembersActionsProjectPermissionsDialog
|
||||
v-model:open="showProjectPermissionsDialog"
|
||||
:user="targetUser"
|
||||
@@ -127,18 +133,17 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { Roles, type WorkspaceRoles, type MaybeNullOrUndefined } from '@speckle/shared'
|
||||
import { Roles, type Nullable, type WorkspaceRoles } from '@speckle/shared'
|
||||
import { settingsWorkspacesMembersSearchQuery } from '~~/lib/settings/graphql/queries'
|
||||
import { useQuery } from '@vue/apollo-composable'
|
||||
import {
|
||||
WorkspaceSeatType,
|
||||
type SettingsWorkspacesMembersTable_WorkspaceFragment,
|
||||
type SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
} from '~~/lib/common/generated/gql/graphql'
|
||||
import { graphql } from '~/lib/common/generated/gql'
|
||||
import { ExclamationCircleIcon } from '@heroicons/vue/24/outline'
|
||||
import { LearnMoreRolesSeatsUrl } from '~~/lib/common/helpers/route'
|
||||
import type { WorkspaceUserActionTypes } from '~/lib/settings/helpers/types'
|
||||
import { usePaginatedQuery } from '~/lib/common/composables/graphql'
|
||||
|
||||
graphql(`
|
||||
fragment SettingsWorkspacesMembersTable_WorkspaceCollaborator on WorkspaceCollaborator {
|
||||
@@ -152,23 +157,7 @@ graphql(`
|
||||
}
|
||||
`)
|
||||
|
||||
graphql(`
|
||||
fragment SettingsWorkspacesMembersTable_Workspace on Workspace {
|
||||
id
|
||||
slug
|
||||
name
|
||||
...SettingsWorkspacesMembersTableHeader_Workspace
|
||||
team(limit: 250) {
|
||||
items {
|
||||
id
|
||||
...SettingsWorkspacesMembersTable_WorkspaceCollaborator
|
||||
}
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
const props = defineProps<{
|
||||
workspace: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspaceSlug: string
|
||||
}>()
|
||||
|
||||
@@ -182,9 +171,16 @@ const targetUser = ref<SettingsWorkspacesMembersActionsMenu_UserFragment | undef
|
||||
|
||||
const { activeUser } = useActiveUser()
|
||||
|
||||
const { result: searchResult, loading: searchResultLoading } = useQuery(
|
||||
settingsWorkspacesMembersSearchQuery,
|
||||
() => ({
|
||||
const {
|
||||
identifier,
|
||||
onInfiniteLoad,
|
||||
query: { result, loading }
|
||||
} = usePaginatedQuery({
|
||||
query: settingsWorkspacesMembersSearchQuery,
|
||||
baseVariables: computed(() => ({
|
||||
query: search.value?.length ? search.value : null,
|
||||
limit: 10,
|
||||
slug: props.workspaceSlug,
|
||||
filter: {
|
||||
search: search.value,
|
||||
roles: roleFilter.value
|
||||
@@ -192,19 +188,21 @@ const { result: searchResult, loading: searchResultLoading } = useQuery(
|
||||
: [Roles.Workspace.Admin, Roles.Workspace.Member],
|
||||
seatType: seatTypeFilter.value
|
||||
},
|
||||
slug: props.workspaceSlug,
|
||||
workspaceId: props.workspace?.id || ''
|
||||
cursor: null as Nullable<string>
|
||||
})),
|
||||
resolveKey: (vars) => [vars.query || ''],
|
||||
resolveCurrentResult: (res) => res?.workspaceBySlug.team,
|
||||
resolveNextPageVariables: (baseVars, cursor) => ({
|
||||
...baseVars,
|
||||
cursor
|
||||
}),
|
||||
() => ({
|
||||
enabled: !!search.value.length || !!roleFilter.value || !!seatTypeFilter.value
|
||||
})
|
||||
)
|
||||
resolveCursorFromVariables: (vars) => vars.cursor
|
||||
})
|
||||
|
||||
const workspace = computed(() => result.value?.workspaceBySlug)
|
||||
|
||||
const members = computed(() => {
|
||||
const memberArray =
|
||||
search.value.length || roleFilter.value || seatTypeFilter.value
|
||||
? searchResult.value?.workspaceBySlug?.team.items
|
||||
: props.workspace?.team.items
|
||||
const memberArray = workspace.value?.team.items
|
||||
return (memberArray || [])
|
||||
.map((member) => ({
|
||||
...member,
|
||||
@@ -213,13 +211,9 @@ const members = computed(() => {
|
||||
.filter((user) => user.role !== Roles.Workspace.Guest)
|
||||
})
|
||||
|
||||
const hasNoResults = computed(
|
||||
() =>
|
||||
(search.value.length || roleFilter.value || seatTypeFilter.value) &&
|
||||
searchResult.value?.workspaceBySlug?.team.items.length === 0
|
||||
)
|
||||
const hasNoResults = computed(() => workspace.value?.team.items.length === 0)
|
||||
|
||||
const isWorkspaceAdmin = computed(() => props.workspace?.role === Roles.Workspace.Admin)
|
||||
const isWorkspaceAdmin = computed(() => workspace.value?.role === Roles.Workspace.Admin)
|
||||
|
||||
const selectedAction = ref<Record<string, WorkspaceUserActionTypes>>({})
|
||||
</script>
|
||||
|
||||
@@ -63,6 +63,7 @@ import {
|
||||
graphql(`
|
||||
fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {
|
||||
id
|
||||
slug
|
||||
role
|
||||
...InviteDialogWorkspace_Workspace
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ import { WorkspaceUserActionTypes } from '~/lib/settings/helpers/types'
|
||||
import { useSettingsMembersActions } from '~/lib/settings/composables/menu'
|
||||
import type {
|
||||
SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
SettingsWorkspacesMembersTableHeader_WorkspaceFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { useWorkspaceLastAdminCheck } from '~/lib/workspaces/composables/management'
|
||||
import { graphql } from '~/lib/common/generated/gql'
|
||||
@@ -103,7 +103,7 @@ graphql(`
|
||||
|
||||
const props = defineProps<{
|
||||
targetUser: SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTableHeader_WorkspaceFragment>
|
||||
}>()
|
||||
|
||||
const showMenu = ref(false)
|
||||
|
||||
+2
-2
@@ -29,13 +29,13 @@ import type { LayoutDialogButton } from '@speckle/ui-components'
|
||||
import { useWorkspaceUpdateRole } from '~/lib/workspaces/composables/management'
|
||||
import type {
|
||||
SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
SettingsWorkspacesMembersTableHeader_WorkspaceFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
|
||||
const props = defineProps<{
|
||||
user: SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTableHeader_WorkspaceFragment>
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
||||
+2
-2
@@ -70,13 +70,13 @@ import { useWorkspacePlan } from '~/lib/workspaces/composables/plan'
|
||||
import SeatTransitionCards from './SeatTransitionCards.vue'
|
||||
import type {
|
||||
SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
SettingsWorkspacesMembersTableHeader_WorkspaceFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
|
||||
const props = defineProps<{
|
||||
user: SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTableHeader_WorkspaceFragment>
|
||||
isActiveUserTargetUser: boolean
|
||||
action?: 'make' | 'remove'
|
||||
}>()
|
||||
|
||||
+2
-2
@@ -56,14 +56,14 @@ import { WorkspaceRoleDescriptions } from '~/lib/settings/helpers/constants'
|
||||
import { useWorkspaceUpdateRole } from '~/lib/workspaces/composables/management'
|
||||
import type {
|
||||
SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
SettingsWorkspacesMembersTableHeader_WorkspaceFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import type { MaybeNullOrUndefined } from '@speckle/shared'
|
||||
|
||||
const props = defineProps<{
|
||||
user: SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
newRole: MaybeNullOrUndefined<string>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTableHeader_WorkspaceFragment>
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
||||
+2
-2
@@ -34,13 +34,13 @@ import { useWorkspacePlan } from '~/lib/workspaces/composables/plan'
|
||||
import SeatTransitionCards from './SeatTransitionCards.vue'
|
||||
import type {
|
||||
SettingsWorkspacesMembersActionsMenu_UserFragment,
|
||||
SettingsWorkspacesMembersTable_WorkspaceFragment
|
||||
SettingsWorkspacesMembersTableHeader_WorkspaceFragment
|
||||
} from '~/lib/common/generated/gql/graphql'
|
||||
import { Roles } from '@speckle/shared'
|
||||
|
||||
const props = defineProps<{
|
||||
user: SettingsWorkspacesMembersActionsMenu_UserFragment
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTable_WorkspaceFragment>
|
||||
workspace?: MaybeNullOrUndefined<SettingsWorkspacesMembersTableHeader_WorkspaceFragment>
|
||||
}>()
|
||||
|
||||
const emit = defineEmits<{
|
||||
|
||||
@@ -118,8 +118,7 @@ type Documents = {
|
||||
"\n fragment SettingsWorkspacesMembersInvitesTable_Workspace on Workspace {\n id\n ...SettingsWorkspacesMembersTableHeader_Workspace\n invitedTeam {\n ...SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaborator\n }\n }\n": typeof types.SettingsWorkspacesMembersInvitesTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersRequestsTable_Workspace on Workspace {\n ...SettingsWorkspacesMembersTableHeader_Workspace\n id\n adminWorkspacesJoinRequests {\n totalCount\n items {\n ...WorkspaceJoinRequestApproveDialog_WorkspaceJoinRequest\n id\n createdAt\n status\n user {\n id\n avatar\n name\n }\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersRequestsTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTable_WorkspaceCollaborator on WorkspaceCollaborator {\n id\n projectRoles {\n project {\n id\n }\n }\n ...SettingsWorkspacesMembersActionsMenu_User\n }\n": typeof types.SettingsWorkspacesMembersTable_WorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTable_Workspace on Workspace {\n id\n slug\n name\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n role\n ...InviteDialogWorkspace_Workspace\n }\n": typeof types.SettingsWorkspacesMembersTableHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n slug\n role\n ...InviteDialogWorkspace_Workspace\n }\n": typeof types.SettingsWorkspacesMembersTableHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersActionsMenu_User on WorkspaceCollaborator {\n id\n role\n seatType\n joinDate\n user {\n id\n name\n avatar\n workspaceDomainPolicyCompliant(workspaceSlug: $slug)\n }\n ...SettingsWorkspacesMembersActionsProjectPermissionsDialog_User\n }\n": typeof types.SettingsWorkspacesMembersActionsMenu_UserFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersActionsProjectPermissionsDialog_User on WorkspaceCollaborator {\n projectRoles {\n project {\n id\n name\n }\n role\n }\n }\n": typeof types.SettingsWorkspacesMembersActionsProjectPermissionsDialog_UserFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegionsSelect_ServerRegionItem on ServerRegionItem {\n id\n key\n name\n description\n }\n": typeof types.SettingsWorkspacesRegionsSelect_ServerRegionItemFragmentDoc,
|
||||
@@ -318,11 +317,10 @@ type Documents = {
|
||||
"\n query SettingsWorkspaceBilling($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...WorkspaceBillingPage_Workspace\n }\n }\n": typeof types.SettingsWorkspaceBillingDocument,
|
||||
"\n query SettingsWorkspaceBillingCustomerPortal($workspaceId: String!) {\n workspace(id: $workspaceId) {\n customerPortalUrl\n }\n }\n": typeof types.SettingsWorkspaceBillingCustomerPortalDocument,
|
||||
"\n query SettingsWorkspaceRegions($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...SettingsWorkspacesRegions_Workspace\n }\n serverInfo {\n ...SettingsWorkspacesRegions_ServerInfo\n }\n }\n": typeof types.SettingsWorkspaceRegionsDocument,
|
||||
"\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembers_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersDocument,
|
||||
"\n query SettingsWorkspacesMembersTable($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersTableDocument,
|
||||
"\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersCounts_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersDocument,
|
||||
"\n query SettingsWorkspacesMembersInvites($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersInvitesDocument,
|
||||
"\n query SettingsWorkspacesMembersRequests($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersRequestsTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesMembersRequestsDocument,
|
||||
"\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersSearchDocument,
|
||||
"\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n role\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n cursor\n totalCount\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersSearchDocument,
|
||||
"\n query SettingsWorkspacesInvitesSearch(\n $slug: String!\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n }\n }\n": typeof types.SettingsWorkspacesInvitesSearchDocument,
|
||||
"\n query SettingsWorkspacesProjects(\n $slug: String!\n $limit: Int!\n $cursor: String\n $filter: WorkspaceProjectsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesProjects_Workspace\n projects(limit: $limit, cursor: $cursor, filter: $filter) {\n cursor\n ...SettingsWorkspacesProjects_ProjectCollection\n }\n }\n }\n": typeof types.SettingsWorkspacesProjectsDocument,
|
||||
"\n query SettingsWorkspaceSecurity($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesSecurity_Workspace\n }\n }\n": typeof types.SettingsWorkspaceSecurityDocument,
|
||||
@@ -424,7 +422,7 @@ type Documents = {
|
||||
"\n fragment SettingsServerProjects_User on User {\n permissions {\n canCreatePersonalProject {\n ...FullPermissionCheckResult\n }\n }\n }\n": typeof types.SettingsServerProjects_UserFragmentDoc,
|
||||
"\n query SettingsServerRegions {\n serverInfo {\n multiRegion {\n regions {\n id\n ...SettingsServerRegionsTable_ServerRegionItem\n }\n availableKeys\n }\n }\n }\n": typeof types.SettingsServerRegionsDocument,
|
||||
"\n fragment SettingsWorkspacesGeneral_Workspace on Workspace {\n ...SettingsWorkspacesGeneralEditAvatar_Workspace\n ...SettingsWorkspaceGeneralDeleteDialog_Workspace\n ...SettingsWorkspacesGeneralEditSlugDialog_Workspace\n id\n name\n slug\n description\n logo\n role\n plan {\n status\n name\n }\n }\n": typeof types.SettingsWorkspacesGeneral_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembers_Workspace on Workspace {\n id\n role\n team {\n items {\n id\n role\n }\n }\n invitedTeam {\n user {\n id\n }\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n totalCount\n }\n }\n": typeof types.SettingsWorkspacesMembers_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersCounts_Workspace on Workspace {\n id\n role\n invitedTeam {\n id\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n }\n }\n": typeof types.SettingsWorkspacesMembersCounts_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": typeof types.SettingsWorkspacesProjects_ProjectCollectionFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesProjects_Workspace on Workspace {\n id\n slug\n permissions {\n canCreateProject {\n ...FullPermissionCheckResult\n }\n }\n }\n": typeof types.SettingsWorkspacesProjects_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_Workspace on Workspace {\n id\n role\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n hasAccessToMultiRegion: hasAccessToFeature(\n featureName: workspaceDataRegionSpecificity\n )\n hasProjects: projects(limit: 0) {\n totalCount\n }\n }\n": typeof types.SettingsWorkspacesRegions_WorkspaceFragmentDoc,
|
||||
@@ -536,8 +534,7 @@ const documents: Documents = {
|
||||
"\n fragment SettingsWorkspacesMembersInvitesTable_Workspace on Workspace {\n id\n ...SettingsWorkspacesMembersTableHeader_Workspace\n invitedTeam {\n ...SettingsWorkspacesMembersInvitesTable_PendingWorkspaceCollaborator\n }\n }\n": types.SettingsWorkspacesMembersInvitesTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersRequestsTable_Workspace on Workspace {\n ...SettingsWorkspacesMembersTableHeader_Workspace\n id\n adminWorkspacesJoinRequests {\n totalCount\n items {\n ...WorkspaceJoinRequestApproveDialog_WorkspaceJoinRequest\n id\n createdAt\n status\n user {\n id\n avatar\n name\n }\n }\n }\n }\n": types.SettingsWorkspacesMembersRequestsTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTable_WorkspaceCollaborator on WorkspaceCollaborator {\n id\n projectRoles {\n project {\n id\n }\n }\n ...SettingsWorkspacesMembersActionsMenu_User\n }\n": types.SettingsWorkspacesMembersTable_WorkspaceCollaboratorFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTable_Workspace on Workspace {\n id\n slug\n name\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n": types.SettingsWorkspacesMembersTable_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n role\n ...InviteDialogWorkspace_Workspace\n }\n": types.SettingsWorkspacesMembersTableHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n slug\n role\n ...InviteDialogWorkspace_Workspace\n }\n": types.SettingsWorkspacesMembersTableHeader_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersActionsMenu_User on WorkspaceCollaborator {\n id\n role\n seatType\n joinDate\n user {\n id\n name\n avatar\n workspaceDomainPolicyCompliant(workspaceSlug: $slug)\n }\n ...SettingsWorkspacesMembersActionsProjectPermissionsDialog_User\n }\n": types.SettingsWorkspacesMembersActionsMenu_UserFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersActionsProjectPermissionsDialog_User on WorkspaceCollaborator {\n projectRoles {\n project {\n id\n name\n }\n role\n }\n }\n": types.SettingsWorkspacesMembersActionsProjectPermissionsDialog_UserFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegionsSelect_ServerRegionItem on ServerRegionItem {\n id\n key\n name\n description\n }\n": types.SettingsWorkspacesRegionsSelect_ServerRegionItemFragmentDoc,
|
||||
@@ -736,11 +733,10 @@ const documents: Documents = {
|
||||
"\n query SettingsWorkspaceBilling($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...WorkspaceBillingPage_Workspace\n }\n }\n": types.SettingsWorkspaceBillingDocument,
|
||||
"\n query SettingsWorkspaceBillingCustomerPortal($workspaceId: String!) {\n workspace(id: $workspaceId) {\n customerPortalUrl\n }\n }\n": types.SettingsWorkspaceBillingCustomerPortalDocument,
|
||||
"\n query SettingsWorkspaceRegions($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n ...SettingsWorkspacesRegions_Workspace\n }\n serverInfo {\n ...SettingsWorkspacesRegions_ServerInfo\n }\n }\n": types.SettingsWorkspaceRegionsDocument,
|
||||
"\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembers_Workspace\n }\n }\n": types.SettingsWorkspacesMembersDocument,
|
||||
"\n query SettingsWorkspacesMembersTable($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersTable_Workspace\n }\n }\n": types.SettingsWorkspacesMembersTableDocument,
|
||||
"\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersCounts_Workspace\n }\n }\n": types.SettingsWorkspacesMembersDocument,
|
||||
"\n query SettingsWorkspacesMembersInvites($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n }\n }\n": types.SettingsWorkspacesMembersInvitesDocument,
|
||||
"\n query SettingsWorkspacesMembersRequests($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersRequestsTable_Workspace\n }\n }\n": types.SettingsWorkspacesMembersRequestsDocument,
|
||||
"\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n }\n": types.SettingsWorkspacesMembersSearchDocument,
|
||||
"\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n role\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n cursor\n totalCount\n }\n }\n }\n": types.SettingsWorkspacesMembersSearchDocument,
|
||||
"\n query SettingsWorkspacesInvitesSearch(\n $slug: String!\n $invitesFilter: PendingWorkspaceCollaboratorsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersInvitesTable_Workspace\n }\n }\n": types.SettingsWorkspacesInvitesSearchDocument,
|
||||
"\n query SettingsWorkspacesProjects(\n $slug: String!\n $limit: Int!\n $cursor: String\n $filter: WorkspaceProjectsFilter\n ) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesProjects_Workspace\n projects(limit: $limit, cursor: $cursor, filter: $filter) {\n cursor\n ...SettingsWorkspacesProjects_ProjectCollection\n }\n }\n }\n": types.SettingsWorkspacesProjectsDocument,
|
||||
"\n query SettingsWorkspaceSecurity($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesSecurity_Workspace\n }\n }\n": types.SettingsWorkspaceSecurityDocument,
|
||||
@@ -842,7 +838,7 @@ const documents: Documents = {
|
||||
"\n fragment SettingsServerProjects_User on User {\n permissions {\n canCreatePersonalProject {\n ...FullPermissionCheckResult\n }\n }\n }\n": types.SettingsServerProjects_UserFragmentDoc,
|
||||
"\n query SettingsServerRegions {\n serverInfo {\n multiRegion {\n regions {\n id\n ...SettingsServerRegionsTable_ServerRegionItem\n }\n availableKeys\n }\n }\n }\n": types.SettingsServerRegionsDocument,
|
||||
"\n fragment SettingsWorkspacesGeneral_Workspace on Workspace {\n ...SettingsWorkspacesGeneralEditAvatar_Workspace\n ...SettingsWorkspaceGeneralDeleteDialog_Workspace\n ...SettingsWorkspacesGeneralEditSlugDialog_Workspace\n id\n name\n slug\n description\n logo\n role\n plan {\n status\n name\n }\n }\n": types.SettingsWorkspacesGeneral_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembers_Workspace on Workspace {\n id\n role\n team {\n items {\n id\n role\n }\n }\n invitedTeam {\n user {\n id\n }\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n totalCount\n }\n }\n": types.SettingsWorkspacesMembers_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesMembersCounts_Workspace on Workspace {\n id\n role\n invitedTeam {\n id\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n }\n }\n": types.SettingsWorkspacesMembersCounts_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesProjects_ProjectCollection on ProjectCollection {\n totalCount\n items {\n ...SettingsSharedProjects_Project\n }\n }\n": types.SettingsWorkspacesProjects_ProjectCollectionFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesProjects_Workspace on Workspace {\n id\n slug\n permissions {\n canCreateProject {\n ...FullPermissionCheckResult\n }\n }\n }\n": types.SettingsWorkspacesProjects_WorkspaceFragmentDoc,
|
||||
"\n fragment SettingsWorkspacesRegions_Workspace on Workspace {\n id\n role\n defaultRegion {\n id\n ...SettingsWorkspacesRegionsSelect_ServerRegionItem\n }\n hasAccessToMultiRegion: hasAccessToFeature(\n featureName: workspaceDataRegionSpecificity\n )\n hasProjects: projects(limit: 0) {\n totalCount\n }\n }\n": types.SettingsWorkspacesRegions_WorkspaceFragmentDoc,
|
||||
@@ -1283,11 +1279,7 @@ export function graphql(source: "\n fragment SettingsWorkspacesMembersTable_Wor
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesMembersTable_Workspace on Workspace {\n id\n slug\n name\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesMembersTable_Workspace on Workspace {\n id\n slug\n name\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n role\n ...InviteDialogWorkspace_Workspace\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n role\n ...InviteDialogWorkspace_Workspace\n }\n"];
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n slug\n role\n ...InviteDialogWorkspace_Workspace\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesMembersTableHeader_Workspace on Workspace {\n id\n slug\n role\n ...InviteDialogWorkspace_Workspace\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -2083,11 +2075,7 @@ export function graphql(source: "\n query SettingsWorkspaceRegions($slug: Strin
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembers_Workspace\n }\n }\n"): (typeof documents)["\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembers_Workspace\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query SettingsWorkspacesMembersTable($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersTable_Workspace\n }\n }\n"): (typeof documents)["\n query SettingsWorkspacesMembersTable($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersTable_Workspace\n }\n }\n"];
|
||||
export function graphql(source: "\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersCounts_Workspace\n }\n }\n"): (typeof documents)["\n query SettingsWorkspacesMembers($slug: String!) {\n workspaceBySlug(slug: $slug) {\n ...SettingsWorkspacesMembersCounts_Workspace\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -2099,7 +2087,7 @@ export function graphql(source: "\n query SettingsWorkspacesMembersRequests($sl
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n }\n"): (typeof documents)["\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n role\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n cursor\n totalCount\n }\n }\n }\n"): (typeof documents)["\n query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {\n workspaceBySlug(slug: $slug) {\n id\n role\n ...SettingsWorkspacesMembersTableHeader_Workspace\n team(filter: $filter, limit: 250) {\n items {\n id\n ...SettingsWorkspacesMembersTable_WorkspaceCollaborator\n }\n cursor\n totalCount\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
@@ -2507,7 +2495,7 @@ export function graphql(source: "\n fragment SettingsWorkspacesGeneral_Workspac
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesMembers_Workspace on Workspace {\n id\n role\n team {\n items {\n id\n role\n }\n }\n invitedTeam {\n user {\n id\n }\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n totalCount\n }\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesMembers_Workspace on Workspace {\n id\n role\n team {\n items {\n id\n role\n }\n }\n invitedTeam {\n user {\n id\n }\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n totalCount\n }\n }\n"];
|
||||
export function graphql(source: "\n fragment SettingsWorkspacesMembersCounts_Workspace on Workspace {\n id\n role\n invitedTeam {\n id\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n }\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesMembersCounts_Workspace on Workspace {\n id\n role\n invitedTeam {\n id\n }\n adminWorkspacesJoinRequests {\n items {\n id\n status\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -50,15 +50,7 @@ export const settingsWorkspaceRegionsQuery = graphql(`
|
||||
export const settingsWorkspacesMembersQuery = graphql(`
|
||||
query SettingsWorkspacesMembers($slug: String!) {
|
||||
workspaceBySlug(slug: $slug) {
|
||||
...SettingsWorkspacesMembers_Workspace
|
||||
}
|
||||
}
|
||||
`)
|
||||
|
||||
export const settingsWorkspacesMembersTableQuery = graphql(`
|
||||
query SettingsWorkspacesMembersTable($slug: String!) {
|
||||
workspaceBySlug(slug: $slug) {
|
||||
...SettingsWorkspacesMembersTable_Workspace
|
||||
...SettingsWorkspacesMembersCounts_Workspace
|
||||
}
|
||||
}
|
||||
`)
|
||||
@@ -83,11 +75,15 @@ export const settingsWorkspacesMembersSearchQuery = graphql(`
|
||||
query SettingsWorkspacesMembersSearch($slug: String!, $filter: WorkspaceTeamFilter) {
|
||||
workspaceBySlug(slug: $slug) {
|
||||
id
|
||||
role
|
||||
...SettingsWorkspacesMembersTableHeader_Workspace
|
||||
team(filter: $filter, limit: 250) {
|
||||
items {
|
||||
id
|
||||
...SettingsWorkspacesMembersTable_WorkspaceCollaborator
|
||||
}
|
||||
cursor
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,31 +21,22 @@ import { graphql } from '~/lib/common/generated/gql'
|
||||
import { settingsWorkspacesMembersQuery } from '~/lib/settings/graphql/queries'
|
||||
import type { LayoutPageTabItem } from '~~/lib/layout/helpers/components'
|
||||
import { useOnWorkspaceUpdated } from '~/lib/workspaces/composables/management'
|
||||
import { WorkspaceJoinRequestStatus } from '~~/lib/common/generated/gql/graphql'
|
||||
import { settingsWorkspaceRoutes } from '~/lib/common/helpers/route'
|
||||
import { useWorkspaceUsage } from '~/lib/workspaces/composables/usage'
|
||||
import { WorkspaceJoinRequestStatus } from '~/lib/common/generated/gql/graphql'
|
||||
|
||||
graphql(`
|
||||
fragment SettingsWorkspacesMembers_Workspace on Workspace {
|
||||
fragment SettingsWorkspacesMembersCounts_Workspace on Workspace {
|
||||
id
|
||||
role
|
||||
team {
|
||||
items {
|
||||
id
|
||||
role
|
||||
}
|
||||
}
|
||||
invitedTeam {
|
||||
user {
|
||||
id
|
||||
}
|
||||
id
|
||||
}
|
||||
adminWorkspacesJoinRequests {
|
||||
items {
|
||||
id
|
||||
status
|
||||
}
|
||||
totalCount
|
||||
}
|
||||
}
|
||||
`)
|
||||
@@ -78,6 +69,7 @@ const joinRequestCount = computed(
|
||||
(item) => item.status === WorkspaceJoinRequestStatus.Pending
|
||||
).length
|
||||
)
|
||||
|
||||
const tabItems = computed<LayoutPageTabItem[]>(() => [
|
||||
{ title: 'Members', id: 'members', count: memberTotalCount.value },
|
||||
{ title: 'Guests', id: 'guests', count: guestCount.value },
|
||||
|
||||
@@ -1,17 +1,8 @@
|
||||
<template>
|
||||
<SettingsWorkspacesMembersGuestsTable :workspace="workspace" :workspace-slug="slug" />
|
||||
<SettingsWorkspacesMembersGuestsTable :workspace-slug="slug" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useQuery } from '@vue/apollo-composable'
|
||||
import { settingsWorkspacesMembersTableQuery } from '~/lib/settings/graphql/queries'
|
||||
|
||||
const route = useRoute()
|
||||
const slug = computed(() => (route.params.slug as string) || '')
|
||||
|
||||
const { result } = useQuery(settingsWorkspacesMembersTableQuery, () => ({
|
||||
slug: slug.value
|
||||
}))
|
||||
|
||||
const workspace = computed(() => result.value?.workspaceBySlug)
|
||||
</script>
|
||||
|
||||
@@ -1,15 +1,8 @@
|
||||
<template>
|
||||
<SettingsWorkspacesMembersTable :workspace="workspace" :workspace-slug="slug" />
|
||||
<SettingsWorkspacesMembersTable :workspace-slug="slug" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useQuery } from '@vue/apollo-composable'
|
||||
import { settingsWorkspacesMembersTableQuery } from '~/lib/settings/graphql/queries'
|
||||
|
||||
const route = useRoute()
|
||||
const slug = computed(() => (route.params.slug as string) || '')
|
||||
const { result } = useQuery(settingsWorkspacesMembersTableQuery, () => ({
|
||||
slug: slug.value
|
||||
}))
|
||||
const workspace = computed(() => result.value?.workspaceBySlug)
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user