import React, { useState } from 'react'; import useCopyToClipboard from 'react-use/lib/useCopyToClipboard'; import useKey from 'react-use/lib/useKey'; import { ConversationTypeEnum } from '../../models/conversationAttributes'; import { getConversationController } from '../../session/conversations'; import { ToastUtils } from '../../session/utils'; import { openConversationWithMessages } from '../../state/ducks/conversations'; import { updateUserDetailsModal, UserDetailsModalState } from '../../state/ducks/modalDialog'; import { Avatar, AvatarSize } from '../avatar/Avatar'; import { SessionButton, SessionButtonType } from '../basic/SessionButton'; import { SessionIdEditable } from '../basic/SessionIdEditable'; import { SpacerLG } from '../basic/Text'; import { SessionWrapperModal } from '../SessionWrapperModal'; export const UserDetailsDialog = (props: UserDetailsModalState) => { const [isEnlargedImageShown, setIsEnlargedImageShown] = useState(false); const size = isEnlargedImageShown ? AvatarSize.HUGE : AvatarSize.XL; // eslint-disable-next-line @typescript-eslint/no-unused-vars const [_, copyToClipboard] = useCopyToClipboard(); function closeDialog() { window.inboxStore?.dispatch(updateUserDetailsModal(null)); } async function onClickStartConversation() { if (!props) { return; } const convo = getConversationController().get(props.conversationId); const conversation = await getConversationController().getOrCreateAndWait( convo.id, ConversationTypeEnum.PRIVATE ); await openConversationWithMessages({ conversationKey: conversation.id, messageId: null }); closeDialog(); } useKey( 'Enter', () => { void onClickStartConversation(); }, undefined, [props?.conversationId] ); if (!props) { return null; } return (
{ setIsEnlargedImageShown(!isEnlargedImageShown); }} pubkey={props.conversationId} />
{ copyToClipboard(props.conversationId); ToastUtils.pushCopiedToClipBoard(); }} />
); };