import React, { PropsWithChildren, useCallback, useEffect, useState, } from 'react'; import { useTranslation } from 'react-i18next'; import { Conversation, Message } from '@tencentcloud/chat'; import { useTUIChatActionContext } from '../../context'; import './styles/index.scss'; import { Model } from '../Model'; import { Icon, IconTypes } from '../Icon'; import { Input } from '../Input'; import { Checkbox } from '../Checkbox'; import { Avatar } from '../Avatar'; import { getDisplayImage, getDisplayTitle } from '../ConversationPreview/utils'; import { MESSAGE_OPERATE } from '../../constants'; import { useHandleForwardMessage } from './hooks'; interface HandleForwardParams { list?:Array, message?:Message, } interface TUIForwardToProps { handleForward?: (data:HandleForwardParams) => void, } export function TUIForward ( props: PropsWithChildren, ):React.ReactElement { const { handleForward: propsHandleForward, } = props; const { t } = useTranslation(); const [selectList, setSelectList] = useState([]); const [searchResult, setSearchResult] = useState([]); const [searchValue, setSearchValue] = useState(''); const { operateMessage } = useTUIChatActionContext('TUIForward'); const { message, sendForwardMessage, conversationList = [] } = useHandleForwardMessage(); const handleClose = useCallback((e) => { operateMessage({ [MESSAGE_OPERATE.FORWARD]: null, }); }, [operateMessage]); //const FrequentlyList = conversationList.slice(0, 2); const RecentList = conversationList; const handleInputChange = (e) => { setSearchValue(e.target?.value); if (e.target?.value) { const result = conversationList.filter((item) => { const name = (getDisplayTitle(item) as string).toLocaleLowerCase(); const value = e.target?.value.toLocaleLowerCase(); return name.includes(value); }); setSearchResult(result); } else { setSearchResult([]); } }; const handleCheckboxChange = (e) => { if (e.checked) { setSelectList([...selectList, e.value]); } else { setSelectList(selectList.filter((item) => item !== e.value)); } }; const handleDisplayForwardName = (value) => { const listName = value?.map((item) => getDisplayTitle(item)); return listName.toString(); }; const handleForward = (e) => { if (propsHandleForward) { propsHandleForward({ list: selectList, message, }); } else { sendForwardMessage(selectList); } handleClose(e); }; const stopPropagation = (e) => { e.stopPropagation(); }; useEffect(() => { setSelectList([]); setSearchResult([]); setSearchValue(''); }, [message]); return message && conversationList.length > 0 && (

{t('TUIChat.Forward to')}

} />
{ searchValue && (

    {t('TUIChat.Search Result')}

    { searchResult.length > 0 && searchResult.map((item) => (
  • )) } { searchResult.length === 0 &&

    {t('TUIChat.No Result')}

    }
) } { !searchValue && RecentList.length > 0 && (
    { RecentList.map((item) => (
  • )) }
)}
); }