import React, { useRef } from 'react'; import { ChatBoxContextProvider, useConverseMessage } from 'tailchat-shared'; import { AlertErrorView } from '../AlertErrorView'; import { ChatBoxPlaceholder } from './ChatBoxPlaceholder'; import { ChatInputBox } from './ChatInputBox'; import { ChatMessageList, ChatMessageListRef } from './ChatMessageList'; import { ChatReply } from './ChatReply'; import { useMessageAck } from './useMessageAck'; type ChatBoxProps = | { converseId: string; isGroup: false; groupId?: string; } | { converseId: string; isGroup: true; groupId: string; }; const ChatBoxInner: React.FC = React.memo((props) => { const { converseId, isGroup } = props; const { messages, loading, error, handleSendMessage } = useConverseMessage({ converseId, isGroup, }); const chatMessageListRef = useRef(null); const { updateConverseAck } = useMessageAck(converseId, messages); if (loading) { return ; } if (error) { return ; } return (
{ handleSendMessage({ converseId: props.converseId, groupId: props.groupId, content: msg, }).then(() => { // 发送消息后滚动到底部 chatMessageListRef.current?.scrollToBottom(); }); }} />
); }); ChatBoxInner.displayName = 'ChatBoxInner'; export const ChatBox: React.FC = React.memo((props) => { return ( ); }); ChatBox.displayName = 'ChatBox';