Update discoverability confirmation dialog

This commit is contained in:
andrewwallacespeckle
2025-06-05 15:46:06 +02:00
parent 81137bcc3b
commit 3468db5015
4 changed files with 16 additions and 10 deletions
@@ -120,7 +120,7 @@ const handleSeatTypeChange = (newValue: WorkspaceSeatType) => {
if (newValue === currentSeatType.value) return
// If setting to Editor on paid plan, show confirmation
if (newValue === SeatTypes.Editor && isSelfServePlan) {
if (newValue === SeatTypes.Editor && isSelfServePlan.value) {
pendingNewSeatType.value = newValue
showConfirmSeatTypeDialog.value = true
return
@@ -66,6 +66,9 @@
<p class="text-body-xs text-foreground mb-2">
This will allow users with verified domain emails to join automatically without
admin approval.
<span v-if="workspace.defaultSeatType === SeatTypes.Editor && isSelfServePlan">
They will join on a paid Editor seat.
</span>
</p>
<p class="text-body-xs text-foreground">Are you sure you want to enable this?</p>
</SettingsConfirmDialog>
@@ -73,7 +76,7 @@
</template>
<script setup lang="ts">
import { Roles } from '@speckle/shared'
import { Roles, SeatTypes } from '@speckle/shared'
import { useMutation } from '@vue/apollo-composable'
import { graphql } from '~/lib/common/generated/gql'
import type { SettingsWorkspacesSecurityDiscoverability_WorkspaceFragment } from '~/lib/common/generated/gql/graphql'
@@ -82,6 +85,7 @@ import {
workspaceUpdateDiscoverabilityMutation,
workspaceUpdateAutoJoinMutation
} from '~/lib/workspaces/graphql/mutations'
import { useWorkspacePlan } from '~/lib/workspaces/composables/plan'
enum JoinPolicy {
AdminApproval = 'admin-approval',
@@ -99,6 +103,7 @@ graphql(`
}
discoverabilityEnabled
discoverabilityAutoJoinEnabled
defaultSeatType
}
`)
@@ -112,6 +117,7 @@ const { mutate: updateDiscoverability } = useMutation(
)
const { mutate: updateAutoJoin } = useMutation(workspaceUpdateAutoJoinMutation)
const { triggerNotification } = useGlobalToast()
const { isSelfServePlan } = useWorkspacePlan(props.workspace.slug)
const showConfirmJoinPolicyDialog = ref(false)
const pendingIsAutoJoinEnabled = ref(false)
@@ -133,7 +133,7 @@ type Documents = {
"\n query WorkspaceAvailableEditorSeats($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n seats {\n editors {\n available\n }\n }\n }\n }\n": typeof types.WorkspaceAvailableEditorSeatsDocument,
"\n fragment SettingsWorkspacesRegionsSelect_ServerRegionItem on ServerRegionItem {\n id\n key\n name\n description\n }\n": typeof types.SettingsWorkspacesRegionsSelect_ServerRegionItemFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDefaultSeat_Workspace on Workspace {\n id\n slug\n defaultSeatType\n discoverabilityAutoJoinEnabled\n role\n }\n": typeof types.SettingsWorkspacesSecurityDefaultSeat_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n }\n": typeof types.SettingsWorkspacesSecurityDiscoverability_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n defaultSeatType\n }\n": typeof types.SettingsWorkspacesSecurityDiscoverability_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainManagement_Workspace on Workspace {\n id\n role\n discoverabilityEnabled\n domainBasedMembershipProtectionEnabled\n hasAccessToDomainBasedSecurityPolicies: hasAccessToFeature(\n featureName: domainBasedSecurityPolicies\n )\n hasAccessToSSO: hasAccessToFeature(featureName: oidcSso)\n domains {\n id\n domain\n }\n }\n": typeof types.SettingsWorkspacesSecurityDomainManagement_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainProtection_Workspace on Workspace {\n id\n slug\n role\n domainBasedMembershipProtectionEnabled\n hasAccessToDomainBasedSecurityPolicies: hasAccessToFeature(\n featureName: domainBasedSecurityPolicies\n )\n domains {\n id\n }\n }\n": typeof types.SettingsWorkspacesSecurityDomainProtection_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain on WorkspaceDomain {\n id\n domain\n }\n": typeof types.SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomainFragmentDoc,
@@ -578,7 +578,7 @@ const documents: Documents = {
"\n query WorkspaceAvailableEditorSeats($slug: String!) {\n workspaceBySlug(slug: $slug) {\n id\n seats {\n editors {\n available\n }\n }\n }\n }\n": types.WorkspaceAvailableEditorSeatsDocument,
"\n fragment SettingsWorkspacesRegionsSelect_ServerRegionItem on ServerRegionItem {\n id\n key\n name\n description\n }\n": types.SettingsWorkspacesRegionsSelect_ServerRegionItemFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDefaultSeat_Workspace on Workspace {\n id\n slug\n defaultSeatType\n discoverabilityAutoJoinEnabled\n role\n }\n": types.SettingsWorkspacesSecurityDefaultSeat_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n }\n": types.SettingsWorkspacesSecurityDiscoverability_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n defaultSeatType\n }\n": types.SettingsWorkspacesSecurityDiscoverability_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainManagement_Workspace on Workspace {\n id\n role\n discoverabilityEnabled\n domainBasedMembershipProtectionEnabled\n hasAccessToDomainBasedSecurityPolicies: hasAccessToFeature(\n featureName: domainBasedSecurityPolicies\n )\n hasAccessToSSO: hasAccessToFeature(featureName: oidcSso)\n domains {\n id\n domain\n }\n }\n": types.SettingsWorkspacesSecurityDomainManagement_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainProtection_Workspace on Workspace {\n id\n slug\n role\n domainBasedMembershipProtectionEnabled\n hasAccessToDomainBasedSecurityPolicies: hasAccessToFeature(\n featureName: domainBasedSecurityPolicies\n )\n domains {\n id\n }\n }\n": types.SettingsWorkspacesSecurityDomainProtection_WorkspaceFragmentDoc,
"\n fragment SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomain on WorkspaceDomain {\n id\n domain\n }\n": types.SettingsWorkspacesSecurityDomainRemoveDialog_WorkspaceDomainFragmentDoc,
@@ -1397,7 +1397,7 @@ export function graphql(source: "\n fragment SettingsWorkspacesSecurityDefaultS
/**
* 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 SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n }\n"];
export function graphql(source: "\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n defaultSeatType\n }\n"): (typeof documents)["\n fragment SettingsWorkspacesSecurityDiscoverability_Workspace on Workspace {\n id\n slug\n role\n domains {\n id\n domain\n }\n discoverabilityEnabled\n discoverabilityAutoJoinEnabled\n defaultSeatType\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