Files
speckle-server/packages/server/modules/workspaces/helpers/roles.ts
T
Kristaps Fabians Geikins 4b06f42db7 chore(server): run TS files directly (no compilation) (#5134)
* sort of works

* type fixes

* added option to run old way too
2025-07-23 11:20:40 +02:00

30 lines
929 B
TypeScript

import type { WorkspaceRoles } from '@speckle/shared'
import { Roles } from '@speckle/shared'
import type { WorkspaceAcl } from '@/modules/workspacesCore/domain/types'
import { WorkspaceRole } from '@/modules/core/graph/generated/graphql'
export const isUserLastWorkspaceAdmin = (
workspaceRoles: Pick<WorkspaceAcl, 'userId' | 'role'>[],
userId: string
): boolean => {
const workspaceAdmins = workspaceRoles.filter(
({ role }) => role === Roles.Workspace.Admin
)
const isUserAdmin = workspaceAdmins.some((role) => role.userId === userId)
return isUserAdmin && workspaceAdmins.length === 1
}
export const mapGqlWorkspaceRoleToMainRole = (
gqlRole: WorkspaceRole
): WorkspaceRoles => {
switch (gqlRole) {
case WorkspaceRole.Admin:
return Roles.Workspace.Admin
case WorkspaceRole.Member:
return Roles.Workspace.Member
case WorkspaceRole.Guest:
return Roles.Workspace.Guest
}
}