import type React from 'react'; import { useEffect, useMemo, useState } from 'react'; import { useUIContext } from 'tuikit-atomicx-react/chat'; import { IconChevronLeft, useUIKit } from '@tencentcloud/uikit-base-component-react'; import cs from 'classnames'; import styles from './ConversationCreate.module.scss'; import { ConversationCreateButton } from './ConversationCreateButton'; import { ConversationCreateGroupDetail } from './ConversationCreateGroupDetail'; import { ConversationCreateUserSelectList } from './ConversationCreateUserSelectList'; import type { ConversationCreateProps } from '../../../types/conversation'; import { PageStateTypes } from '../../../types/conversation'; import type { ConversationInfo } from 'tuikit-atomicx-react/chat'; export function ConversationCreate(props: T) { const { visible = true, className, style, onChangeCreateModelVisible, conversationList = [], onBeforeCreateConversation, onConversationCreated, } = props; const { t } = useUIKit(); const { setActiveConversation } = useUIContext(); const [showCreateModel, setShowCreateModel] = useState(false); const [isCreateGroup, setIsCreateGroup] = useState(false); const [pageState, setPageState] = useState(PageStateTypes.USER_SELECT); const [selectList, setSelectList] = useState([]); const _onConversationCreated = (conversation: ConversationInfo) => { setShowCreateModel(false); resetCreatePageState(); setActiveConversation(conversation.conversationID); onConversationCreated?.(conversation); }; useEffect(() => { onChangeCreateModelVisible?.(showCreateModel); }, [onChangeCreateModelVisible, showCreateModel]); const back = () => { if (isCreateGroup) { switch (pageState) { case PageStateTypes.USER_SELECT: setIsCreateGroup(false); break; case PageStateTypes.CREATE_DETAIL: setPageState(PageStateTypes.USER_SELECT); setSelectList([]); break; case PageStateTypes.GROUP_TYPE: setPageState(PageStateTypes.CREATE_DETAIL); break; default: } } else { setShowCreateModel(false); resetCreatePageState(); } }; function resetCreatePageState() { setIsCreateGroup(false); setPageState(PageStateTypes.USER_SELECT); setSelectList([]); } return useMemo(() => { if (!visible) { return null; } return (
{!showCreateModel && ( setShowCreateModel(true)} /> )} {showCreateModel && (
{t(!isCreateGroup ? 'TUIConversation.Start chat' : 'TUIConversation.Add Participants')}
{ pageState === PageStateTypes.USER_SELECT ? ( >} conversationList={conversationList} onBeforeCreateConversation={onBeforeCreateConversation} onConversationCreated={_onConversationCreated} setPageState={setPageState} /> ) : ( ) }
)}
); }, [ visible, className, style, showCreateModel, back, t, isCreateGroup, pageState, selectList, conversationList, onBeforeCreateConversation, _onConversationCreated, ]); } export default ConversationCreate;