import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import TencentCloudChat, { Conversation, Profile } from '@tencentcloud/chat'; import { Input } from '../Input'; import './styles/ConversationCreatGroupDetail.scss'; import { Icon, IconTypes } from '../Icon'; import { Avatar, defaultGroupAvatarWork, defaultGroupAvatarAVChatRoom, defaultGroupAvatarMeeting, defaultGroupAvatarPublic, defaultUserAvatar, } from '../Avatar'; import { PageStateTypes } from './ConversationCreate'; import { ConversationGroupTypeInfo, GroupType, typeInfoList } from './ConversationGroupTypeInfo'; import { useTUIKitContext } from '../../context'; import { CreateGroupConversationParams } from '../../hooks'; export interface ConversationCreatGroupDetailProps { profileList: Array, pageState: PageStateTypes, setPageState: React.Dispatch>, createConversation: (params: string | CreateGroupConversationParams) => Promise, setConversationCreated: React.Dispatch>, } export function ConversationCreatGroupDetail(props: ConversationCreatGroupDetailProps) { const { profileList, pageState, setPageState, createConversation, setConversationCreated, } = props; const { t } = useTranslation(); const { setActiveConversation, myProfile } = useTUIKitContext(); const temp = [...profileList]; temp.unshift(myProfile); const name = temp.map((item) => item.nick || item.userID).toString(); const [groupName, setGroupName] = useState( name.length >= 15 ? `${name.slice(0, 12)}...` : name, ); const [groupID, setGroupID] = useState(''); const [groupType, setGroupType] = useState('Work'); const groupInfoChange = (e, type) => { const { value } = e.target; switch (type) { case 'name': setGroupName(value); break; case 'id': setGroupID(value); break; case 'type': setGroupType(value); break; default: } }; const showGroupTypeInfo = () => { setPageState(PageStateTypes.GROUP_TYPE); }; const getDefaultAvatar = (type) => { switch (type) { case 'Work': return defaultGroupAvatarWork; case 'Public': return defaultGroupAvatarPublic; case 'Meeting': return defaultGroupAvatarMeeting; case 'AVChatRoom': return defaultGroupAvatarAVChatRoom; default: return ''; } }; const getDes = () => typeInfoList.find((item) => item.type === groupType).des; const next = async () => { const memberList = profileList.map((item) => ({ userID: item.userID, })); const avatar = getDefaultAvatar(groupType); const conversation = await createConversation({ name: groupName, type: GroupType[groupType], groupID, avatar, memberList, }); setActiveConversation(conversation); setConversationCreated(false); }; return pageState !== PageStateTypes.GROUP_TYPE ? ( <>
{ groupInfoChange(e, 'name'); }} border="bottom" customClassName="input-group-name" clearable prefix={
{t('TUIConversation.Group Name')}
} />
{ groupInfoChange(e, 'id'); }} prefix={
{t('TUIConversation.Group ID')}
} />
{t('TUIConversation.Group Type')}
} suffix={( )} value={t(`TUIConversation.${groupType}`)} onChange={(e) => { groupInfoChange(e, 'type'); }} />
{t(`TUIConversation.${getDes()}`)}
{t('TUIConversation.Participants')}
{profileList.map(({ avatar, userID, nick }) => (
{nick}
))}
{t('TUIConversation.Create')}
) : ( ); }