import * as React from 'react'; import { Dimensions, Pressable, ScrollView, View } from 'react-native'; import { useColors } from '../../hook'; import { usePaletteContext } from '../../theme'; import { Alert } from '../../ui/Alert'; import { Icon } from '../../ui/Image'; import { CommonSwitch } from '../../ui/Switch'; import { SingleLineText } from '../../ui/Text'; import { SimpleToast } from '../../ui/Toast'; import { GroupAvatar } from '../Avatar'; import { BackButton } from '../Back'; import { BottomSheetNameMenu } from '../BottomSheetMenu'; import { ListItem } from '../ListItem'; import { TopNavigationBar } from '../TopNavigationBar'; import { BlockButtons } from './BlockButtons'; import { useGroupInfo } from './GroupInfo.hooks'; import type { GroupInfoProps, GroupInfoRef } from './types'; /** * Group Info Component. * * If you are a group administrator, you have more operating rights. If you are an ordinary member, you have no group management rights. */ export const GroupInfo = React.forwardRef( function (props: GroupInfoProps, ref?: React.ForwardedRef) { const { groupId, onBack, // hasAudioCall = false, hasSendMessage = true, // hasVideoCall = false, containerStyle, navigationBarVisible, customNavigationBar, onInitButton, customItemRender, } = props; const { groupName, groupAvatar, groupDescription, alertRef, toastRef, onClearChat, doNotDisturb, onDoNotDisturb, onGroupName, onGroupDescription, // onGroupMyRemark, onCopyId, onParticipant, menuRef, onRequestCloseMenu, onMore, groupMemberCount, onSendMessage, onVideoCall, onAudioCall, isOwner, tr, onSearch, hasAudioCall, } = useGroupInfo(props, ref); const { colors } = usePaletteContext(); const { getColor } = useColors({ t1: { light: colors.neutral[5], dark: colors.neutral[6], }, t2: { light: colors.neutral[3], dark: colors.neutral[95], }, t3: { light: colors.neutral[7], dark: colors.neutral[6], }, }); const customListItem = React.useCallback(() => { const items = [] as React.ReactNode[]; items.push( {groupName ?? groupId} {doNotDisturb === true ? ( ) : null} {groupDescription ? ( {groupDescription ?? 'test description'} ) : null} {tr('_uikit_info_item_group_id')} {`${groupId}`} ); items.push(); items.push( {tr('_uikit_info_item_member')} } RightText={ {groupMemberCount} } RightIcon={ } /> ); items.push( ); items.push( {tr('_uikit_info_not_disturb')} } RightIcon={ {doNotDisturb !== undefined ? ( ) : null} } /> ); items.push( {tr('_uikit_info_clear_msg')} } /> ); if (isOwner === true) { items.push( ); items.push( {tr('_uikit_info_item_group_name')} } RightIcon={ {groupName} } /> ); items.push( {tr('_uikit_info_item_group_desc')} } RightIcon={ } /> ); } return ( {customItemRender ? customItemRender(items) : items} ); }, [ customItemRender, doNotDisturb, getColor, groupAvatar, groupDescription, groupId, groupMemberCount, groupName, hasAudioCall, hasSendMessage, isOwner, onAudioCall, onClearChat, onCopyId, onDoNotDisturb, onGroupDescription, onGroupName, onInitButton, onParticipant, onSearch, onSendMessage, onVideoCall, tr, ]); return ( {navigationBarVisible !== false ? ( customNavigationBar ? ( <>{customNavigationBar} ) : ( } Right={ } /> ) ) : null} {customListItem()} ); } );