/* * SonarQube * Copyright (C) 2009-2024 SonarSource SA * mailto:info AT sonarsource DOT com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import { Avatar, ContentCell, Note, TableRowInteractive } from 'design-system'; import * as React from 'react'; import { translate } from '../../helpers/l10n'; import { isPermissionDefinitionGroup } from '../../helpers/permissions'; import { isDefined } from '../../helpers/types'; import { PermissionDefinitions, PermissionUser } from '../../types/types'; import { Image } from '../common/Image'; import PermissionCell from './PermissionCell'; import usePermissionChange from './usePermissionChange'; interface Props { onToggle: (user: PermissionUser, permission: string) => Promise; permissions: PermissionDefinitions; selectedPermission?: string; user: PermissionUser; disabled?: boolean; removeOnly?: boolean; } export default function UserHolder(props: Props) { const { user, disabled, removeOnly, permissions, selectedPermission } = props; const { loading, handleCheck, modal } = usePermissionChange({ holder: user, onToggle: props.onToggle, permissions, removeOnly, }); const permissionCells = permissions.map((permission) => ( )); if (user.login === '') { return (
{user.name}

{translate('permission_templates.project_creators.explanation')}

{permissionCells}
); } return (
{user.name} {user.login}
{disabled && ( github )}
{isDefined(user.email) && (
{user.email}
)}
{permissionCells} {modal}
); }