feat: allow create converse from group user popover

pull/146/head
moonrailgun 2 years ago
parent 3979e89060
commit 1a8b94eaed

@ -1,13 +1,18 @@
import { IconBtn } from '@/components/IconBtn';
import { UserName } from '@/components/UserName';
import { fetchImagePrimaryColor } from '@/utils/image-helper';
import { Space, Tag } from 'antd';
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';
@ -17,10 +22,21 @@ export const GroupUserPopover: React.FC<{
groupInfo: GroupInfo;
}> = React.memo((props) => {
const { userInfo, groupInfo } = props;
const userId = userInfo._id;
const userExtra = userInfo.extra ?? {};
const roleNames = getUserRoleNames(userInfo._id, groupInfo);
const roleNames = getUserRoleNames(userId, groupInfo);
const { hideGroupMemberDiscriminator } = getGroupConfigWithInfo(groupInfo);
const pluginUserExtraInfoEl = usePluginUserExtraInfo(userExtra);
const navigate = useNavigate();
const currentUserId = useUserId();
const allowSendMessage =
!hideGroupMemberDiscriminator && currentUserId !== userId;
const [, handleCreateConverse] = useAsyncRequest(async () => {
const converse = await createDMConverse([userId]);
navigate(`/main/personal/converse/${converse._id}`);
}, [navigate]);
useEffect(() => {
if (userInfo.avatar) {
@ -35,7 +51,7 @@ export const GroupUserPopover: React.FC<{
<UserProfileContainer userInfo={userInfo}>
<div className="text-xl">
<span className="font-semibold">
<UserName userId={userInfo._id} />
<UserName userId={userId} />
</span>
{!hideGroupMemberDiscriminator && (
<span className="opacity-60 ml-1">#{userInfo.discriminator}</span>
@ -43,9 +59,7 @@ export const GroupUserPopover: React.FC<{
</div>
<Space size={4} wrap={true} className="py-1">
{groupInfo.owner === userInfo._id && (
<Tag color="gold">{t('创建者')}</Tag>
)}
{groupInfo.owner === userId && <Tag color="gold">{t('创建者')}</Tag>}
{userInfo.temporary && <Tag color="processing">{t('游客')}</Tag>}
@ -57,6 +71,17 @@ export const GroupUserPopover: React.FC<{
</Space>
<div className="pt-2">{pluginUserExtraInfoEl}</div>
<div className="text-right">
{allowSendMessage && (
<Tooltip title={t('发送消息')}>
<IconBtn
icon="mdi:message-processing-outline"
onClick={handleCreateConverse}
/>
</Tooltip>
)}
</div>
</UserProfileContainer>
</div>
);

Loading…
Cancel
Save