import { ImageBackground } from 'react-native';
import { BottomSheetNameMenu } from '../BottomSheetMenu/BottomSheetNameMenu';
import { MessageContextProvider } from '../Context';
import { useConversationDetail } from './ConversationDetail.hooks';
import { ConversationDetailNavigationBar } from './ConversationDetail.navi';
import type { ConversationDetailProps } from './types';
/**
* Conversation Detail Component.
*
* This component displays the chat content of individual chats and group chats. This component mainly includes a message bubble list component and a message sending component, as well as a bottom menu component and a warning component.
*/
export function ConversationDetail(props: ConversationDetailProps) {
const {
containerStyle,
onBack,
convId,
convType,
enableNavigationBar = true,
NavigationBar: propsNavigationBar,
type: comType,
onClickedThread,
onClickedVideo,
onClickedVoice,
backgroundImageStyle,
backgroundImage,
} = props;
const {
onClickedSend,
_messageInputRef,
MessageInputWrapper,
messageInputProps,
_messageListRef,
MessageListWrapper,
messageListProps,
onQuoteMessageForInput,
onEditMessageForInput,
onEditMessageFinished,
getNickName,
convAvatar,
onClickedAvatar,
doNotDisturb,
onClickedThreadMore,
threadName,
onClickedMultiSelected,
onCancelMultiSelected,
selectMode,
onClickedMultiSelectDeleteButton,
onClickedMultiSelectShareButton,
multiSelectCount,
onChangeMultiItems,
onClickedSingleSelect,
onChangeUnreadCount,
unreadCount,
onClickedUnreadCount,
parentName,
messageTyping,
onChangePinMaskHeight,
menuRef,
onRequestCloseMenu,
onClickedAV,
onClickedPinMessage,
onRequestClosePinMessage,
} = useConversationDetail(props);
const getContent = () => (
{enableNavigationBar === true ? (
) : null}
{
_messageInputRef?.current?.close?.();
}}
onQuoteMessageForInput={onQuoteMessageForInput}
onEditMessageForInput={onEditMessageForInput}
onClickedMultiSelected={onClickedMultiSelected}
onChangeMultiItems={onChangeMultiItems}
onClickedSingleSelect={onClickedSingleSelect}
selectType={selectMode}
onChangeUnreadCount={onChangeUnreadCount}
onChangePinMaskHeight={onChangePinMaskHeight}
onRequestClosePinMessage={onRequestClosePinMessage}
ref={_messageListRef}
{...messageListProps}
/>
{
_messageListRef?.current?.onInputHeightChange?.(height);
}}
unreadCount={unreadCount}
{...messageInputProps}
/>
);
return (
{getContent()}
);
}