import React, { useState } from 'react'; import { Badge, color, Icon, Icons, Text } from 'folds'; import { SidebarAvatar, SidebarItem, SidebarItemBadge, SidebarItemTooltip, } from '../../../components/sidebar'; import { useDeviceIds, useDeviceList, useSplitCurrentDevice } from '../../../hooks/useDeviceList'; import { useMatrixClient } from '../../../hooks/useMatrixClient'; import * as css from './UnverifiedTab.css'; import { useDeviceVerificationStatus, useUnverifiedDeviceCount, VerificationStatus, } from '../../../hooks/useDeviceVerificationStatus'; import { useCrossSigningActive } from '../../../hooks/useCrossSigning'; import { Modal500 } from '../../../components/Modal500'; import { Settings, SettingsPages } from '../../../features/settings'; function UnverifiedIndicator() { const mx = useMatrixClient(); const crypto = mx.getCrypto(); const [devices] = useDeviceList(); const [currentDevice, otherDevices] = useSplitCurrentDevice(devices); const verificationStatus = useDeviceVerificationStatus( crypto, mx.getSafeUserId(), currentDevice?.device_id ); const unverified = verificationStatus === VerificationStatus.Unverified; const otherDevicesId = useDeviceIds(otherDevices); const unverifiedDeviceCount = useUnverifiedDeviceCount( crypto, mx.getSafeUserId(), otherDevicesId ); const [settings, setSettings] = useState(false); const closeSettings = () => setSettings(false); const hasUnverified = unverified || (unverifiedDeviceCount !== undefined && unverifiedDeviceCount > 0); return ( <> {hasUnverified && ( {(triggerRef) => ( setSettings(true)} > )} {!unverified && unverifiedDeviceCount && unverifiedDeviceCount > 0 && ( {unverifiedDeviceCount} )} )} {settings && ( )} ); } export function UnverifiedTab() { const crossSigningActive = useCrossSigningActive(); if (!crossSigningActive) return null; return ; }