import { IconBtn } from '@/components/IconBtn'; import { UserName } from '@/components/UserName'; import { fetchImagePrimaryColor } from '@/utils/image-helper'; import { Space, Tag, Tooltip } from 'antd'; import React, { useEffect } from 'react'; import { useNavigate } from 'react-router'; import { getTextColorHex } from 'tailchat-design'; import { createDMConverse, getGroupConfigWithInfo, GroupInfo, t, useAsyncRequest, UserBaseInfo, useUserId, } from 'tailchat-shared'; import { UserProfileContainer } from '../../UserProfileContainer'; import { usePluginUserExtraInfo } from './usePluginUserExtraInfo'; export const GroupUserPopover: React.FC<{ userInfo: UserBaseInfo; groupInfo: GroupInfo; }> = React.memo((props) => { const { userInfo, groupInfo } = props; const userId = userInfo._id; const userExtra = userInfo.extra ?? {}; const roleNames = getUserRoleNames(userId, groupInfo); const { hideGroupMemberDiscriminator, disableCreateConverseFromGroup } = getGroupConfigWithInfo(groupInfo); const pluginUserExtraInfoEl = usePluginUserExtraInfo(userExtra); const navigate = useNavigate(); const currentUserId = useUserId(); const allowSendMessage = !hideGroupMemberDiscriminator && !disableCreateConverseFromGroup && currentUserId !== userId; const [, handleCreateConverse] = useAsyncRequest(async () => { const converse = await createDMConverse([userId]); navigate(`/main/personal/converse/${converse._id}`); }, [navigate]); useEffect(() => { if (userInfo.avatar) { fetchImagePrimaryColor(userInfo.avatar).then((rgba) => { console.log('fetchImagePrimaryColor', rgba); }); } }, [userInfo.avatar]); return (