From 211922b6a6a3ea9edf65165e9a0d6f773a1ef956 Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Wed, 30 Apr 2025 20:18:32 +0300 Subject: [PATCH] chore: get rid of all old workspace plan code (#4624) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * first batch of changes * tests fix * FE fixed * renaming constants * test fixes * moar test fixes * another test fix * reenable app rover check --------- Co-authored-by: Gergő Jedlicska --- .circleci/config.yml | 8 +- .../dui3/lib/common/generated/gql/graphql.ts | 11 - .../components/pricingTable/PricingTable.vue | 8 +- .../workspaces/billing/addOns/AddOns.vue | 10 +- .../billing/upgradeDialog/SelectAddOn.vue | 4 +- .../billing/upgradeDialog/Summary.vue | 11 +- .../billing/upgradeDialog/UpgradeDialog.vue | 10 +- .../workspace/wizard/step/AddOns.vue | 4 +- .../frontend-2/lib/billing/helpers/plan.ts | 6 - .../lib/common/generated/gql/graphql.ts | 11 - .../lib/settings/composables/menu.ts | 19 +- .../lib/workspaces/composables/plan.ts | 12 +- packages/server/.env-example | 16 - packages/server/.env.test-example | 17 - .../typedefs/gatekeeper.graphql | 13 - .../cli/commands/workspaces/set-plan.ts | 39 +- .../modules/core/graph/generated/graphql.ts | 11 - .../server/modules/core/repositories/users.ts | 49 +- .../tests/integration/objects.graph.spec.ts | 3 +- .../tests/integration/objects.rest.spec.ts | 4 +- .../core/tests/integration/subs.graph.spec.ts | 8 +- .../graph/generated/graphql.ts | 11 - .../modules/gatekeeper/domain/billing.ts | 48 +- .../modules/gatekeeper/domain/operations.ts | 4 - .../gatekeeper/events/eventListener.ts | 4 +- .../gatekeeper/graph/resolvers/index.ts | 79 +- .../modules/gatekeeper/helpers/plans.ts | 17 +- packages/server/modules/gatekeeper/index.ts | 143 +--- .../gatekeeper/repositories/billing.ts | 49 +- .../services/checkout/startCheckoutSession.ts | 7 - .../services/featureAuthorization.ts | 2 - .../gatekeeper/services/prices.spec.ts | 31 +- .../modules/gatekeeper/services/prices.ts | 4 +- .../gatekeeper/services/subscriptions.ts | 31 +- .../manageSubscriptionDownscale.ts | 128 +-- .../upgradeWorkspaceSubscription.ts | 236 +----- .../gatekeeper/services/trialEmails.ts | 134 --- .../modules/gatekeeper/services/upgrades.ts | 6 - .../gatekeeper/services/workspacePlans.ts | 26 - packages/server/modules/gatekeeper/stripe.ts | 49 +- .../integration/billingRepositories.spec.ts | 132 +-- .../tests/integration/prices.spec.ts | 4 +- .../tests/integration/workspace.graph.spec.ts | 26 +- .../gatekeeper/tests/unit/checkout.spec.ts | 43 +- .../tests/unit/featureAuthorization.spec.ts | 32 +- .../gatekeeper/tests/unit/readOnly.spec.ts | 40 - .../tests/unit/subscriptions.spec.ts | 777 +++--------------- .../tests/unit/workspacePlans.spec.ts | 122 +-- .../modules/gatekeeperCore/domain/billing.ts | 29 +- .../20250424064652_migrate_old_plans.ts | 37 + .../modules/workspaces/domain/operations.ts | 12 +- .../workspaces/events/eventListener.ts | 175 +--- .../workspaces/graph/resolvers/workspaces.ts | 16 +- .../modules/workspaces/services/invites.ts | 26 +- .../modules/workspaces/services/management.ts | 8 +- .../modules/workspaces/services/projects.ts | 125 +-- .../workspaces/tests/helpers/creation.ts | 44 +- .../workspaces/tests/helpers/invites.ts | 37 +- .../tests/integration/invites.graph.spec.ts | 20 +- .../tests/integration/projects.graph.spec.ts | 235 +++--- .../tests/integration/regions.graph.spec.ts | 40 +- .../tests/integration/subs.graph.spec.ts | 7 +- .../tests/unit/events/eventListener.spec.ts | 88 -- .../tests/unit/services/management.spec.ts | 5 +- .../tests/unit/services/projects.spec.ts | 52 +- .../workspacesCore/domain/operations.ts | 5 +- .../workspacesCore/repositories/rolesSeats.ts | 2 +- .../server/test/graphql/generated/graphql.ts | 39 +- packages/server/test/graphql/projects.ts | 4 + packages/server/test/graphql/workspaces.ts | 1 + .../shared/src/authz/fragments/workspaces.ts | 17 +- .../canCreateWorkspaceProject.spec.ts | 12 +- .../shared/src/workspaces/helpers/features.ts | 35 - .../src/workspaces/helpers/plans.spec.ts | 39 - .../shared/src/workspaces/helpers/plans.ts | 110 +-- .../speckle-server/templates/_helpers.tpl | 36 - 76 files changed, 814 insertions(+), 2901 deletions(-) delete mode 100644 packages/server/modules/gatekeeper/services/trialEmails.ts create mode 100644 packages/server/modules/gatekeeperCore/migrations/20250424064652_migrate_old_plans.ts delete mode 100644 packages/server/modules/workspaces/tests/unit/events/eventListener.spec.ts diff --git a/.circleci/config.yml b/.circleci/config.yml index c18fbe92f..54a4f18e0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -541,10 +541,10 @@ jobs: command: 'IGNORE_MISSING_MIRATIONS=true yarn cli graphql introspect' working_directory: 'packages/server' - # - run: - # name: Checking for GQL schema breakages against app.speckle.systems - # command: 'yarn rover graph check Speckle-Server@app-speckle-systems --schema ./introspected-schema.graphql' - # working_directory: 'packages/server' + - run: + name: Checking for GQL schema breakages against app.speckle.systems + command: 'yarn rover graph check Speckle-Server@app-speckle-systems --schema ./introspected-schema.graphql' + working_directory: 'packages/server' - run: name: Checking for GQL schema breakages against latest.speckle.systems diff --git a/packages/dui3/lib/common/generated/gql/graphql.ts b/packages/dui3/lib/common/generated/gql/graphql.ts index 91ca5203f..a30bbdd95 100644 --- a/packages/dui3/lib/common/generated/gql/graphql.ts +++ b/packages/dui3/lib/common/generated/gql/graphql.ts @@ -1913,11 +1913,8 @@ export type OnboardingCompletionInput = { }; export enum PaidWorkspacePlans { - Business = 'business', - Plus = 'plus', Pro = 'pro', ProUnlimited = 'proUnlimited', - Starter = 'starter', Team = 'team', TeamUnlimited = 'teamUnlimited' } @@ -4848,9 +4845,7 @@ export type WorkspacePlanPrice = { export enum WorkspacePlanStatuses { CancelationScheduled = 'cancelationScheduled', Canceled = 'canceled', - Expired = 'expired', PaymentFailed = 'paymentFailed', - Trial = 'trial', Valid = 'valid' } @@ -4862,16 +4857,10 @@ export type WorkspacePlanUsage = { export enum WorkspacePlans { Academia = 'academia', - Business = 'business', - BusinessInvoiced = 'businessInvoiced', Free = 'free', - Plus = 'plus', - PlusInvoiced = 'plusInvoiced', Pro = 'pro', ProUnlimited = 'proUnlimited', ProUnlimitedInvoiced = 'proUnlimitedInvoiced', - Starter = 'starter', - StarterInvoiced = 'starterInvoiced', Team = 'team', TeamUnlimited = 'teamUnlimited', TeamUnlimitedInvoiced = 'teamUnlimitedInvoiced', diff --git a/packages/frontend-2/components/pricingTable/PricingTable.vue b/packages/frontend-2/components/pricingTable/PricingTable.vue index c4146f91f..d5b5b4bb1 100644 --- a/packages/frontend-2/components/pricingTable/PricingTable.vue +++ b/packages/frontend-2/components/pricingTable/PricingTable.vue @@ -11,7 +11,7 @@ :workspace-id="props.workspaceId" :has-subscription="!!subscription" :currency="props.currency" - @on-upgrade-click="toggleUpgradeDialog(plan as PaidWorkspacePlansNew)" + @on-upgrade-click="toggleUpgradeDialog(plan as PaidWorkspacePlans)" /> (null) +const planToUpgrade = ref(null) const plans = computed(() => [ WorkspacePlans.Free, @@ -69,7 +69,7 @@ const plans = computed(() => [ const isAdmin = computed(() => props.role === Roles.Workspace.Admin) -const toggleUpgradeDialog = (plan: PaidWorkspacePlansNew) => { +const toggleUpgradeDialog = (plan: PaidWorkspacePlans) => { planToUpgrade.value = plan isUpgradeDialogOpen.value = !isUpgradeDialogOpen.value 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 38512b2a5..cae4c7fbb 100644 --- a/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue +++ b/packages/frontend-2/components/settings/workspaces/billing/addOns/AddOns.vue @@ -40,7 +40,7 @@ import { useWorkspacePlan } from '~~/lib/workspaces/composables/plan' import { useWorkspaceAddonPrices } from '~/lib/billing/composables/prices' import { formatPrice } from '~/lib/billing/helpers/plan' -import { PaidWorkspacePlansNew, type MaybeNullOrUndefined } from '@speckle/shared' +import { PaidWorkspacePlans, type MaybeNullOrUndefined } from '@speckle/shared' import { BillingInterval, Currency } from '~/lib/common/generated/gql/graphql' import { useActiveWorkspace } from '~/lib/workspaces/composables/activeWorkspace' import { useMixpanel } from '~~/lib/core/composables/mp' @@ -101,15 +101,15 @@ const unlimitedAddOnButton = computed(() => ({ })) const planToUpgrade = computed(() => { - return plan.value?.name === PaidWorkspacePlansNew.Team - ? PaidWorkspacePlansNew.TeamUnlimited - : PaidWorkspacePlansNew.ProUnlimited + return plan.value?.name === PaidWorkspacePlans.Team + ? PaidWorkspacePlans.TeamUnlimited + : PaidWorkspacePlans.ProUnlimited }) const addonPrice = computed(() => { if (!plan.value) return null const addonPrice = - addonPrices.value?.[currency.value]?.[plan.value.name as PaidWorkspacePlansNew] + addonPrices.value?.[currency.value]?.[plan.value.name as PaidWorkspacePlans] if (!addonPrice) return null return formatPrice({ diff --git a/packages/frontend-2/components/settings/workspaces/billing/upgradeDialog/SelectAddOn.vue b/packages/frontend-2/components/settings/workspaces/billing/upgradeDialog/SelectAddOn.vue index 0308da93d..ebebbae12 100644 --- a/packages/frontend-2/components/settings/workspaces/billing/upgradeDialog/SelectAddOn.vue +++ b/packages/frontend-2/components/settings/workspaces/billing/upgradeDialog/SelectAddOn.vue @@ -6,7 +6,7 @@