import {RouteComponentProps} from 'react-router'; import styled from '@emotion/styled'; import {Client} from 'sentry/api'; import Button from 'sentry/components/button'; import ClippedBox from 'sentry/components/clippedBox'; import Confirm from 'sentry/components/confirm'; import Link from 'sentry/components/links/link'; import {Panel, PanelBody, PanelHeader} from 'sentry/components/panels'; import {IconDelete} from 'sentry/icons'; import {t} from 'sentry/locale'; import space from 'sentry/styles/space'; import {Scope} from 'sentry/types'; import recreateRoute from 'sentry/utils/recreateRoute'; import ProjectKeyCredentials from 'sentry/views/settings/project/projectKeys/projectKeyCredentials'; import {ProjectKey} from 'sentry/views/settings/project/projectKeys/types'; type Props = { access: Set; api: Client; data: ProjectKey; onRemove: (data: ProjectKey) => void; onToggle: (isActive: boolean, data: ProjectKey) => void; orgId: string; projectId: string; } & Pick, 'routes' | 'location' | 'params'>; function KeyRow({data, onRemove, onToggle, access, routes, location, params}: Props) { const handleEnable = () => onToggle(true, data); const handleDisable = () => onToggle(false, data); const editUrl = recreateRoute(`${data.id}/`, {routes, params, location}); const controlActive = access.has('project:write'); return ( <PanelHeaderLink to={editUrl}>{data.label}</PanelHeaderLink> {!data.isActive && ( <small> {' \u2014 '} {t('Disabled')} </small> )} onRemove(data)} confirmText={t('Remove Key')} message={t( 'Are you sure you want to remove this key? This action is irreversible.' )} >