Files
speckle-server/packages/frontend-2/middleware/requireDiscoverableWorkspaces.ts
T
andrewwallacespeckle c384996978 refactor(fe): New workspace actions route to avoid slug conflicts (#4107)
* Remove blockedSlugs

* Update workspace action routes to use /actions

* Re-add blockedWords
2025-03-04 14:43:07 +00:00

31 lines
1.1 KiB
TypeScript

import { activeUserWorkspaceExistenceCheckQuery } from '~/lib/auth/graphql/queries'
import { useApolloClientFromNuxt } from '~~/lib/common/composables/graphql'
import { convertThrowIntoFetchResult } from '~~/lib/common/helpers/graphql'
import { workspaceCreateRoute } from '~~/lib/common/helpers/route'
/**
* Redirect user to /workspaces/actions/create, if they have no discoverable workspaces
*/
export default defineNuxtRouteMiddleware(async (to) => {
const isWorkspacesEnabled = useIsWorkspacesEnabled()
if (!isWorkspacesEnabled.value) return
const client = useApolloClientFromNuxt()
const { data } = await client
.query({
query: activeUserWorkspaceExistenceCheckQuery
})
.catch(convertThrowIntoFetchResult)
const hasDiscoverableWorkspaces =
(data?.activeUser?.discoverableWorkspaces?.length ?? 0) > 0 ||
(data?.activeUser?.workspaceJoinRequests?.totalCount ?? 0) > 0
const isGoingToCreateWorkspace = to.path === workspaceCreateRoute()
if (!hasDiscoverableWorkspaces && !isGoingToCreateWorkspace) {
return navigateTo(workspaceCreateRoute())
}
})