import React from 'react'; import { useSelector } from 'react-redux'; import { callRecipient } from '../../../interactions/conversationInteractions'; import { getHasIncomingCall, getHasOngoingCall } from '../../../state/selectors/call'; import { useSelectedConversationKey, useSelectedIsActive, useSelectedIsBlocked, useSelectedIsNoteToSelf, useSelectedIsPrivate, useSelectedIsPrivateFriend, } from '../../../state/selectors/selectedConversation'; import { Avatar, AvatarSize } from '../../avatar/Avatar'; import { SessionIconButton } from '../../icon'; export const AvatarHeader = (props: { pubkey: string; onAvatarClick?: (pubkey: string) => void; }) => { const { pubkey, onAvatarClick } = props; return ( { if (onAvatarClick) { onAvatarClick(pubkey); } }} pubkey={pubkey} dataTestId="conversation-options-avatar" /> ); }; export const BackButton = (props: { onGoBack: () => void; showBackButton: boolean }) => { const { onGoBack, showBackButton } = props; if (!showBackButton) { return null; } return ( ); }; export const CallButton = () => { const isPrivate = useSelectedIsPrivate(); const isBlocked = useSelectedIsBlocked(); const activeAt = useSelectedIsActive(); const isMe = useSelectedIsNoteToSelf(); const selectedConvoKey = useSelectedConversationKey(); const hasIncomingCall = useSelector(getHasIncomingCall); const hasOngoingCall = useSelector(getHasOngoingCall); const canCall = !(hasIncomingCall || hasOngoingCall); const isPrivateAndFriend = useSelectedIsPrivateFriend(); if ( !isPrivate || isMe || !selectedConvoKey || isBlocked || !activeAt || !isPrivateAndFriend // call requires us to be friends ) { return null; } return ( { void callRecipient(selectedConvoKey, canCall); }} dataTestId="call-button" /> ); };