/** * @成员选择面板组件 */ import React from 'react'; import { View, ScrollView, TouchableOpacity } from 'react-native'; import { MaterialCommunityIcons } from '@expo/vector-icons'; import { Avatar, Text } from '../../../../components/common'; import { chatScreenStyles as styles } from './styles'; import { MentionPanelProps } from './types'; export const MentionPanel: React.FC = ({ members, currentUserId, mentionQuery, currentUserRole, onSelectMention, onMentionAll, onClose, }) => { // 过滤成员列表 const filteredMembers = members.filter(member => { if (member.user_id === currentUserId) return false; // 排除自己 const displayName = member.nickname || member.user?.nickname || ''; return displayName.toLowerCase().includes(mentionQuery); }); // 检查是否可以@所有人(仅群主和管理员) const canMentionAll = currentUserRole === 'owner' || currentUserRole === 'admin'; return ( {/* 拖动把手 */} {/* 标题栏 */} @ 成员 {/* @所有人选项 */} {canMentionAll && ( 所有人 通知群内所有成员 )} {/* 成员列表 */} {filteredMembers.map(member => ( onSelectMention(member)} > {member.nickname || member.user?.nickname || '用户'} {member.role === 'owner' && ( 群主 )} {member.role === 'admin' && ( 管理员 )} ))} {filteredMembers.length === 0 && ( 没有找到匹配的成员 )} ); }; export default MentionPanel;