import type React from 'react'; import { useState } from 'react'; import { GroupType } from 'tuikit-atomicx-react/chat'; import { GroupStore } from 'tuikit-atomicx-react/chat'; import { useUIKit, Button } from '@tencentcloud/uikit-base-component-react'; import classNames from 'classnames'; import { DEFAULT_GROUP_COMMON_AVATAR } from '../../../../constant/avatar'; import { Avatar } from 'tuikit-atomicx-react/chat'; import styles from './SearchGroupInfo.module.scss'; import type { SearchGroupInfoProps } from '../../../../types/contact'; export const SearchGroupInfo: React.FC = ({ group, showActions = true, onJoinGroup, className, style, }) => { const { t } = useUIKit(); const { joinGroup } = GroupStore(); const [note, setNote] = useState(''); const [loading, setLoading] = useState(false); const [status, setStatus] = useState<'idle' | 'success' | 'error'>('idle'); const [errorMessage, setErrorMessage] = useState(''); const handleJoinGroup = async () => { if (loading) { return; } setLoading(true); setStatus('idle'); setErrorMessage(''); if (onJoinGroup) { setStatus('success'); setLoading(false); onJoinGroup?.(group, note.trim() || t('ContactList.apply_to_join_group')); return; } try { await joinGroup(group.groupID, note.trim() || t('ContactList.apply_to_join_group')); setStatus('success'); } catch (error: any) { console.error('[SearchGroupInfo joinGroup] error', error); setStatus('error'); setErrorMessage(t('ContactList.apply_to_join_group_failed')); } finally { setLoading(false); } }; const getGroupTypeName = (type?: GroupType) => { switch (type) { case GroupType.Work: return t('ContactList.work_group'); case GroupType.Public: return t('ContactList.public_group'); case GroupType.Meeting: return t('ContactList.meeting_group'); case GroupType.AVChatRoom: return t('ContactList.live_group'); case GroupType.Community: return t('ContactList.community'); default: return t('ContactList.unknown'); } }; const displayName = group.groupName || group.groupID; return (
{displayName}
{`${t('ContactList.group_id')}: ${group.groupID}`}
{t('ContactList.group_type')}
{getGroupTypeName(group.groupType)}
{ status !== 'idle' ? (
{ status === 'success' ? t('ContactList.group_application_sent_waiting_for_admin_approval') : errorMessage}
) : (