From d6e8f41cf651d13f36bb4eee470ba1b139089eaf Mon Sep 17 00:00:00 2001 From: moonrailgun Date: Fri, 24 Sep 2021 15:38:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E4=BA=BA=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/index.tsx | 6 ++- shared/model/converse.ts | 18 +++++++ shared/redux/setup.ts | 9 +++- web/src/components/Panel/group/Wrapper.tsx | 33 ++++++------- .../Panel/personal/ConversePanel.tsx | 48 ++++++++++++++----- .../modals/AppendDMConverseMembers.tsx | 41 ++++++++++++++++ .../components/modals/CreateDMConverse.tsx | 4 +- 7 files changed, 126 insertions(+), 33 deletions(-) create mode 100644 web/src/components/modals/AppendDMConverseMembers.tsx diff --git a/shared/index.tsx b/shared/index.tsx index 17956266..36a5df87 100644 --- a/shared/index.tsx +++ b/shared/index.tsx @@ -74,7 +74,11 @@ export { // model export { fetchAvailableServices } from './model/common'; -export { createDMConverse, updateAck } from './model/converse'; +export { + createDMConverse, + appendDMConverseMembers, + updateAck, +} from './model/converse'; export { addFriendRequest, cancelFriendRequest, diff --git a/shared/model/converse.ts b/shared/model/converse.ts index 3c54e01c..70fdff68 100644 --- a/shared/model/converse.ts +++ b/shared/model/converse.ts @@ -21,6 +21,24 @@ export async function createDMConverse( return data; } +/** + * 在多人会话中添加成员 + */ +export async function appendDMConverseMembers( + converseId: string, + memberIds: string[] +) { + const { data } = await request.post( + '/api/chat/converse/appendDMConverseMembers', + { + converseId, + memberIds, + } + ); + + return data; +} + /** * 获取会话信息 * @param converseId 会话ID diff --git a/shared/redux/setup.ts b/shared/redux/setup.ts index 0570cbd8..de00b7bb 100644 --- a/shared/redux/setup.ts +++ b/shared/redux/setup.ts @@ -8,7 +8,7 @@ import { ChatMessage, fetchConverseLastMessages } from '../model/message'; import { socketEventListeners } from '../manager/socket'; import { showToasts } from '../manager/ui'; import { t } from '../i18n'; -import { fetchUserAck } from '../model/converse'; +import { ChatConverseInfo, fetchUserAck } from '../model/converse'; /** * 初始化 Redux 上下文 @@ -125,6 +125,13 @@ function listenNotify(socket: AppSocket, store: AppStore) { ); }); + socket.listen( + 'chat.converse.updateDMConverse', + (converse) => { + store.dispatch(chatActions.setConverseInfo(converse)); + } + ); + socket.listen('group.add', (groupInfo) => { store.dispatch(groupActions.appendGroups([groupInfo])); }); diff --git a/web/src/components/Panel/group/Wrapper.tsx b/web/src/components/Panel/group/Wrapper.tsx index c93581d3..2cc7ad9b 100644 --- a/web/src/components/Panel/group/Wrapper.tsx +++ b/web/src/components/Panel/group/Wrapper.tsx @@ -2,7 +2,7 @@ import React from 'react'; import { t, useGroupPanel } from 'tailchat-shared'; import _isNil from 'lodash/isNil'; import { Icon } from '@iconify/react'; -import { Button } from 'antd'; +import { Button, Tooltip } from 'antd'; import { MembersPanel } from './MembersPanel'; import { CommonPanelWrapper } from '../common/Wrapper'; @@ -25,21 +25,22 @@ export const GroupPanelWrapper: React.FC = React.memo( [ - + + + ); + }); +AppendDMConverseMembers.displayName = 'AppendDMConverseMembers'; diff --git a/web/src/components/modals/CreateDMConverse.tsx b/web/src/components/modals/CreateDMConverse.tsx index 145dcc0e..eab5a5d7 100644 --- a/web/src/components/modals/CreateDMConverse.tsx +++ b/web/src/components/modals/CreateDMConverse.tsx @@ -5,14 +5,14 @@ import { createDMConverse, t, useAsyncFn } from 'tailchat-shared'; import { FriendPicker } from '../FriendPicker'; import { closeModal, ModalWrapper } from '../Modal'; -interface CreateDMCOnverseProps { +interface CreateDMConverseProps { /** * 排除的用户id * 在选择好友时会进行过滤 */ withoutUserIds?: string[]; } -export const CreateDMConverse: React.FC = React.memo( +export const CreateDMConverse: React.FC = React.memo( (props) => { const { withoutUserIds = [] } = props; const [selectedFriendIds, setSelectedFriendIds] = useState([]);