From 943ca6481bfb4fea70bc74489fd83a824c691fdb Mon Sep 17 00:00:00 2001 From: Mike Date: Tue, 22 Apr 2025 11:20:48 +0200 Subject: [PATCH] Fix: Various workspace and copy fixes (#4519) --- .../workspaces/billing/addOns/AddOns.vue | 2 +- .../workspaces/security/sso/Wrapper.vue | 4 +-- .../lib/workspaces/composables/limits.ts | 16 ++-------- .../lib/workspaces/composables/plan.ts | 17 +++-------- .../lib/workspaces/composables/usage.ts | 30 ++++++++----------- 5 files changed, 22 insertions(+), 47 deletions(-) diff --git a/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue b/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue index 9cf507d75..38512b2a5 100644 --- a/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue +++ b/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue @@ -10,7 +10,7 @@ - Upgrade to Plus + Upgrade to Business @@ -37,7 +37,7 @@ v-if="!workspace.hasAccessToSSO && workspace.sso?.provider?.id" class="bg-foundation" > - SSO access requires an active Plus or Business subscription. + SSO access requires an active Business subscription. diff --git a/packages/frontend-2/lib/workspaces/composables/limits.ts b/packages/frontend-2/lib/workspaces/composables/limits.ts index d8168333d..1c02f8622 100644 --- a/packages/frontend-2/lib/workspaces/composables/limits.ts +++ b/packages/frontend-2/lib/workspaces/composables/limits.ts @@ -2,7 +2,6 @@ import { graphql } from '~/lib/common/generated/gql/gql' import { useQuery } from '@vue/apollo-composable' import { workspaceLimitsQuery } from '~/lib/workspaces/graphql/queries' import { WorkspacePlanConfigs } from '@speckle/shared' -import type { WorkspacePlanLimits_WorkspaceFragment } from '~/lib/common/generated/gql/graphql' graphql(` fragment WorkspacePlanLimits_Workspace on Workspace { @@ -14,29 +13,20 @@ graphql(` } `) -export const useLimitsState = () => - useState('limits', () => null) - export const useWorkspaceLimits = (slug: string) => { - const limitsState = useLimitsState() - - const { onResult } = useQuery( + const { result } = useQuery( workspaceLimitsQuery, () => ({ slug }), () => ({ - enabled: !!slug && slug !== limitsState.value?.slug + enabled: !!slug }) ) - onResult((result) => { - limitsState.value = result.data?.workspaceBySlug - }) - // Plan limits const limits = computed(() => { - const planName = limitsState.value?.plan?.name + const planName = result.value?.workspaceBySlug?.plan?.name if (!planName) return { projectCount: 0, diff --git a/packages/frontend-2/lib/workspaces/composables/plan.ts b/packages/frontend-2/lib/workspaces/composables/plan.ts index 344a15261..d2455fe59 100644 --- a/packages/frontend-2/lib/workspaces/composables/plan.ts +++ b/packages/frontend-2/lib/workspaces/composables/plan.ts @@ -9,7 +9,6 @@ import { isNewWorkspacePlan, doesPlanIncludeUnlimitedProjectsAddon } from '@speckle/shared' -import type { WorkspacesPlan_WorkspaceFragment } from '~/lib/common/generated/gql/graphql' import { WorkspacePlanStatuses, BillingInterval @@ -49,30 +48,22 @@ graphql(` } `) -export const usePlanState = () => - useState('plan', () => null) - export const useWorkspacePlan = (slug: string) => { - const planState = usePlanState() const isBillingIntegrationEnabled = useIsBillingIntegrationEnabled() const { prices } = useActiveWorkspacePlanPrices() - const { onResult } = useQuery( + const { result } = useQuery( workspacePlanQuery, () => ({ slug }), () => ({ - enabled: isBillingIntegrationEnabled.value && slug !== planState.value?.slug + enabled: isBillingIntegrationEnabled.value }) ) - onResult((result) => { - planState.value = result.data?.workspaceBySlug - }) - - const subscription = computed(() => planState.value?.subscription) - const plan = computed(() => planState.value?.plan) + const subscription = computed(() => result.value?.workspaceBySlug?.subscription) + const plan = computed(() => result.value?.workspaceBySlug?.plan) const currency = computed(() => subscription.value?.currency || 'usd') const isFreePlan = computed(() => plan.value?.name === UnpaidWorkspacePlans.Free) diff --git a/packages/frontend-2/lib/workspaces/composables/usage.ts b/packages/frontend-2/lib/workspaces/composables/usage.ts index 1c800b4e3..68765d1d4 100644 --- a/packages/frontend-2/lib/workspaces/composables/usage.ts +++ b/packages/frontend-2/lib/workspaces/composables/usage.ts @@ -1,7 +1,6 @@ import { graphql } from '~/lib/common/generated/gql/gql' import { useQuery } from '@vue/apollo-composable' import { workspaceUsageQuery } from '~/lib/workspaces/graphql/queries' -import type { WorkspaceUsage_WorkspaceFragment } from '~/lib/common/generated/gql/graphql' graphql(` fragment WorkspaceUsage_Workspace on Workspace { @@ -30,39 +29,34 @@ graphql(` } `) -export const useUsageState = () => - useState('usage', () => null) - export const useWorkspaceUsage = (slug: string) => { - const usageState = useUsageState() - - const { onResult } = useQuery( + const { result } = useQuery( workspaceUsageQuery, () => ({ slug }), () => ({ - enabled: !!slug && slug !== usageState.value?.slug + enabled: !!slug }) ) - onResult((result) => { - usageState.value = result.data?.workspaceBySlug - }) + const projectCount = computed( + () => result.value?.workspaceBySlug?.plan?.usage.projectCount ?? 0 + ) + const modelCount = computed( + () => result.value?.workspaceBySlug?.plan?.usage.modelCount ?? 0 + ) - const projectCount = computed(() => usageState.value?.plan?.usage.projectCount ?? 0) - const modelCount = computed(() => usageState.value?.plan?.usage.modelCount ?? 0) - - const teamCount = computed(() => usageState.value?.team?.totalCount ?? 0) + const teamCount = computed(() => result.value?.workspaceBySlug?.team?.totalCount ?? 0) const adminCount = computed( - () => usageState.value?.teamByRole.admins?.totalCount ?? 0 + () => result.value?.workspaceBySlug?.teamByRole.admins?.totalCount ?? 0 ) const memberCount = computed( - () => usageState.value?.teamByRole.members?.totalCount ?? 0 + () => result.value?.workspaceBySlug?.teamByRole.members?.totalCount ?? 0 ) const guestCount = computed( - () => usageState.value?.teamByRole.guests?.totalCount ?? 0 + () => result.value?.workspaceBySlug?.teamByRole.guests?.totalCount ?? 0 ) return {