From e216f0d42bb725bdf7e1d3fd78d4927ca4899fb8 Mon Sep 17 00:00:00 2001 From: andrewwallacespeckle Date: Tue, 22 Apr 2025 13:19:59 +0100 Subject: [PATCH] Disable seat type change if expired or cancelled --- .../lib/settings/composables/menu.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/frontend-2/lib/settings/composables/menu.ts b/packages/frontend-2/lib/settings/composables/menu.ts index 92bb0f006..ac39f3449 100644 --- a/packages/frontend-2/lib/settings/composables/menu.ts +++ b/packages/frontend-2/lib/settings/composables/menu.ts @@ -15,6 +15,7 @@ import { import type { LayoutMenuItem } from '@speckle/ui-components' import type { SettingsWorkspacesMembersActionsMenu_UserFragment } from '~/lib/common/generated/gql/graphql' import { useWorkspaceLastAdminCheck } from '~/lib/workspaces/composables/management' +import { useWorkspacePlan } from '~/lib/workspaces/composables/plan' graphql(` fragment SettingsMenu_Workspace on Workspace { @@ -153,6 +154,10 @@ export const useSettingsMembersActions = (params: { workspaceSlug: params.workspaceSlug.value || '' }) + const { statusIsExpired, statusIsCanceled } = useWorkspacePlan( + params.workspaceSlug.value || '' + ) + const targetUserRole = computed(() => { return params.targetUser.value.role }) @@ -241,15 +246,23 @@ export const useSettingsMembersActions = (params: { if (showUpgradeEditor.value) { headerItems.push({ title: 'Upgrade to editor...', - id: WorkspaceUserActionTypes.UpgradeEditor + id: WorkspaceUserActionTypes.UpgradeEditor, + disabled: statusIsExpired.value || statusIsCanceled.value, + disabledTooltip: 'This workspace has an expired or canceled plan' }) } if (showDowngradeEditor.value) { headerItems.push({ title: 'Downgrade to viewer...', id: WorkspaceUserActionTypes.DowngradeEditor, - disabled: targetUserRole.value === Roles.Workspace.Admin, - disabledTooltip: 'Admins must be on an Editor seat' + disabled: + targetUserRole.value === Roles.Workspace.Admin || + statusIsExpired.value || + statusIsCanceled.value, + disabledTooltip: + statusIsExpired.value || statusIsCanceled.value + ? 'This workspace has an expired or canceled plan' + : 'Admins must be on an Editor seat' }) } if (showUpdateProjectPermissions.value) {