@tencentcloud/chat-uikit-react 2.1.0 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +0 -1
- package/CHANGELOG.md +10 -0
- package/dist/cjs/components/Avatar/Avatar.js +1 -1
- package/dist/cjs/components/Checkbox/index.d.ts +2 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.d.ts +4 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/cjs/components/ConversationPreview/utils.js +1 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchInput.d.ts +2 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +3 -2
- package/dist/cjs/components/DivWithEdit/DivWithEdit.js +1 -1
- package/dist/cjs/components/DivWithEdit/WithText.js +1 -1
- package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +2 -1
- package/dist/cjs/components/Icon/Icon.d.ts +2 -1
- package/dist/cjs/components/Icon/Icon.js +1 -1
- package/dist/cjs/components/Icon/config.js +1 -1
- package/dist/cjs/components/Input/Input.js +1 -1
- package/dist/cjs/components/Model/index.d.ts +1 -1
- package/dist/cjs/components/Model/index.js +1 -1
- package/dist/cjs/components/Plugins/index.js +1 -1
- package/dist/cjs/components/Popup/index.d.ts +1 -1
- package/dist/cjs/components/Popup/index.js +1 -1
- package/dist/cjs/components/Switch/Switch.d.ts +2 -6
- package/dist/cjs/components/Switch/Switch.js +1 -1
- package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
- package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/cjs/components/TUIChat/unitls.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContact.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/TUIContactInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/addFriendInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/basicInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/cjs/components/TUIContactSearch/TUIContactSearch.js +1 -1
- package/dist/cjs/components/TUIContactSearch/hooks/useContactSearch.js +1 -1
- package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -2
- package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
- package/dist/cjs/components/TUIKit/hooks/useCreateTUIKitContext.d.ts +7 -7
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -2
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/cjs/components/TUIManage/TUIManage.d.ts +4 -1
- package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageFace.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageLocation.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageName.js +1 -1
- package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageVideo.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
- package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.d.ts +2 -2
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useUploadElement.js +1 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/cjs/components/Toast/index.js +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/context/ComponentContext.d.ts +3 -2
- package/dist/cjs/context/TUIChatActionContext.d.ts +1 -1
- package/dist/cjs/context/TUIChatStateContext.d.ts +4 -4
- package/dist/cjs/context/TUIContactContext.js +1 -1
- package/dist/cjs/context/TUIConversationContext.js +1 -1
- package/dist/cjs/context/TUIKitContext.d.ts +1 -1
- package/dist/cjs/context/TUIMessageContext.js +1 -1
- package/dist/cjs/context/TUIMessageInputContext.js +1 -1
- package/dist/cjs/hooks/useProfile.d.ts +1 -1
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.d.css +20 -3
- package/dist/cjs/index.d.ts +1 -1
- package/dist/esm/components/Avatar/Avatar.js +1 -1
- package/dist/esm/components/Checkbox/index.d.ts +2 -1
- package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.d.ts +4 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/esm/components/ConversationPreview/utils.js +1 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchInput.d.ts +2 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +3 -2
- package/dist/esm/components/DivWithEdit/DivWithEdit.js +1 -1
- package/dist/esm/components/DivWithEdit/WithText.js +1 -1
- package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +2 -1
- package/dist/esm/components/Icon/Icon.d.ts +2 -1
- package/dist/esm/components/Icon/Icon.js +1 -1
- package/dist/esm/components/Icon/config.js +1 -1
- package/dist/esm/components/Input/Input.js +1 -1
- package/dist/esm/components/Model/index.d.ts +1 -1
- package/dist/esm/components/Model/index.js +1 -1
- package/dist/esm/components/Plugins/index.js +1 -1
- package/dist/esm/components/Popup/index.d.ts +1 -1
- package/dist/esm/components/Popup/index.js +1 -1
- package/dist/esm/components/Switch/Switch.d.ts +2 -6
- package/dist/esm/components/Switch/Switch.js +1 -1
- package/dist/esm/components/TUIChat/TUIChat.js +1 -1
- package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/esm/components/TUIChat/unitls.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/esm/components/TUIContact/TUIContact.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/TUIContactInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/addFriendInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/basicInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/esm/components/TUIContactSearch/TUIContactSearch.js +1 -1
- package/dist/esm/components/TUIContactSearch/hooks/useContactSearch.js +1 -1
- package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -2
- package/dist/esm/components/TUIKit/TUIKit.js +1 -1
- package/dist/esm/components/TUIKit/hooks/useCreateTUIKitContext.d.ts +7 -7
- package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -2
- package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/esm/components/TUIManage/TUIManage.d.ts +4 -1
- package/dist/esm/components/TUIManage/TUIManage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -1
- package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
- package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/esm/components/TUIMessage/MessageFace.js +1 -1
- package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
- package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageLocation.js +1 -1
- package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/esm/components/TUIMessage/MessageName.js +1 -1
- package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/esm/components/TUIMessage/MessageProgress.js +1 -1
- package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/esm/components/TUIMessage/MessageText.js +1 -1
- package/dist/esm/components/TUIMessage/MessageVideo.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/esm/components/TUIMessage/utils/index.js +1 -1
- package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.d.ts +2 -2
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useUploadElement.js +1 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/esm/components/Toast/index.js +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/context/ComponentContext.d.ts +3 -2
- package/dist/esm/context/TUIChatActionContext.d.ts +1 -1
- package/dist/esm/context/TUIChatStateContext.d.ts +4 -4
- package/dist/esm/context/TUIContactContext.js +1 -1
- package/dist/esm/context/TUIConversationContext.js +1 -1
- package/dist/esm/context/TUIKitContext.d.ts +1 -1
- package/dist/esm/context/TUIMessageContext.js +1 -1
- package/dist/esm/context/TUIMessageInputContext.js +1 -1
- package/dist/esm/hooks/useProfile.d.ts +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.d.css +20 -3
- package/dist/esm/index.d.ts +1 -1
- package/index.ts +1 -0
- package/package.json +7 -6
- package/rollup.config.js +2 -1
- package/src/components/Avatar/Avatar.tsx +7 -3
- package/src/components/Avatar/styles/index.scss +1 -1
- package/src/components/Checkbox/index.tsx +1 -1
- package/src/components/ConversationCreate/ConversationCreatGroupDetail.tsx +14 -7
- package/src/components/ConversationCreate/ConversationCreate.tsx +5 -1
- package/src/components/ConversationCreate/ConversationCreateSelectView.tsx +2 -2
- package/src/components/ConversationCreate/ConversationCreateUserSelectList.tsx +11 -10
- package/src/components/ConversationCreate/hooks/useConversationCreate.tsx +14 -12
- package/src/components/ConversationPreview/ConversationPreview.tsx +3 -3
- package/src/components/ConversationPreview/ConversationPreviewContent.tsx +9 -5
- package/src/components/ConversationPreview/utils.tsx +6 -3
- package/src/components/DivWithEdit/DivWithEdit.tsx +6 -5
- package/src/components/DivWithEdit/WithText.tsx +3 -1
- package/src/components/DivWithEdit/styles/index.scss +1 -1
- package/src/components/Icon/Icon.tsx +2 -2
- package/src/components/Icon/config.ts +3 -4
- package/src/components/Input/Input.tsx +15 -12
- package/src/components/Model/index.tsx +2 -2
- package/src/components/Plugins/index.tsx +15 -12
- package/src/components/Popup/index.tsx +13 -9
- package/src/components/Switch/Switch.tsx +5 -7
- package/src/components/TUIChat/TUIChat.tsx +20 -5
- package/src/components/TUIChat/TUIChatState.tsx +3 -3
- package/src/components/TUIChat/hooks/useHandleMessage.tsx +5 -5
- package/src/components/TUIChat/hooks/useHandleMessageList.tsx +2 -2
- package/src/components/TUIChat/unitls.ts +2 -2
- package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +3 -2
- package/src/components/TUIContact/TUIContact.tsx +2 -1
- package/src/components/TUIContact/TUIContactInfo/TUIContactInfo.tsx +2 -1
- package/src/components/TUIContact/TUIContactInfo/addFriendInfo.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/basicInfo.tsx +18 -0
- package/src/components/TUIContact/TUIContactInfo/friendInfo.tsx +1 -2
- package/src/components/TUIContact/TUIContactInfo/hooks/useContactInfo.tsx +0 -10
- package/src/components/TUIContact/TUIContactInfo/index.scss +5 -0
- package/src/components/TUIContact/TUIContactList/TUIContactList.tsx +7 -4
- package/src/components/TUIContact/TUIContactList/index.scss +5 -0
- package/src/components/TUIContact/hooks/useTUIContact.tsx +3 -4
- package/src/components/TUIContact/index.scss +5 -0
- package/src/components/TUIContactSearch/TUIContactSearch.tsx +6 -7
- package/src/components/TUIContactSearch/hooks/useContactSearch.tsx +1 -3
- package/src/components/TUIConversationList/TUIConversationList.tsx +1 -1
- package/src/components/TUIConversationList/hooks/useConversationList.tsx +1 -1
- package/src/components/TUIConversationList/hooks/useConversationUpdate.tsx +2 -2
- package/src/components/TUIKit/TUIKit.tsx +35 -17
- package/src/components/TUIKit/hooks/useTUIKit.tsx +4 -4
- package/src/components/TUIManage/TUIManage.tsx +20 -13
- package/src/components/TUIMessage/MessageAudio.tsx +8 -6
- package/src/components/TUIMessage/MessageAvatar.tsx +2 -2
- package/src/components/TUIMessage/MessageBubble.tsx +7 -5
- package/src/components/TUIMessage/MessageContext.tsx +3 -3
- package/src/components/TUIMessage/MessageCustom.tsx +5 -3
- package/src/components/TUIMessage/MessageFace.tsx +2 -2
- package/src/components/TUIMessage/MessageFile.tsx +5 -5
- package/src/components/TUIMessage/MessageImage.tsx +4 -2
- package/src/components/TUIMessage/MessageLocation.tsx +3 -3
- package/src/components/TUIMessage/MessageMerger.tsx +3 -3
- package/src/components/TUIMessage/MessageName.tsx +1 -1
- package/src/components/TUIMessage/MessagePlugins.tsx +12 -10
- package/src/components/TUIMessage/MessageProgress.tsx +5 -4
- package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
- package/src/components/TUIMessage/MessageText.tsx +4 -4
- package/src/components/TUIMessage/MessageVideo.tsx +3 -3
- package/src/components/TUIMessage/TUIMessage.tsx +1 -1
- package/src/components/TUIMessage/TUIMessageDefault.tsx +3 -1
- package/src/components/TUIMessage/hooks/useMessageHandler.ts +13 -13
- package/src/components/TUIMessage/hooks/useMessageReply.ts +6 -4
- package/src/components/TUIMessage/utils/decodeText.ts +2 -3
- package/src/components/TUIMessage/utils/index.ts +1 -2
- package/src/components/TUIMessageInput/EmojiPicker.tsx +4 -4
- package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +8 -8
- package/src/components/TUIMessageInput/InputQuoteDefalut.tsx +4 -2
- package/src/components/TUIMessageInput/TUIForward.tsx +22 -15
- package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +15 -9
- package/src/components/TUIMessageInput/hooks/useEmojiPicker.tsx +2 -2
- package/src/components/TUIMessageInput/hooks/useHandleForwardMessage.tsx +4 -4
- package/src/components/TUIMessageInput/hooks/useHandleQuoteMessage.tsx +5 -5
- package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +3 -3
- package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +12 -9
- package/src/components/TUIMessageInput/hooks/useUploadElement.tsx +2 -2
- package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +1 -1
- package/src/components/TUIMessageList/TUIMessageList.tsx +5 -6
- package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +5 -2
- package/src/components/TUIProfile/TUIProfile.tsx +3 -1
- package/src/components/TUIProfile/TUIProfileDefault.tsx +15 -15
- package/src/components/TUIProfile/hooks/useMyProfile.tsx +6 -6
- package/src/components/Toast/index.tsx +3 -3
- package/src/components/Toast/styles/layout.scss +1 -1
- package/src/components/untils.ts +1 -1
- package/src/constants.ts +5 -0
- package/src/context/TUIChatStateContext.tsx +4 -4
- package/src/context/TUIContactContext.tsx +1 -1
- package/src/context/TUIConversationContext.tsx +2 -2
- package/src/context/TUIMessageContext.tsx +1 -1
- package/src/context/TUIMessageInputContext.tsx +1 -1
- package/src/hooks/useConversation.tsx +1 -1
- package/src/hooks/useProfile.tsx +2 -2
- package/tsconfig.json +1 -0
- package/dist/cjs/components/Icon/images/create.png.js +0 -1
- package/dist/esm/components/Icon/images/create.png.js +0 -1
|
@@ -19,7 +19,7 @@ export const useConversationUpdate = (
|
|
|
19
19
|
setConversationList(filterConversation(event.data));
|
|
20
20
|
} else {
|
|
21
21
|
setConversationList(event.data.filter(
|
|
22
|
-
(item) => item.type !== TencentCloudChat.TYPES.CONV_SYSTEM,
|
|
22
|
+
(item: any) => item.type !== TencentCloudChat.TYPES.CONV_SYSTEM,
|
|
23
23
|
));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -27,7 +27,7 @@ export const useConversationUpdate = (
|
|
|
27
27
|
forceUpdate();
|
|
28
28
|
}
|
|
29
29
|
if (customHandler && typeof customHandler === 'function') {
|
|
30
|
-
customHandler(setConversationList, event);
|
|
30
|
+
setConversationList && customHandler(setConversationList, event);
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
chat?.on(TencentCloudChat.EVENT.CONVERSATION_LIST_UPDATED, onConversationListUpdated);
|
|
@@ -3,7 +3,7 @@ import { ChatSDK, Conversation } from '@tencentcloud/chat';
|
|
|
3
3
|
import { TUIStore, StoreName } from '@tencentcloud/chat-uikit-engine';
|
|
4
4
|
import { useTranslation } from 'react-i18next';
|
|
5
5
|
import { isH5, isPC } from '../../utils/env';
|
|
6
|
-
import { useTUIKit } from './hooks/useTUIKit';
|
|
6
|
+
import { useTUIKit, UseContactParams } from './hooks/useTUIKit';
|
|
7
7
|
import { useCreateTUIKitContext } from './hooks/useCreateTUIKitContext';
|
|
8
8
|
import { TUIKitProvider } from '../../context/TUIKitContext';
|
|
9
9
|
import './styles/index.scss';
|
|
@@ -14,6 +14,7 @@ import { TUIManage } from '../TUIManage';
|
|
|
14
14
|
import { TUIProfile } from '../TUIProfile';
|
|
15
15
|
import { TUIContact } from '../TUIContact';
|
|
16
16
|
import { TUIContactInfo } from '../TUIContact/TUIContactInfo/TUIContactInfo';
|
|
17
|
+
import { TUIKIT_TABBAR } from '../../constants';
|
|
17
18
|
import '../../locales/index';
|
|
18
19
|
import chats from '../Icon/images/chats.svg';
|
|
19
20
|
import chatsSelected from '../Icon/images/chats-selected.svg';
|
|
@@ -21,7 +22,7 @@ import contacts from '../Icon/images/contacts.svg';
|
|
|
21
22
|
import contactsSelected from '../Icon/images/contacts-selected.svg';
|
|
22
23
|
|
|
23
24
|
export interface ChatProps {
|
|
24
|
-
chat?:
|
|
25
|
+
chat?: any,
|
|
25
26
|
language?: string,
|
|
26
27
|
customClasses?: unknown,
|
|
27
28
|
activeConversation?: Conversation,
|
|
@@ -33,23 +34,27 @@ interface RenderPCProps {
|
|
|
33
34
|
setModuleValue: (value: string) => void
|
|
34
35
|
}
|
|
35
36
|
interface RenderH5Props {
|
|
36
|
-
|
|
37
|
+
moduleValue: string,
|
|
38
|
+
currentConversationID: string,
|
|
39
|
+
tabbarRender: any,
|
|
40
|
+
contactData: UseContactParams,
|
|
41
|
+
setModuleValue: (value: string) => void
|
|
37
42
|
}
|
|
38
43
|
|
|
39
44
|
const tabbarList = [
|
|
40
45
|
{
|
|
41
46
|
id: 1,
|
|
42
|
-
name:
|
|
47
|
+
name: TUIKIT_TABBAR.CHATS,
|
|
43
48
|
icon: chats,
|
|
44
49
|
selectedIcon: chatsSelected,
|
|
45
|
-
value:
|
|
50
|
+
value: TUIKIT_TABBAR.CHATS,
|
|
46
51
|
},
|
|
47
52
|
{
|
|
48
53
|
id: 2,
|
|
49
|
-
name:
|
|
54
|
+
name: TUIKIT_TABBAR.CONTACTS,
|
|
50
55
|
icon: contacts,
|
|
51
56
|
selectedIcon: contactsSelected,
|
|
52
|
-
value:
|
|
57
|
+
value: TUIKIT_TABBAR.CONTACTS,
|
|
53
58
|
},
|
|
54
59
|
];
|
|
55
60
|
const TUIMessageInputConfig = {
|
|
@@ -63,20 +68,20 @@ function RenderForPC({ moduleValue, tabbarRender, setModuleValue } : RenderPCPro
|
|
|
63
68
|
<div className="sample-chat-left-container">
|
|
64
69
|
<TUIProfile className="sample-chat-profile" />
|
|
65
70
|
{tabbarRender}
|
|
66
|
-
{moduleValue ===
|
|
67
|
-
{moduleValue ===
|
|
71
|
+
{moduleValue === TUIKIT_TABBAR.CHATS && <TUIConversation />}
|
|
72
|
+
{moduleValue === TUIKIT_TABBAR.CONTACTS && <TUIContact />}
|
|
68
73
|
</div>
|
|
69
|
-
{moduleValue ===
|
|
74
|
+
{moduleValue === TUIKIT_TABBAR.CHATS && (
|
|
70
75
|
<>
|
|
71
76
|
<TUIChat />
|
|
72
77
|
<TUIManage />
|
|
73
78
|
</>
|
|
74
79
|
)}
|
|
75
|
-
{moduleValue ===
|
|
80
|
+
{moduleValue === TUIKIT_TABBAR.CONTACTS && (
|
|
76
81
|
<TUIContact>
|
|
77
82
|
<TUIContactInfo
|
|
78
83
|
showChat={() => {
|
|
79
|
-
setModuleValue(
|
|
84
|
+
setModuleValue(TUIKIT_TABBAR.CHATS);
|
|
80
85
|
}}
|
|
81
86
|
/>
|
|
82
87
|
</TUIContact>
|
|
@@ -85,21 +90,34 @@ function RenderForPC({ moduleValue, tabbarRender, setModuleValue } : RenderPCPro
|
|
|
85
90
|
);
|
|
86
91
|
}
|
|
87
92
|
|
|
88
|
-
function RenderForH5({
|
|
93
|
+
function RenderForH5({
|
|
94
|
+
moduleValue, contactData, tabbarRender, currentConversationID, setModuleValue,
|
|
95
|
+
}: RenderH5Props) {
|
|
89
96
|
return (
|
|
90
97
|
<>
|
|
91
|
-
{!currentConversationID && (
|
|
98
|
+
{!currentConversationID && !contactData && (
|
|
92
99
|
<div className="sample-chat-h5-container">
|
|
93
100
|
<TUIProfile className="sample-profile" />
|
|
94
|
-
|
|
101
|
+
{tabbarRender}
|
|
102
|
+
{moduleValue === TUIKIT_TABBAR.CHATS && <TUIConversation />}
|
|
103
|
+
{moduleValue === TUIKIT_TABBAR.CONTACTS && <TUIContact />}
|
|
95
104
|
</div>
|
|
96
105
|
)}
|
|
97
|
-
{currentConversationID && (
|
|
106
|
+
{moduleValue === TUIKIT_TABBAR.CHATS && currentConversationID && (
|
|
98
107
|
<>
|
|
99
108
|
<TUIChat TUIMessageInputConfig={TUIMessageInputConfig} />
|
|
100
109
|
<TUIManage />
|
|
101
110
|
</>
|
|
102
111
|
)}
|
|
112
|
+
{ moduleValue === TUIKIT_TABBAR.CONTACTS && contactData && (
|
|
113
|
+
<TUIContact>
|
|
114
|
+
<TUIContactInfo
|
|
115
|
+
showChat={() => {
|
|
116
|
+
setModuleValue(TUIKIT_TABBAR.CHATS);
|
|
117
|
+
}}
|
|
118
|
+
/>
|
|
119
|
+
</TUIContact>
|
|
120
|
+
)}
|
|
103
121
|
</>
|
|
104
122
|
);
|
|
105
123
|
}
|
|
@@ -183,7 +201,7 @@ export function TUIKit<
|
|
|
183
201
|
<TUIKitProvider value={chatContextValue}>
|
|
184
202
|
<div className="tui-kit">
|
|
185
203
|
{children || (isPC && <RenderForPC moduleValue={moduleValue} tabbarRender={tabbarRender} setModuleValue={setModuleValue} />)
|
|
186
|
-
|| (isH5 && <RenderForH5 currentConversationID={currentConversationID} />)}
|
|
204
|
+
|| (isH5 && <RenderForH5 contactData={contactData} moduleValue={moduleValue} tabbarRender={tabbarRender} currentConversationID={currentConversationID} setModuleValue={setModuleValue} />)}
|
|
187
205
|
</div>
|
|
188
206
|
</TUIKitProvider>
|
|
189
207
|
);
|
|
@@ -42,7 +42,7 @@ export const useTUIKit = ({
|
|
|
42
42
|
language,
|
|
43
43
|
}:UseChatParams) => {
|
|
44
44
|
const { i18n } = useTranslation();
|
|
45
|
-
const [conversation, setConversation] = useState<Conversation>(paramsActiveConversation);
|
|
45
|
+
const [conversation, setConversation] = useState<Conversation | undefined>(paramsActiveConversation);
|
|
46
46
|
const [myProfile, setMyProfile] = useState<Profile>();
|
|
47
47
|
const [TUIManageShow, setTUIManageShow] = useState<boolean>(false);
|
|
48
48
|
const [TUIProfileShow, setTUIProfileShow] = useState<boolean>(false);
|
|
@@ -61,10 +61,10 @@ export const useTUIKit = ({
|
|
|
61
61
|
if (activeConversation) {
|
|
62
62
|
chat?.setMessageRead({ conversationID: activeConversation.conversationID });
|
|
63
63
|
}
|
|
64
|
-
if (conversation && (activeConversation
|
|
64
|
+
if (conversation && (activeConversation?.conversationID !== conversation.conversationID)) {
|
|
65
65
|
setTUIManageShow(false);
|
|
66
66
|
}
|
|
67
|
-
setConversation(activeConversation);
|
|
67
|
+
activeConversation && setConversation(activeConversation);
|
|
68
68
|
},
|
|
69
69
|
[chat],
|
|
70
70
|
);
|
|
@@ -73,7 +73,7 @@ export const useTUIKit = ({
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
useEffect(() => {
|
|
76
|
-
setConversation(paramsActiveConversation);
|
|
76
|
+
paramsActiveConversation && setConversation(paramsActiveConversation);
|
|
77
77
|
}, [paramsActiveConversation]);
|
|
78
78
|
return {
|
|
79
79
|
conversation,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useState, useEffect } from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Conversation} from '@tencentcloud/chat';
|
|
3
4
|
import './styles/index.scss';
|
|
4
5
|
import { Icon, IconTypes } from '../Icon';
|
|
5
6
|
import { Avatar, defaultGroupAvatarWork, defaultUserAvatar } from '../Avatar';
|
|
@@ -10,11 +11,13 @@ import { getMessageProfile } from '../ConversationPreview/utils';
|
|
|
10
11
|
import { useConversationUpdate } from '../TUIConversationList/hooks/useConversationUpdate';
|
|
11
12
|
import { useConversation } from '../../hooks';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
|
|
15
|
+
function UnMemoizedTUIManage<T>(
|
|
16
|
+
):React.ReactElement {
|
|
14
17
|
const { t } = useTranslation();
|
|
15
|
-
const [conversation, setConversation] = useState(
|
|
16
|
-
const [profile, setProfile] = useState(
|
|
17
|
-
const [isPinned, setIsPinned] = useState(false);
|
|
18
|
+
const [conversation, setConversation] = useState<Conversation>();
|
|
19
|
+
const [profile, setProfile] = useState<any>();
|
|
20
|
+
const [isPinned, setIsPinned] = useState<boolean>(false);
|
|
18
21
|
const [forceUpdateCount, setForceUpdateCount] = useState(0);
|
|
19
22
|
const {
|
|
20
23
|
conversation: activeConversation,
|
|
@@ -23,30 +26,31 @@ export function TUIManage() {
|
|
|
23
26
|
TUIManageShow,
|
|
24
27
|
setTUIManageShow,
|
|
25
28
|
} = useTUIKitContext('TUIManage');
|
|
26
|
-
useConversationUpdate(
|
|
29
|
+
useConversationUpdate(undefined, () => {
|
|
27
30
|
setForceUpdateCount((count) => count + 1);
|
|
28
31
|
});
|
|
29
32
|
const { pinConversation, deleteConversation } = useConversation(chat);
|
|
30
|
-
const pinChatChange = (e) => {
|
|
33
|
+
const pinChatChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
31
34
|
setIsPinned(e.target.checked);
|
|
32
|
-
pinConversation({
|
|
35
|
+
conversation?.conversationID && pinConversation({
|
|
33
36
|
conversationID: conversation.conversationID,
|
|
34
37
|
isPinned: e.target.checked,
|
|
35
38
|
});
|
|
36
39
|
};
|
|
37
40
|
const handleDelete = () => {
|
|
38
|
-
deleteConversation(conversation.conversationID);
|
|
39
|
-
setActiveConversation(
|
|
41
|
+
conversation?.conversationID && deleteConversation(conversation.conversationID);
|
|
42
|
+
setActiveConversation(undefined);
|
|
40
43
|
};
|
|
41
44
|
const close = () => {
|
|
42
|
-
setTUIManageShow(false);
|
|
45
|
+
setTUIManageShow && setTUIManageShow(false);
|
|
43
46
|
};
|
|
44
47
|
useEffect(() => {
|
|
45
48
|
setConversation(activeConversation);
|
|
46
|
-
setProfile(getMessageProfile(activeConversation));
|
|
49
|
+
activeConversation && setProfile(getMessageProfile(activeConversation));
|
|
47
50
|
setIsPinned(activeConversation ? activeConversation.isPinned : false);
|
|
48
51
|
}, [activeConversation, forceUpdateCount]);
|
|
49
|
-
|
|
52
|
+
// eslint-disable-next-line
|
|
53
|
+
// @ts-ignore
|
|
50
54
|
return (
|
|
51
55
|
TUIManageShow
|
|
52
56
|
&& activeConversation && (
|
|
@@ -91,7 +95,7 @@ export function TUIManage() {
|
|
|
91
95
|
<div className="manage-handle-title">
|
|
92
96
|
{t('TUIConversation.Pin')}
|
|
93
97
|
</div>
|
|
94
|
-
<Switch onChange={pinChatChange} checked={isPinned} />
|
|
98
|
+
<Switch onChange={(e: any)=> {pinChatChange(e)}} checked={isPinned} />
|
|
95
99
|
</div>
|
|
96
100
|
{isPC && (
|
|
97
101
|
<div
|
|
@@ -110,3 +114,6 @@ export function TUIManage() {
|
|
|
110
114
|
)
|
|
111
115
|
);
|
|
112
116
|
}
|
|
117
|
+
|
|
118
|
+
export const TUIManage = React.memo(UnMemoizedTUIManage) as unknown as
|
|
119
|
+
typeof UnMemoizedTUIManage;
|
|
@@ -24,7 +24,7 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
24
24
|
if (audioSource && audioSource !== audioRef?.current) {
|
|
25
25
|
audioSource.pause();
|
|
26
26
|
audioSource.currentTime = 0;
|
|
27
|
-
setAudioSource(null);
|
|
27
|
+
setAudioSource && setAudioSource(null);
|
|
28
28
|
}
|
|
29
29
|
if (audioRef?.current) {
|
|
30
30
|
if (!audioRef.current.paused) {
|
|
@@ -33,7 +33,7 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
33
33
|
} else {
|
|
34
34
|
audioRef.current.play();
|
|
35
35
|
setPlayClassName(true);
|
|
36
|
-
setAudioSource(audioRef.current);
|
|
36
|
+
setAudioSource && setAudioSource(audioRef.current);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
}, [audioRef, audioSource]);
|
|
@@ -42,8 +42,10 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
42
42
|
setPlayClassName(false);
|
|
43
43
|
};
|
|
44
44
|
const endFunction = () => {
|
|
45
|
-
setAudioSource(null);
|
|
46
|
-
audioRef.current
|
|
45
|
+
setAudioSource && setAudioSource(null);
|
|
46
|
+
if(audioRef.current) {
|
|
47
|
+
audioRef.current.currentTime = 0
|
|
48
|
+
}
|
|
47
49
|
pauseFunction();
|
|
48
50
|
};
|
|
49
51
|
|
|
@@ -52,7 +54,7 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
52
54
|
audioRef.current.addEventListener('pause', pauseFunction);
|
|
53
55
|
audioRef.current.addEventListener('ended', endFunction);
|
|
54
56
|
audioRef.current.addEventListener('canplay', () => {
|
|
55
|
-
setCurrentTime(parseInt(`${audioRef.current
|
|
57
|
+
setCurrentTime(parseInt(`${audioRef.current?.duration}`, 10));
|
|
56
58
|
});
|
|
57
59
|
}
|
|
58
60
|
return () => {
|
|
@@ -65,7 +67,7 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
65
67
|
|
|
66
68
|
return (
|
|
67
69
|
<div className="message-audio">
|
|
68
|
-
<div className={`message-audio-content message-audio-${message
|
|
70
|
+
<div className={`message-audio-content message-audio-${message?.flow}`}>
|
|
69
71
|
<Icon className={`${message?.flow} ${playClassName ? 'playing' : ''}`} type={IconTypes.VOICE} width={16} height={16} onClick={play} />
|
|
70
72
|
<span>{`${currentTime}s`}</span>
|
|
71
73
|
</div>
|
|
@@ -10,7 +10,7 @@ import { handleDisplayAvatar } from '../untils';
|
|
|
10
10
|
export interface MessageAvatarProps {
|
|
11
11
|
CustomAvatar?: React.ReactElement,
|
|
12
12
|
className?: string,
|
|
13
|
-
message
|
|
13
|
+
message: Message,
|
|
14
14
|
showType?: messageShowType,
|
|
15
15
|
}
|
|
16
16
|
|
|
@@ -27,7 +27,7 @@ export function MessageAvatar <T extends MessageAvatarProps>(
|
|
|
27
27
|
const show = showType === messageShowType.ALL || message?.flow === showType;
|
|
28
28
|
|
|
29
29
|
if (!show || showType === messageShowType.NONE) {
|
|
30
|
-
return
|
|
30
|
+
return <></>;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (CustomAvatar) {
|
|
@@ -47,26 +47,28 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
47
47
|
) && message?.status === MESSAGE_STATUS.UNSEND);
|
|
48
48
|
|
|
49
49
|
const handleMouseEnter = () => {
|
|
50
|
-
setActiveMessageID(message
|
|
50
|
+
setActiveMessageID && message && setActiveMessageID(message?.ID);
|
|
51
51
|
setPluginsShow(true);
|
|
52
52
|
};
|
|
53
53
|
const handleMouseLeave = () => {
|
|
54
|
-
setActiveMessageID(message.ID);
|
|
54
|
+
setActiveMessageID && message && setActiveMessageID(message.ID);
|
|
55
55
|
setPluginsShow(false);
|
|
56
56
|
};
|
|
57
57
|
|
|
58
58
|
const activeMessage = () => {
|
|
59
|
-
setActiveMessageID(message.ID);
|
|
59
|
+
setActiveMessageID && message && setActiveMessageID(message.ID);
|
|
60
60
|
};
|
|
61
61
|
|
|
62
62
|
useEffect(() => {
|
|
63
|
-
if (activeMessageID !== message
|
|
63
|
+
if (activeMessageID !== message?.ID) {
|
|
64
64
|
setPluginsShow(false);
|
|
65
65
|
}
|
|
66
66
|
}, [activeMessageID]);
|
|
67
67
|
|
|
68
68
|
const handleReplyMessage = () => {
|
|
69
|
-
|
|
69
|
+
// eslint-disable-next-line
|
|
70
|
+
// @ts-ignore
|
|
71
|
+
setHighlightedMessageId && setHighlightedMessageId(replyMessage?.ID);
|
|
70
72
|
};
|
|
71
73
|
|
|
72
74
|
return (
|
|
@@ -15,7 +15,7 @@ import { useMessageContextHandler } from './hooks';
|
|
|
15
15
|
import { MessageStatus } from './MessageStatus';
|
|
16
16
|
import { useTUIMessageContext } from '../../context';
|
|
17
17
|
|
|
18
|
-
const components = {
|
|
18
|
+
const components: any = {
|
|
19
19
|
[TencentCloudChat.TYPES.MSG_TEXT]: MessageText,
|
|
20
20
|
[TencentCloudChat.TYPES.MSG_FACE]: MessageFace,
|
|
21
21
|
[TencentCloudChat.TYPES.MSG_IMAGE]: MessageImage,
|
|
@@ -51,7 +51,7 @@ function MessageContextWithContext <T extends MessageContextProps>(
|
|
|
51
51
|
LocationElement,
|
|
52
52
|
} = useTUIMessageContext('MessageCustom');
|
|
53
53
|
|
|
54
|
-
const CustemComponents = {
|
|
54
|
+
const CustemComponents: any = {
|
|
55
55
|
[TencentCloudChat.TYPES.MSG_TEXT]: TextElement,
|
|
56
56
|
[TencentCloudChat.TYPES.MSG_FACE]: FaceElement,
|
|
57
57
|
[TencentCloudChat.TYPES.MSG_IMAGE]: ImageElement,
|
|
@@ -63,7 +63,7 @@ function MessageContextWithContext <T extends MessageContextProps>(
|
|
|
63
63
|
[TencentCloudChat.TYPES.MSG_LOCATION]: LocationElement,
|
|
64
64
|
};
|
|
65
65
|
|
|
66
|
-
const Elements = CustemComponents[message
|
|
66
|
+
const Elements = message?.type && (CustemComponents[message.type] || components[message.type]);
|
|
67
67
|
return Elements
|
|
68
68
|
&& (
|
|
69
69
|
<Elements context={context} message={message}>
|
|
@@ -15,11 +15,11 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
15
15
|
} = props;
|
|
16
16
|
const { t } = useTranslation();
|
|
17
17
|
const { MessageCustomPlugins } = useComponentContext('MessageCustom');
|
|
18
|
-
const handleContext = (data) => {
|
|
18
|
+
const handleContext = (data: any) => {
|
|
19
19
|
if (data.data === 'Hyperlink') {
|
|
20
20
|
const extension = JSONStringToParse(data?.extension);
|
|
21
21
|
if (extension?.item) {
|
|
22
|
-
return extension?.item.map((item) => <a target="_blank" key={item.value} href={item.value} rel="noreferrer">{item.value}</a>);
|
|
22
|
+
return extension?.item.map((item: any) => <a target="_blank" key={item.value} href={item.value} rel="noreferrer">{item.value}</a>);
|
|
23
23
|
}
|
|
24
24
|
if (extension?.hyperlinks_text) {
|
|
25
25
|
const hyperlinks = extension.hyperlinks_text;
|
|
@@ -38,6 +38,8 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
38
38
|
const botMessage = JSONStringToParse(data.data);
|
|
39
39
|
if (botMessage?.chatbotPlugin === 1 && botMessage?.src === 15 && (botMessage?.subtype === 'welcome_msg' || botMessage?.subtype === 'clarify_msg')) {
|
|
40
40
|
return (
|
|
41
|
+
// eslint-disable-next-line
|
|
42
|
+
// @ts-ignore
|
|
41
43
|
<MessageCustomPlugins data={JSONStringToParse(data.data).content} />
|
|
42
44
|
);
|
|
43
45
|
}
|
|
@@ -45,7 +47,7 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
45
47
|
};
|
|
46
48
|
|
|
47
49
|
return (
|
|
48
|
-
<div className={`bubble message-custom bubble-${message
|
|
50
|
+
<div className={`bubble message-custom bubble-${message?.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
49
51
|
{handleContext(context?.custom)}
|
|
50
52
|
{children}
|
|
51
53
|
</div>
|
|
@@ -11,8 +11,8 @@ function MessageFaceWithContext <T extends MessageContextProps>(
|
|
|
11
11
|
} = props;
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
|
-
<div className={`bubble message-face bubble-${message
|
|
15
|
-
<img className="img" src={context
|
|
14
|
+
<div className={`bubble message-face bubble-${message?.flow}`}>
|
|
15
|
+
<img className="img" src={context?.url} alt="" />
|
|
16
16
|
{children}
|
|
17
17
|
</div>
|
|
18
18
|
);
|
|
@@ -13,18 +13,18 @@ function MessageFileWithContext <T extends MessageContextProps>(
|
|
|
13
13
|
} = props;
|
|
14
14
|
return (
|
|
15
15
|
<a
|
|
16
|
-
href={context
|
|
17
|
-
download={context
|
|
16
|
+
href={context?.url}
|
|
17
|
+
download={context?.name}
|
|
18
18
|
target="_parent"
|
|
19
|
-
className={`bubble message-file bubble-${message
|
|
19
|
+
className={`bubble message-file bubble-${message?.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}
|
|
20
20
|
rel="noreferrer"
|
|
21
21
|
>
|
|
22
22
|
<main className="message-file-main">
|
|
23
23
|
<Icon className="icon" width={15} height={20} type={IconTypes.FILE} />
|
|
24
|
-
<label htmlFor="message-file">{ context
|
|
24
|
+
<label htmlFor="message-file">{ context?.name }</label>
|
|
25
25
|
</main>
|
|
26
26
|
<div className="message-file-footer">
|
|
27
|
-
<span className="message-file-size">{ context
|
|
27
|
+
<span className="message-file-size">{ context?.size }</span>
|
|
28
28
|
{children}
|
|
29
29
|
</div>
|
|
30
30
|
</a>
|
|
@@ -15,12 +15,14 @@ function MessageImageWithContext <T extends MessageContextProps>(
|
|
|
15
15
|
|
|
16
16
|
const [show, setShow] = useState(false);
|
|
17
17
|
|
|
18
|
-
const bigImageInfo = message?.payload?.imageInfoArray?.filter((item) => item.type === 0);
|
|
18
|
+
const bigImageInfo = message?.payload?.imageInfoArray?.filter((item: any) => item.type === 0);
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
21
|
<div className="message-image">
|
|
22
22
|
<div role="button" tabIndex={0} onClick={() => { setShow(true); }}>
|
|
23
|
-
<img className={`img ${isH5 ? 'img-h5' : ''} bubble-${message
|
|
23
|
+
<img className={`img ${isH5 ? 'img-h5' : ''} bubble-${message?.flow}
|
|
24
|
+
${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}
|
|
25
|
+
src={context?.url} alt="" />
|
|
24
26
|
</div>
|
|
25
27
|
{children}
|
|
26
28
|
{
|
|
@@ -11,9 +11,9 @@ function MessageLocationWithContext <T extends MessageContextProps>(
|
|
|
11
11
|
} = props;
|
|
12
12
|
|
|
13
13
|
return (
|
|
14
|
-
<a className="bubble message-location" href={context
|
|
15
|
-
<span>{context
|
|
16
|
-
<img src={context
|
|
14
|
+
<a className="bubble message-location" href={context?.href} target="_blank" title="点击查看详情" rel="noreferrer">
|
|
15
|
+
<span>{context?.description}</span>
|
|
16
|
+
<img src={context?.url} alt="" />
|
|
17
17
|
{children}
|
|
18
18
|
</a>
|
|
19
19
|
);
|
|
@@ -12,12 +12,12 @@ function MessageMergerWithContext <T extends MessageContextProps>(
|
|
|
12
12
|
} = props;
|
|
13
13
|
|
|
14
14
|
return (
|
|
15
|
-
<div className={`bubble message-merger bubble-${message
|
|
16
|
-
<h3>{context
|
|
15
|
+
<div className={`bubble message-merger bubble-${message?.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
16
|
+
<h3>{context?.title}</h3>
|
|
17
17
|
<ul className="message-merger-list">
|
|
18
18
|
{
|
|
19
19
|
context?.abstractList.length > 0
|
|
20
|
-
&& context
|
|
20
|
+
&& context?.abstractList.map((item:string, index:number) => {
|
|
21
21
|
const key = item + index;
|
|
22
22
|
return (<li className="message-merger-item" key={key}>{item}</li>);
|
|
23
23
|
})
|
|
@@ -4,6 +4,7 @@ import TencentCloudChat from '@tencentcloud/chat';
|
|
|
4
4
|
import './styles/index.scss';
|
|
5
5
|
|
|
6
6
|
import { Plugins, PluginsProps } from '../Plugins';
|
|
7
|
+
import { IPluginsRef } from '../ConversationPreview';
|
|
7
8
|
import { Icon, IconTypes } from '../Icon';
|
|
8
9
|
import { useTUIChatStateContext, useTUIMessageContext } from '../../context';
|
|
9
10
|
import { useMessagePluginElement, useMessageHandler } from './hooks';
|
|
@@ -41,7 +42,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
41
42
|
const { t } = useTranslation();
|
|
42
43
|
const [className, setClassName] = useState('');
|
|
43
44
|
const [popStyle, setPopStyle] = useState({});
|
|
44
|
-
const pluginsRef = useRef(
|
|
45
|
+
const pluginsRef = useRef<IPluginsRef>();
|
|
45
46
|
|
|
46
47
|
const { message, plugin: contextPlugin } = useTUIMessageContext('MessagePlugins');
|
|
47
48
|
const { messageListRef } = useTUIChatStateContext('MessageBubbleWithContext');
|
|
@@ -88,7 +89,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
88
89
|
},
|
|
89
90
|
};
|
|
90
91
|
|
|
91
|
-
const handleVisible = (data) => {
|
|
92
|
+
const handleVisible = (data: any) => {
|
|
92
93
|
if (data.x && data.y) {
|
|
93
94
|
const isTop = data.y < data.height ? true : data.top;
|
|
94
95
|
const isLeft = data.x < data.width ? true : data.left;
|
|
@@ -108,7 +109,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
108
109
|
</div>
|
|
109
110
|
),
|
|
110
111
|
handle: (e) => {
|
|
111
|
-
pluginsRef.current.closeMore();
|
|
112
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
112
113
|
handleRevokeMessage(e);
|
|
113
114
|
},
|
|
114
115
|
message,
|
|
@@ -125,7 +126,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
125
126
|
</div>
|
|
126
127
|
),
|
|
127
128
|
handle: (e) => {
|
|
128
|
-
pluginsRef.current.closeMore();
|
|
129
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
129
130
|
handleDelMessage(e);
|
|
130
131
|
},
|
|
131
132
|
message,
|
|
@@ -141,7 +142,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
141
142
|
</div>
|
|
142
143
|
),
|
|
143
144
|
handle: (e) => {
|
|
144
|
-
pluginsRef.current.closeMore();
|
|
145
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
145
146
|
handleReplyMessage(e);
|
|
146
147
|
},
|
|
147
148
|
message,
|
|
@@ -157,7 +158,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
157
158
|
</div>
|
|
158
159
|
),
|
|
159
160
|
handle: (e) => {
|
|
160
|
-
pluginsRef.current.closeMore();
|
|
161
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
161
162
|
handleCopyMessage(e);
|
|
162
163
|
},
|
|
163
164
|
message,
|
|
@@ -173,8 +174,8 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
173
174
|
</div>
|
|
174
175
|
),
|
|
175
176
|
handle: (e) => {
|
|
176
|
-
pluginsRef.current.closeMore();
|
|
177
|
-
handleResendMessage(
|
|
177
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
178
|
+
handleResendMessage();
|
|
178
179
|
},
|
|
179
180
|
message,
|
|
180
181
|
isShow: pluginConfig.resend.isShow && message?.status !== MESSAGE_STATUS.SUCCESS,
|
|
@@ -189,7 +190,7 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
189
190
|
</div>
|
|
190
191
|
),
|
|
191
192
|
handle: (e) => {
|
|
192
|
-
pluginsRef.current.closeMore();
|
|
193
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
193
194
|
handleForWardMessage(e);
|
|
194
195
|
},
|
|
195
196
|
message,
|
|
@@ -211,7 +212,8 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
211
212
|
const MoreIcon = propsMoreIcon || contextPlugin?.MoreIcon || <Icon className="icon-more" width={16} height={16} type={IconTypes.MORE} />;
|
|
212
213
|
|
|
213
214
|
const showNumber = propsShowNumber || contextPlugin?.showNumber || 0;
|
|
214
|
-
|
|
215
|
+
// eslint-disable-next-line
|
|
216
|
+
// @ts-ignore
|
|
215
217
|
return message?.status !== MESSAGE_STATUS.UNSEND && (
|
|
216
218
|
<Plugins
|
|
217
219
|
className="message-plugin"
|
|
@@ -48,7 +48,7 @@ function MessageProgressWithContext <T extends MessageProgressProps>(
|
|
|
48
48
|
uploadPendingMessageList.map((item:MessageProgressItem) => {
|
|
49
49
|
if (item?.ID === message?.ID) {
|
|
50
50
|
setProgressMessage(item);
|
|
51
|
-
setProgress(item
|
|
51
|
+
item?.progress && setProgress(item.progress);
|
|
52
52
|
}
|
|
53
53
|
return item;
|
|
54
54
|
});
|
|
@@ -56,13 +56,14 @@ function MessageProgressWithContext <T extends MessageProgressProps>(
|
|
|
56
56
|
}, [uploadPendingMessageList]);
|
|
57
57
|
|
|
58
58
|
if (!isShow) {
|
|
59
|
-
return
|
|
59
|
+
return <></>;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
if (Progress) {
|
|
62
|
+
if (Progress && progressMessage) {
|
|
63
63
|
return <Progress message={progressMessage} />;
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
// eslint-disable-next-line
|
|
66
|
+
// @ts-ignore
|
|
66
67
|
return handleLoading() && (
|
|
67
68
|
<div className="progress-box">
|
|
68
69
|
<span
|
|
@@ -15,7 +15,7 @@ function MessageRevokeWithContext <T extends MessageContextProps>(
|
|
|
15
15
|
const { operateMessage } = useTUIChatActionContext('MessageRevokeWithContext');
|
|
16
16
|
|
|
17
17
|
const handleRevoke = useCallback(() => {
|
|
18
|
-
operateMessage({
|
|
18
|
+
operateMessage && message && operateMessage({
|
|
19
19
|
[MESSAGE_OPERATE.REVOKE]: message,
|
|
20
20
|
});
|
|
21
21
|
}, [operateMessage]);
|