From bf454bc00338eda95c91a042cbd00bff7a93f450 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20Jedlicska?= <57442769+gjedlicska@users.noreply.github.com> Date: Mon, 14 Apr 2025 06:24:20 +0200 Subject: [PATCH 1/3] fix(gatekeeper): fix yearly upgrade not working (#4393) --- .../services/subscriptions/upgradeWorkspaceSubscription.ts | 2 ++ packages/shared/src/core/helpers/error.ts | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts b/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts index e754c5715..85af4d58f 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts @@ -353,6 +353,8 @@ export const upgradeWorkspaceSubscriptionFactoryNew = default: throwUncoveredError(billingInterval) } + // must update the billing interval to the new one + workspaceSubscription.billingInterval = billingInterval const subscriptionData: SubscriptionDataInput = cloneDeep( workspaceSubscription.subscriptionData diff --git a/packages/shared/src/core/helpers/error.ts b/packages/shared/src/core/helpers/error.ts index 3682c4d82..81f164c0e 100644 --- a/packages/shared/src/core/helpers/error.ts +++ b/packages/shared/src/core/helpers/error.ts @@ -29,8 +29,11 @@ export function throwUncoveredError(e: never): never { export class UncoveredError extends Error {} -export function createUncoveredError(e: never) { - return new UncoveredError(`Uncovered error case ${e}.`) +export function createUncoveredError(e: unknown) { + let errorRepr = e + + if (typeof e === 'object') errorRepr = JSON.stringify(e) + return new UncoveredError(`Uncovered error case ${errorRepr}.`) } /** From 08f9ca1d647bb7e36a9b097f8766e7b6c0ce3896 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Mon, 14 Apr 2025 05:25:16 +0100 Subject: [PATCH 2/3] chore(server/logging): more metadata to preview consumption log (#4388) --- packages/server/modules/previews/resultListener.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/server/modules/previews/resultListener.ts b/packages/server/modules/previews/resultListener.ts index ba5b2a2df..4a5d24685 100644 --- a/packages/server/modules/previews/resultListener.ts +++ b/packages/server/modules/previews/resultListener.ts @@ -76,7 +76,9 @@ export const consumePreviewResultFactory = jobId: previewResult.jobId, status: previewResult.status, durationSeconds: previewResult.result.durationSeconds, - projectId: streamId + projectId: streamId, + streamId, // for legacy reasons + objectId }) const previewMessage = From 0519719e4d87f3b0f59bdaf310ac17adf0cf3947 Mon Sep 17 00:00:00 2001 From: Mike Date: Mon, 14 Apr 2025 09:40:58 +0200 Subject: [PATCH 3/3] Fix: FF cleanup and various smaller fixes (#4398) --- .../frontend-2/components/header/nav/Bar.vue | 4 +- .../components/project/model-page/Header.vue | 7 +-- .../components/project/page/Header.vue | 3 +- .../page/collaborators/Collaborators.vue | 6 +-- .../components/projects/Dashboard.vue | 3 +- .../projects/ProjectDashboardCard.vue | 5 +- .../components/viewer/PreSetupWrapper.vue | 3 +- .../components/workspace/CreatePage.vue | 2 - .../components/workspace/ProjectList.vue | 3 +- .../components/workspace/header/Header.vue | 52 ++++++------------- .../middleware/004-onboarding.global.ts | 3 +- 11 files changed, 29 insertions(+), 62 deletions(-) diff --git a/packages/frontend-2/components/header/nav/Bar.vue b/packages/frontend-2/components/header/nav/Bar.vue index befa3e546..55069028a 100644 --- a/packages/frontend-2/components/header/nav/Bar.vue +++ b/packages/frontend-2/components/header/nav/Bar.vue @@ -49,7 +49,6 @@ import { loginRoute } from '~~/lib/common/helpers/route' import type { Optional } from '@speckle/shared' const isWorkspacesEnabled = useIsWorkspacesEnabled() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const { activeUser, isLoggedIn } = useActiveUser() const route = useRoute() const router = useRouter() @@ -66,7 +65,6 @@ const loginUrl = computed(() => ) const showWorkspaceSwitcher = computed( - () => - isWorkspacesEnabled.value && isWorkspaceNewPlansEnabled.value && activeUser.value + () => isWorkspacesEnabled.value && activeUser.value ) diff --git a/packages/frontend-2/components/project/model-page/Header.vue b/packages/frontend-2/components/project/model-page/Header.vue index 6ecd0072f..36c3d777d 100644 --- a/packages/frontend-2/components/project/model-page/Header.vue +++ b/packages/frontend-2/components/project/model-page/Header.vue @@ -3,10 +3,8 @@ @@ -57,5 +55,4 @@ const props = defineProps<{ }>() const isWorkspacesEnabled = useIsWorkspacesEnabled() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() diff --git a/packages/frontend-2/components/project/page/Header.vue b/packages/frontend-2/components/project/page/Header.vue index fd0391252..d595f0690 100644 --- a/packages/frontend-2/components/project/page/Header.vue +++ b/packages/frontend-2/components/project/page/Header.vue @@ -4,7 +4,7 @@ @@ -58,5 +58,4 @@ defineProps<{ }>() const isWorkspacesEnabled = useIsWorkspacesEnabled() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() diff --git a/packages/frontend-2/components/project/page/collaborators/Collaborators.vue b/packages/frontend-2/components/project/page/collaborators/Collaborators.vue index 1a51d3088..68d7ad0ad 100644 --- a/packages/frontend-2/components/project/page/collaborators/Collaborators.vue +++ b/packages/frontend-2/components/project/page/collaborators/Collaborators.vue @@ -8,10 +8,7 @@
-
+

General access

route.params.id as string) const route = useRoute() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const apollo = useApolloClient().client const mixpanel = useMixpanel() const cancelInvite = useCancelProjectInvite() diff --git a/packages/frontend-2/components/projects/Dashboard.vue b/packages/frontend-2/components/projects/Dashboard.vue index 1c4f92e0a..425a131db 100644 --- a/packages/frontend-2/components/projects/Dashboard.vue +++ b/packages/frontend-2/components/projects/Dashboard.vue @@ -107,7 +107,6 @@ const openNewProject = ref(false) const showLoadingBar = ref(false) const areQueriesLoading = useQueryLoading() const isWorkspacesEnabled = useIsWorkspacesEnabled() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() useUserProjectsUpdatedTracking() const { @@ -131,7 +130,7 @@ const { : selectedRoles.value?.length ? selectedRoles.value : null, - personalOnly: isWorkspaceNewPlansEnabled.value + personalOnly: isWorkspacesEnabled.value }, cursor: null as Nullable })) diff --git a/packages/frontend-2/components/projects/ProjectDashboardCard.vue b/packages/frontend-2/components/projects/ProjectDashboardCard.vue index ac9ddc602..64b8cafc5 100644 --- a/packages/frontend-2/components/projects/ProjectDashboardCard.vue +++ b/packages/frontend-2/components/projects/ProjectDashboardCard.vue @@ -20,7 +20,10 @@ Updated {{ updatedAt.relative }} - + {{ RoleInfo.Stream[project.role as StreamRoles].title }} diff --git a/packages/frontend-2/components/viewer/PreSetupWrapper.vue b/packages/frontend-2/components/viewer/PreSetupWrapper.vue index 2fcdac2cc..da26ddc2b 100644 --- a/packages/frontend-2/components/viewer/PreSetupWrapper.vue +++ b/packages/frontend-2/components/viewer/PreSetupWrapper.vue @@ -8,7 +8,7 @@ @@ -161,7 +161,6 @@ const projectId = writableAsyncComputed({ asyncRead: false }) -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const state = useSetupViewer({ projectId }) diff --git a/packages/frontend-2/components/workspace/CreatePage.vue b/packages/frontend-2/components/workspace/CreatePage.vue index 825d0c09c..0725db862 100644 --- a/packages/frontend-2/components/workspace/CreatePage.vue +++ b/packages/frontend-2/components/workspace/CreatePage.vue @@ -60,7 +60,6 @@ defineProps<{ const { currentStep, resetWizardState } = useWorkspacesWizard() const mixpanel = useMixpanel() const { logout } = useAuthManager() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const isWorkspacesEnabled = useIsWorkspacesEnabled() const { result } = useQuery(activeUserWorkspaceExistenceCheckQuery) @@ -72,7 +71,6 @@ const isFirstStep = computed(() => currentStep.value === WizardSteps.Details) const requiresWorkspaceCreation = computed(() => { return ( isWorkspacesEnabled.value && - isWorkspaceNewPlansEnabled.value && (result.value?.activeUser?.workspaces?.totalCount || 0) === 0 && // Legacy projects (result.value?.activeUser?.versions.totalCount || 0) === 0 diff --git a/packages/frontend-2/components/workspace/ProjectList.vue b/packages/frontend-2/components/workspace/ProjectList.vue index 45d42811e..68da2d77a 100644 --- a/packages/frontend-2/components/workspace/ProjectList.vue +++ b/packages/frontend-2/components/workspace/ProjectList.vue @@ -14,7 +14,7 @@ @@ -148,7 +148,6 @@ const { } = useDebouncedTextInput({ debouncedBy: 800 }) -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const showMoveProjectsDialog = ref(false) const selectedRoles = ref(undefined as Optional) diff --git a/packages/frontend-2/components/workspace/header/Header.vue b/packages/frontend-2/components/workspace/header/Header.vue index 3fed77c71..476efe11c 100644 --- a/packages/frontend-2/components/workspace/header/Header.vue +++ b/packages/frontend-2/components/workspace/header/Header.vue @@ -4,41 +4,19 @@
-
- - +
+

+ Hello, {{ activeUser?.name }} +

+ + + {{ workspaceInfo.role?.split(':').reverse()[0] }} + +
@@ -113,7 +91,6 @@ const props = defineProps<{ workspaceInfo: WorkspaceHeader_WorkspaceFragment }>() -const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const { activeUser } = useActiveUser() const isWorkspaceAdmin = computed( @@ -122,6 +99,9 @@ const isWorkspaceAdmin = computed( const isWorkspaceGuest = computed( () => props.workspaceInfo.role === Roles.Workspace.Guest ) +const isWorkspaceMember = computed( + () => props.workspaceInfo.role === Roles.Workspace.Member +) const canCreateProject = computed( () => props.workspaceInfo.permissions.canCreateProject diff --git a/packages/frontend-2/middleware/004-onboarding.global.ts b/packages/frontend-2/middleware/004-onboarding.global.ts index 6769361c8..869afb8c0 100644 --- a/packages/frontend-2/middleware/004-onboarding.global.ts +++ b/packages/frontend-2/middleware/004-onboarding.global.ts @@ -94,10 +94,9 @@ export default defineNuxtRouteMiddleware(async (to) => { // 3. Workspace join/create redirect // Everything past this point is only relevant for workspace enabled instances - const isWorkspaceNewPlansEnabled = useWorkspaceNewPlansEnabled() const isWorkspacesEnabled = useIsWorkspacesEnabled() - if (!isWorkspacesEnabled.value || !isWorkspaceNewPlansEnabled.value) return + if (!isWorkspacesEnabled.value) return const { data: workspaceExistenceData } = await client .query({