/* * Wire * Copyright (C) 2023 Wire Swiss GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * */ import {MouseEvent, KeyboardEvent} from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {DeviceVerificationBadges} from 'Components/Badge'; import * as Icon from 'Components/Icon'; import {WireIdentity} from 'src/script/E2EIdentity'; import {useKoSubscribableChildren} from 'Util/ComponentUtil'; import {handleKeyDown} from 'Util/KeyboardUtil'; import {t} from 'Util/LocalizerUtil'; import {splitFingerprint} from 'Util/StringUtil'; import {ClientEntity} from '../../../../../../../client'; import {FormattedId} from '../FormattedId'; interface DeviceProps { device: ClientEntity; isSSO: boolean; getDeviceIdentity?: (deviceId: string) => WireIdentity | undefined; onRemove: (device: ClientEntity) => void; onSelect: (device: ClientEntity, currentDeviceIdentity?: WireIdentity) => void; deviceNumber: number; } export const Device = ({device, isSSO, onSelect, onRemove, getDeviceIdentity, deviceNumber}: DeviceProps) => { const {isVerified} = useKoSubscribableChildren(device.meta, ['isVerified']); const verifiedLabel = isVerified ? t('preferencesDevicesVerification') : t('preferencesDeviceNotVerified'); const deviceAriaLabel = `${t('preferencesDevice')} ${deviceNumber}, ${device.getName()}, ${verifiedLabel}`; const deviceIdentity = getDeviceIdentity?.(device.id); const handleClick = (event: MouseEvent) => { event.stopPropagation(); onRemove(device); }; const handleKeyPress = (event: KeyboardEvent) => { event.stopPropagation(); }; const onDeviceSelect = () => onSelect(device); return (
handleKeyDown(event, onDeviceSelect)} role="button" aria-label={t('accessibility.headings.preferencesDeviceDetails')} tabIndex={TabIndex.FOCUSABLE} >
{device.getName()}
{deviceIdentity?.thumbprint && (

{t('preferencesMLSThumbprint')}

)}

{t('preferencesDevicesId')}

{!device.isLegalHold() && ( )}
); };