// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { ReactNode, useState } from 'react'; import { Avatar } from '../../Avatar'; import { AvatarLightbox } from '../../AvatarLightbox'; import { ConversationType } from '../../../state/ducks/conversations'; import { Emojify } from '../Emojify'; import { GroupDescription } from '../GroupDescription'; import { GroupV2Membership } from './ConversationDetailsMembershipList'; import { LocalizerType } from '../../../types/Util'; import { bemGenerator } from './util'; export type Props = { canEdit: boolean; conversation: ConversationType; i18n: LocalizerType; memberships: Array; startEditing: (isGroupTitle: boolean) => void; }; const bem = bemGenerator('module-conversation-details-header'); export const ConversationDetailsHeader: React.ComponentType = ({ canEdit, conversation, i18n, memberships, startEditing, }) => { const [showingAvatar, setShowingAvatar] = useState(false); let subtitle: ReactNode; if (conversation.groupDescription) { subtitle = ( ); } else if (canEdit) { subtitle = i18n('ConversationDetailsHeader--add-group-description'); } else { subtitle = i18n('ConversationDetailsHeader--members', [ memberships.length.toString(), ]); } const avatar = ( setShowingAvatar(true)} sharedGroupNames={[]} /> ); const contents = (
); const avatarLightbox = showingAvatar ? ( setShowingAvatar(false)} /> ) : null; if (canEdit) { return (
{avatarLightbox} {avatar}
); } return (
{avatarLightbox} {avatar} {contents}
{subtitle}
); };