import { Avatar } from '@/components/Avatar'; import { Highlight } from '@/components/Highlight'; import { Button, Divider, Empty, Typography } from 'antd'; import { addFriendRequest, searchUserWithUniqueName, showErrorToasts, showToasts, t, Trans, useAppSelector, useAsyncFn, UserBaseInfo, } from 'tailchat-shared'; import React, { useCallback, useState } from 'react'; import _isNil from 'lodash/isNil'; const SearchFriendResult: React.FC<{ result: UserBaseInfo | undefined | null; }> = React.memo(({ result }) => { const [hasSentUserId, setHasSentUserId] = useState(''); // 记录已发送的 const handleAddFriend = useCallback(async (userId: string) => { try { await addFriendRequest(userId); setHasSentUserId(userId); showToasts(t('已发送申请'), 'success'); } catch (err) { showErrorToasts(err); } }, []); if (result === undefined) { return null; } if (result === null) { return ; } const hasSent = hasSentUserId === result._id; return (
{result.nickname} #{result.discriminator}
); }); SearchFriendResult.displayName = 'SearchFriendResult'; const SelfIdentify: React.FC = React.memo(() => { const userInfo = useAppSelector((state) => state.user.info); const uniqueName = `${userInfo?.nickname}#${userInfo?.discriminator}`; return (
{t('您的个人唯一标识')}
{uniqueName}
); }); SelfIdentify.displayName = 'SelfIdentify'; export const AddFriend: React.FC = React.memo(() => { const [uniqueName, setUniqueName] = useState(''); const [{ loading, value }, searchUser] = useAsyncFn(async () => { // 搜索用户 try { const data = await searchUserWithUniqueName(uniqueName); return data; } catch (err) { showErrorToasts(err); } }, [uniqueName]); return (
{t('添加好友')}
您可以使用完整的 用户昵称#标识 来添加好友
setUniqueName(e.target.value)} />
{_isNil(value) ? : }
); }); AddFriend.displayName = 'AddFriend';