import { UserIHaveSentInviteTo } from './toDesktop'; export type InvitePermissionKey = | 'canBuild' | 'canManageBilling' | 'canManageUsers' | 'canRelease'; export type InvitePermissionFlags = Record; export const INVITE_PERMISSION_LABELS: Record = { canBuild: 'Can build', canManageBilling: 'Can manage billing', canManageUsers: 'Can manage users', canRelease: 'Can release', }; export const formatInvitePermissionSummary = ( permissions: Partial, ): string => { const enabled = ( Object.entries(permissions) as Array< [InvitePermissionKey, boolean | undefined] > ) .filter(([, value]) => value === true) .map(([key]) => INVITE_PERMISSION_LABELS[key]); return enabled.join(', '); }; export type NormalizedInvitePermissions = { canBuild: boolean; canManageBilling: boolean; canManageUsers: boolean; canRelease: boolean; }; export const FULL_OWNER_PERMISSIONS: NormalizedInvitePermissions = { canBuild: true, canManageBilling: true, canManageUsers: true, canRelease: true, }; export const normalizeInvitePermissions = ( permissions?: UserIHaveSentInviteTo['permissions'], ): NormalizedInvitePermissions => ({ canBuild: permissions?.canBuild === true, canManageBilling: permissions?.canManageBilling === true, canManageUsers: permissions?.canManageUsers === true, canRelease: permissions?.canRelease === true, });