import type { DeviceManagementPopulatedSession } from '@rocket.chat/core-typings'; import { Box, Button, ButtonGroup, StatusBullet } from '@rocket.chat/fuselage'; import { UserAvatar } from '@rocket.chat/ui-avatar'; import { ContextualbarHeader, ContextualbarClose, ContextualbarScrollableContent, ContextualbarFooter, ContextualbarTitle, InfoPanel, InfoPanelField, InfoPanelLabel, InfoPanelText, } from '@rocket.chat/ui-client'; import { useRoute, useUserPresence } from '@rocket.chat/ui-contexts'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { useDeviceLogout } from '../../../../hooks/useDeviceLogout'; import { useFormatDateAndTime } from '../../../../hooks/useFormatDateAndTime'; export type DeviceManagementInfoProps = DeviceManagementPopulatedSession; const DeviceManagementInfo = ({ device, sessionId, loginAt, ip, userId, _user }: DeviceManagementInfoProps) => { const { t } = useTranslation(); const deviceManagementRouter = useRoute('device-management'); const formatDateAndTime = useFormatDateAndTime(); const handleDeviceLogout = useDeviceLogout(sessionId, '/v1/sessions/logout'); const { name: clientName, os, version: rcVersion } = device || {}; const { username, name } = _user || {}; const userPresence = useUserPresence(userId); const handleCloseContextualBar = useCallback((): void => deviceManagementRouter.push({}), [deviceManagementRouter]); return ( <> {t('Device_Info')} {t('Client')} {clientName} {t('Version')} {rcVersion || '—'} {t('OS')} {`${os?.name || ''} ${os?.version || ''}`} {username && ( {t('User')} {name && {name}} {`(${username})`} )} {t('Last_login')} {formatDateAndTime(loginAt)} {t('Device_ID')} {sessionId} {t('IP_Address')} {ip} ); }; export default DeviceManagementInfo;