@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
|
@@ -18,7 +18,7 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
18
18
|
} = props;
|
|
19
19
|
const { MessageTextPlugins } = useComponentContext('MessageText');
|
|
20
20
|
const { firstSendMessage } = useTUIChatStateContext('MessageText');
|
|
21
|
-
if (MessageTextPlugins && message
|
|
21
|
+
if (MessageTextPlugins && message?.flow === 'in' && (firstSendMessage && firstSendMessage?.time <= message?.time)) {
|
|
22
22
|
return (
|
|
23
23
|
<div className={`bubble message-text bubble-${message.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
24
24
|
<MessageTextPlugins data={message} />
|
|
@@ -34,10 +34,10 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
34
34
|
return text.replace(urlRegex, (website) => `<a class='website' href='${website}' target='_blank'>${website}</a>`);
|
|
35
35
|
};
|
|
36
36
|
return (
|
|
37
|
-
<div className={`bubble message-text bubble-${message
|
|
37
|
+
<div className={`bubble message-text bubble-${message?.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
38
38
|
<div className="message-text-content">
|
|
39
|
-
{context
|
|
40
|
-
const key = message
|
|
39
|
+
{context?.text.map((item: any, index: number) => {
|
|
40
|
+
const key = message && message?.ID + index;
|
|
41
41
|
if (item.name === 'text') {
|
|
42
42
|
return (
|
|
43
43
|
<p
|
|
@@ -19,15 +19,15 @@ function MessageVideoWithContext <T extends MessageContextProps>(
|
|
|
19
19
|
return (
|
|
20
20
|
<div className={`message-video ${isH5 ? 'message-video-h5' : ''}`}>
|
|
21
21
|
<div className={`${message?.status === MESSAGE_STATUS.SUCCESS ? 'snap-video' : ''}`} role="button" tabIndex={0} onClick={() => { setShow(true); }}>
|
|
22
|
-
{isPC && (<video muted controls={false} src={context
|
|
23
|
-
{isH5 && (<img src={message
|
|
22
|
+
{isPC && (<video muted controls={false} src={context?.url} />)}
|
|
23
|
+
{isH5 && (<img src={message?.payload.snapshotUrl || transparentPosterUrl} style={{ maxHeight: '200px', maxWidth: '200px', borderRadius: '10px' }} />)}
|
|
24
24
|
</div>
|
|
25
25
|
|
|
26
26
|
{children}
|
|
27
27
|
{
|
|
28
28
|
show && (
|
|
29
29
|
<Model onClick={(e) => { e.stopPropagation(); setShow(false); }}>
|
|
30
|
-
<video className="play-video" autoPlay controls src={context
|
|
30
|
+
<video className="play-video" autoPlay controls src={context?.url} />
|
|
31
31
|
</Model>
|
|
32
32
|
)
|
|
33
33
|
}
|
|
@@ -69,7 +69,7 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
69
69
|
key={message?.ID}
|
|
70
70
|
>
|
|
71
71
|
{prefix}
|
|
72
|
-
<MessageAvatar message={message} CustomAvatar={customAvatar} showType={showAvatar} />
|
|
72
|
+
{message && <MessageAvatar message={message} CustomAvatar={customAvatar} showType={showAvatar} />}
|
|
73
73
|
<main data-message-id={message?.ID} className="content">
|
|
74
74
|
<MessageName message={message} CustomName={customName} showType={showName} />
|
|
75
75
|
<MessageBubble
|
|
@@ -77,6 +77,8 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
77
77
|
Context={MessageContextUIComponent}
|
|
78
78
|
Plugins={MessagePlugins}
|
|
79
79
|
>
|
|
80
|
+
{/* // eslint-disable-next-line
|
|
81
|
+
// @ts-ignore */}
|
|
80
82
|
<MessageContextUIComponent message={message} />
|
|
81
83
|
</MessageBubble>
|
|
82
84
|
</main>
|
|
@@ -8,11 +8,11 @@ import { useTUIChatActionContext, useTUIKitContext } from '../../../context';
|
|
|
8
8
|
import { Toast } from '../../Toast';
|
|
9
9
|
|
|
10
10
|
interface MessageHandlerProps {
|
|
11
|
-
handleError?: (error) => void,
|
|
11
|
+
handleError?: (error: any) => void,
|
|
12
12
|
message?: Message,
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export const useMessageHandler = (props
|
|
15
|
+
export const useMessageHandler = (props: MessageHandlerProps) => {
|
|
16
16
|
const {
|
|
17
17
|
message,
|
|
18
18
|
handleError,
|
|
@@ -26,19 +26,19 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
26
26
|
const { t } = useTranslation();
|
|
27
27
|
const { chat } = useTUIKitContext('useDeleteHandler');
|
|
28
28
|
|
|
29
|
-
const handleDelMessage = useCallback(async (event
|
|
29
|
+
const handleDelMessage = useCallback(async (event?: any) => {
|
|
30
30
|
event.preventDefault();
|
|
31
31
|
if (!message) return;
|
|
32
32
|
const messageModel = TUIStore.getMessageModel(message?.ID);
|
|
33
33
|
messageModel.deleteMessage();
|
|
34
34
|
}, [message]);
|
|
35
35
|
|
|
36
|
-
const handleRevokeMessage = useCallback(async (event
|
|
36
|
+
const handleRevokeMessage = useCallback(async (event?: any) => {
|
|
37
37
|
event.preventDefault();
|
|
38
38
|
if (!message) return;
|
|
39
39
|
const messageModel = TUIStore.getMessageModel(message?.ID);
|
|
40
40
|
messageModel.revokeMessage().then(() => {
|
|
41
|
-
editLocalMessage(message);
|
|
41
|
+
editLocalMessage && editLocalMessage(message);
|
|
42
42
|
enableSampleTaskStatus('revokeMessage');
|
|
43
43
|
}).catch((error: any) => {
|
|
44
44
|
if (handleError) {
|
|
@@ -54,7 +54,7 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
54
54
|
});
|
|
55
55
|
}, [message]);
|
|
56
56
|
|
|
57
|
-
const handleReplyMessage = useCallback((event
|
|
57
|
+
const handleReplyMessage = useCallback((event?:any) => {
|
|
58
58
|
event.preventDefault();
|
|
59
59
|
if (!message?.ID || !chat || !operateMessage) {
|
|
60
60
|
return;
|
|
@@ -64,11 +64,11 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
64
64
|
});
|
|
65
65
|
}, [message]);
|
|
66
66
|
|
|
67
|
-
const handleCopyMessage = useCallback((event
|
|
67
|
+
const handleCopyMessage = useCallback((event?:any) => {
|
|
68
68
|
event.preventDefault();
|
|
69
69
|
if (navigator.clipboard) {
|
|
70
70
|
// clipboard api
|
|
71
|
-
navigator.clipboard.writeText(message
|
|
71
|
+
navigator.clipboard.writeText(message?.payload.text);
|
|
72
72
|
} else {
|
|
73
73
|
const textarea = document.createElement('textarea');
|
|
74
74
|
document.body.appendChild(textarea);
|
|
@@ -76,7 +76,7 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
76
76
|
textarea.style.position = 'fixed';
|
|
77
77
|
textarea.style.clip = 'rect(0 0 0 0)';
|
|
78
78
|
textarea.style.top = '10px';
|
|
79
|
-
textarea.value = message
|
|
79
|
+
textarea.value = message?.payload.text;
|
|
80
80
|
// select
|
|
81
81
|
textarea.select();
|
|
82
82
|
// copy
|
|
@@ -86,10 +86,10 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
86
86
|
}
|
|
87
87
|
}, [message]);
|
|
88
88
|
|
|
89
|
-
const handleResendMessage = useCallback(async (
|
|
89
|
+
const handleResendMessage = useCallback(async () => {
|
|
90
90
|
try {
|
|
91
|
-
const res = await chat.resendMessage(message);
|
|
92
|
-
editLocalMessage(res?.data?.message);
|
|
91
|
+
const res = message && await chat.resendMessage(message);
|
|
92
|
+
editLocalMessage && editLocalMessage(res?.data?.message);
|
|
93
93
|
} catch (error: any) {
|
|
94
94
|
if (handleError) {
|
|
95
95
|
handleError({
|
|
@@ -103,7 +103,7 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
103
103
|
}
|
|
104
104
|
}, [message]);
|
|
105
105
|
|
|
106
|
-
const handleForWardMessage = useCallback(async (event
|
|
106
|
+
const handleForWardMessage = useCallback(async (event?:any) => {
|
|
107
107
|
event.preventDefault();
|
|
108
108
|
if (!message?.ID || !chat || !operateMessage) {
|
|
109
109
|
return;
|
|
@@ -7,7 +7,7 @@ interface messageContextParams {
|
|
|
7
7
|
message?: Message,
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
const replyType = {
|
|
10
|
+
const replyType: any = {
|
|
11
11
|
[TencentCloudChat.TYPES.MSG_TEXT]: 1,
|
|
12
12
|
[TencentCloudChat.TYPES.MSG_FACE]: 8,
|
|
13
13
|
[TencentCloudChat.TYPES.MSG_IMAGE]: 3,
|
|
@@ -30,14 +30,14 @@ export const useMessageReply = <T extends messageContextParams>(params:T) => {
|
|
|
30
30
|
const { messageList } = useTUIChatStateContext('useMessageReply');
|
|
31
31
|
|
|
32
32
|
useLayoutEffect(() => {
|
|
33
|
-
handleMessageReply(message);
|
|
33
|
+
message && handleMessageReply(message);
|
|
34
34
|
}, [message]);
|
|
35
35
|
|
|
36
36
|
const handleMessageReply = (data:Message) => {
|
|
37
37
|
if (!data?.cloudCustomData) {
|
|
38
38
|
return;
|
|
39
39
|
}
|
|
40
|
-
const cloudCustomData = JSONStringToParse(
|
|
40
|
+
const cloudCustomData = JSONStringToParse(data?.cloudCustomData);
|
|
41
41
|
const reply = cloudCustomData?.messageReply || '';
|
|
42
42
|
if (!reply) {
|
|
43
43
|
return;
|
|
@@ -45,13 +45,15 @@ export const useMessageReply = <T extends messageContextParams>(params:T) => {
|
|
|
45
45
|
setMessageReply(reply);
|
|
46
46
|
setSender(reply?.messageSender);
|
|
47
47
|
setMessageID(reply?.messageID);
|
|
48
|
-
const replyData = messageList
|
|
48
|
+
const replyData = messageList?.filter((item) => {
|
|
49
49
|
const isSomeID = item.ID === reply?.messageID;
|
|
50
50
|
const isSomeType = isSomeID && replyType[item.type] === reply.messageType;
|
|
51
51
|
const isSomeContent = item.type === TencentCloudChat.TYPES.MSG_TEXT
|
|
52
52
|
? item.payload.text === reply.messageAbstract : true;
|
|
53
53
|
return isSomeID && isSomeType && isSomeContent;
|
|
54
54
|
});
|
|
55
|
+
// eslint-disable-next-line
|
|
56
|
+
// @ts-ignore
|
|
55
57
|
setReplyMessage(replyData[0] || chat.findMessage(reply?.messageID));
|
|
56
58
|
};
|
|
57
59
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { emojiMap, emojiUrl } from './emojiMap';
|
|
2
|
-
/**
|
|
2
|
+
/** Pass in messageBody (group system message SystemMessage, except group prompt message GroupTip)
|
|
3
3
|
* payload = {
|
|
4
4
|
* msgType: 'TIMTextElem',
|
|
5
5
|
* msgContent: {
|
|
6
|
-
* text: 'AAA[
|
|
6
|
+
* text: 'AAA[smile]AAA[smile]AAA[smile]'
|
|
7
7
|
* }
|
|
8
8
|
*}
|
|
9
9
|
* */
|
|
10
10
|
export function decodeText(payload:any) {
|
|
11
11
|
const renderDom = [];
|
|
12
|
-
// 文本消息
|
|
13
12
|
let temp = payload.text;
|
|
14
13
|
let left = -1;
|
|
15
14
|
let right = -1;
|
|
@@ -138,7 +138,6 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
138
138
|
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by revoked administrator')}`;
|
|
139
139
|
break;
|
|
140
140
|
case TencentCloudChat.TYPES.GRP_TIP_GRP_PROFILE_UPDATED:
|
|
141
|
-
// options.text = `${userName} 修改群组资料`;
|
|
142
141
|
options.text = handleTipGrpUpdated(message);
|
|
143
142
|
break;
|
|
144
143
|
case TencentCloudChat.TYPES.GRP_TIP_MBR_PROFILE_UPDATED:
|
|
@@ -448,7 +447,7 @@ export function formatTime(secondTime:number) {
|
|
|
448
447
|
if (time >= 3600) {
|
|
449
448
|
hour = parseInt(`${time / 3600}`, 10) < 10 ? `0${parseInt(`${time / 3600}`, 10)}` : parseInt(`${time / 3600}`, 10);
|
|
450
449
|
minite = parseInt(`${(time % 60) / 60}`, 10) < 10 ? `0${parseInt(`${(time % 60) / 60}`, 10)}` : parseInt(`${(time % 60) / 60}`, 10);
|
|
451
|
-
seconds
|
|
450
|
+
seconds = time % 3600 < 10 ? parseInt(`0${time % 3600}`) : time % 3600;
|
|
452
451
|
if (seconds > 60) {
|
|
453
452
|
minite = parseInt(`${seconds / 60}`, 10) < 10 ? `0${parseInt(`${seconds / 60}`, 10)}` : parseInt(`${seconds / 60}`, 10);
|
|
454
453
|
seconds = seconds % 60 < 10 ? `0${seconds % 60}` : seconds % 60;
|
|
@@ -22,7 +22,7 @@ export function EmojiPicker():React.ReactElement {
|
|
|
22
22
|
sendFaceMessage,
|
|
23
23
|
} = useTUIMessageInputContext('TUIMessageInputDefault');
|
|
24
24
|
|
|
25
|
-
const handleSelectEmoji = (e) => {
|
|
25
|
+
const handleSelectEmoji = (e: any) => {
|
|
26
26
|
const emoji: EmojiData = {
|
|
27
27
|
index,
|
|
28
28
|
data: e.target.dataset.data,
|
|
@@ -31,14 +31,14 @@ export function EmojiPicker():React.ReactElement {
|
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
if (index === 0) {
|
|
34
|
-
onSelectEmoji(emoji);
|
|
34
|
+
onSelectEmoji && onSelectEmoji(emoji);
|
|
35
35
|
} else {
|
|
36
|
-
sendFaceMessage(emoji);
|
|
36
|
+
sendFaceMessage && sendFaceMessage(emoji);
|
|
37
37
|
handleShow();
|
|
38
38
|
}
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
const handleVisible = (data) => {
|
|
41
|
+
const handleVisible = (data: any) => {
|
|
42
42
|
setClassName(`${!data.top && 'emoji-plugin-top'} ${!data.left && 'emoji-plugin-right'}`);
|
|
43
43
|
};
|
|
44
44
|
|
|
@@ -4,12 +4,12 @@ import './styles/index.scss';
|
|
|
4
4
|
|
|
5
5
|
import { EmojiPicker } from './EmojiPicker';
|
|
6
6
|
import { Plugins } from '../Plugins';
|
|
7
|
+
import { IPluginsRef } from '../ConversationPreview';
|
|
7
8
|
import { useUploadElement } from './hooks/useUploadElement';
|
|
8
9
|
import { MESSAGE_TYPE_NAME } from '../../constants';
|
|
9
10
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
10
11
|
import { Icon, IconTypes } from '../Icon';
|
|
11
12
|
import { useTUIChatStateContext } from '../../context';
|
|
12
|
-
|
|
13
13
|
export function InputPluginsDefalut():React.ReactElement {
|
|
14
14
|
const {
|
|
15
15
|
sendUploadMessage,
|
|
@@ -60,7 +60,7 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
60
60
|
true,
|
|
61
61
|
);
|
|
62
62
|
|
|
63
|
-
const pluginsRef = useRef(
|
|
63
|
+
const pluginsRef = useRef<IPluginsRef>();
|
|
64
64
|
|
|
65
65
|
const ImagePicker = isImagePicker && useUploadElement({
|
|
66
66
|
children: (
|
|
@@ -72,8 +72,8 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
72
72
|
type: 'image',
|
|
73
73
|
accept: 'image/*',
|
|
74
74
|
onChange: (file:HTMLInputElement | File) => {
|
|
75
|
-
pluginsRef.current.closeMore();
|
|
76
|
-
sendUploadMessage({ file }, MESSAGE_TYPE_NAME.IMAGE);
|
|
75
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
76
|
+
sendUploadMessage && sendUploadMessage({ file }, MESSAGE_TYPE_NAME.IMAGE);
|
|
77
77
|
},
|
|
78
78
|
});
|
|
79
79
|
|
|
@@ -87,8 +87,8 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
87
87
|
type: 'video',
|
|
88
88
|
accept: 'video/*',
|
|
89
89
|
onChange: (file:HTMLInputElement | File) => {
|
|
90
|
-
pluginsRef.current.closeMore();
|
|
91
|
-
sendUploadMessage({ file }, MESSAGE_TYPE_NAME.VIDEO);
|
|
90
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
91
|
+
sendUploadMessage && sendUploadMessage({ file }, MESSAGE_TYPE_NAME.VIDEO);
|
|
92
92
|
},
|
|
93
93
|
});
|
|
94
94
|
|
|
@@ -102,8 +102,8 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
102
102
|
type: 'file',
|
|
103
103
|
accept: 'file/*',
|
|
104
104
|
onChange: (file:HTMLInputElement | File) => {
|
|
105
|
-
pluginsRef.current.closeMore();
|
|
106
|
-
sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
|
|
105
|
+
pluginsRef?.current?.closeMore && pluginsRef.current.closeMore();
|
|
106
|
+
sendUploadMessage && sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
|
|
107
107
|
},
|
|
108
108
|
});
|
|
109
109
|
const plugins = [
|
|
@@ -23,12 +23,14 @@ export function InputQuoteDefalut <T extends InputQuoteProps>(
|
|
|
23
23
|
const { cloudCustomData, message } = useHandleQuoteMessage(propsMessage);
|
|
24
24
|
|
|
25
25
|
const handleClose = useCallback(() => {
|
|
26
|
-
operateMessage({
|
|
26
|
+
operateMessage && operateMessage({
|
|
27
|
+
// eslint-disable-next-line
|
|
28
|
+
// @ts-ignore
|
|
27
29
|
[MESSAGE_OPERATE.QUOTE]: null,
|
|
28
30
|
});
|
|
29
31
|
}, [operateMessage]);
|
|
30
32
|
|
|
31
|
-
const context = cloudCustomData?.messageReply;
|
|
33
|
+
const context: any = cloudCustomData?.messageReply;
|
|
32
34
|
|
|
33
35
|
return context && (
|
|
34
36
|
<div className="input-quote">
|
|
@@ -38,8 +38,11 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
38
38
|
|
|
39
39
|
const { message, sendForwardMessage, conversationList = [] } = useHandleForwardMessage();
|
|
40
40
|
|
|
41
|
-
const handleClose = useCallback((
|
|
42
|
-
|
|
41
|
+
const handleClose = useCallback(() => {
|
|
42
|
+
|
|
43
|
+
operateMessage && operateMessage({
|
|
44
|
+
// eslint-disable-next-line
|
|
45
|
+
// @ts-ignore
|
|
43
46
|
[MESSAGE_OPERATE.FORWARD]: null,
|
|
44
47
|
});
|
|
45
48
|
}, [operateMessage]);
|
|
@@ -47,7 +50,7 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
47
50
|
//const FrequentlyList = conversationList.slice(0, 2);
|
|
48
51
|
const RecentList = conversationList;
|
|
49
52
|
|
|
50
|
-
const handleInputChange = (e) => {
|
|
53
|
+
const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
51
54
|
setSearchValue(e.target?.value);
|
|
52
55
|
if (e.target?.value) {
|
|
53
56
|
const result = conversationList.filter((item) => {
|
|
@@ -61,20 +64,22 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
61
64
|
}
|
|
62
65
|
};
|
|
63
66
|
|
|
64
|
-
const handleCheckboxChange = (e) => {
|
|
67
|
+
const handleCheckboxChange = (e: any) => {
|
|
65
68
|
if (e.checked) {
|
|
69
|
+
// eslint-disable-next-line
|
|
70
|
+
// @ts-ignore
|
|
66
71
|
setSelectList([...selectList, e.value]);
|
|
67
72
|
} else {
|
|
68
73
|
setSelectList(selectList.filter((item) => item !== e.value));
|
|
69
74
|
}
|
|
70
75
|
};
|
|
71
76
|
|
|
72
|
-
const handleDisplayForwardName = (value) => {
|
|
73
|
-
const listName = value?.map((item) => getDisplayTitle(item));
|
|
77
|
+
const handleDisplayForwardName = (value: any) => {
|
|
78
|
+
const listName = value?.map((item: any) => getDisplayTitle(item));
|
|
74
79
|
return listName.toString();
|
|
75
80
|
};
|
|
76
81
|
|
|
77
|
-
const handleForward = (
|
|
82
|
+
const handleForward = () => {
|
|
78
83
|
if (propsHandleForward) {
|
|
79
84
|
propsHandleForward({
|
|
80
85
|
list: selectList,
|
|
@@ -83,10 +88,10 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
83
88
|
} else {
|
|
84
89
|
sendForwardMessage(selectList);
|
|
85
90
|
}
|
|
86
|
-
handleClose(
|
|
91
|
+
handleClose();
|
|
87
92
|
};
|
|
88
93
|
|
|
89
|
-
const stopPropagation = (e) => {
|
|
94
|
+
const stopPropagation = (e: any) => {
|
|
90
95
|
e.stopPropagation();
|
|
91
96
|
};
|
|
92
97
|
|
|
@@ -95,10 +100,11 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
95
100
|
setSearchResult([]);
|
|
96
101
|
setSearchValue('');
|
|
97
102
|
}, [message]);
|
|
98
|
-
|
|
103
|
+
// eslint-disable-next-line
|
|
104
|
+
// @ts-ignore
|
|
99
105
|
return message && conversationList.length > 0 && (
|
|
100
106
|
<Model onClick={handleClose}>
|
|
101
|
-
<div role="button" tabIndex={0} className="tui-forward" onClick={stopPropagation}>
|
|
107
|
+
<div role="button" tabIndex={0} className="tui-forward" onClick={(e) => {stopPropagation(e)}}>
|
|
102
108
|
<header className="tui-forward-header">
|
|
103
109
|
<Icon
|
|
104
110
|
type={IconTypes.CANCEL}
|
|
@@ -124,14 +130,14 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
124
130
|
<ul className="tui-forward-list">
|
|
125
131
|
<h3 className="tui-forward-list-title">{t('TUIChat.Search Result')}</h3>
|
|
126
132
|
{
|
|
127
|
-
searchResult.length > 0 && searchResult.map((item) => (
|
|
133
|
+
searchResult.length > 0 && searchResult.map((item: any) => (
|
|
128
134
|
<li key={item.conversationID} className="tui-forward-list-item">
|
|
129
135
|
<label htmlFor={`${item.conversationID}`} className="info">
|
|
130
136
|
<Avatar image={getDisplayImage(item)} size={40} />
|
|
131
137
|
<div className="info-nick">{getDisplayTitle(item)}</div>
|
|
132
138
|
</label>
|
|
133
139
|
<Checkbox
|
|
134
|
-
onChange={handleCheckboxChange}
|
|
140
|
+
onChange={(e) => {handleCheckboxChange(e)}}
|
|
135
141
|
id={`${item.conversationID}`}
|
|
136
142
|
value={item}
|
|
137
143
|
/>
|
|
@@ -148,7 +154,7 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
148
154
|
{ !searchValue && RecentList.length > 0 && (
|
|
149
155
|
<ul className="tui-forward-list">
|
|
150
156
|
{
|
|
151
|
-
RecentList.map((item) => (
|
|
157
|
+
RecentList.map((item: any) => (
|
|
152
158
|
<li key={item.conversationID} className="tui-forward-list-item">
|
|
153
159
|
<label htmlFor={`${item.conversationID}`} className="info">
|
|
154
160
|
<Avatar image={getDisplayImage(item)} size={40} />
|
|
@@ -167,7 +173,8 @@ export function TUIForward <T extends TUIForwardToProps>(
|
|
|
167
173
|
</main>
|
|
168
174
|
<footer className="tui-forward-footer">
|
|
169
175
|
<div className="tui-forward-footer-name">{selectList.length > 0 && handleDisplayForwardName(selectList)}</div>
|
|
170
|
-
<button type="button" className="button" onClick={
|
|
176
|
+
<button type="button" className="button" onClick={handleForward}
|
|
177
|
+
disabled={selectList.length === 0}>{t('TUIChat.Forward')}</button>
|
|
171
178
|
</footer>
|
|
172
179
|
</div>
|
|
173
180
|
</Model>
|
|
@@ -25,31 +25,35 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
25
25
|
|
|
26
26
|
// operateData
|
|
27
27
|
useEffect(() => {
|
|
28
|
-
if (operateData[MESSAGE_OPERATE.REVOKE]) {
|
|
29
|
-
setText(formatEmojiString(operateData[MESSAGE_OPERATE.REVOKE].payload.text, 1));
|
|
28
|
+
if (operateData && operateData[MESSAGE_OPERATE.REVOKE]) {
|
|
29
|
+
setText && setText(formatEmojiString(operateData[MESSAGE_OPERATE.REVOKE].payload.text, 1));
|
|
30
30
|
}
|
|
31
31
|
}, [operateData]);
|
|
32
32
|
|
|
33
33
|
// Focus
|
|
34
34
|
useEffect(() => {
|
|
35
|
-
if (focus && textareaRef.current) {
|
|
35
|
+
if (focus && textareaRef && textareaRef.current) {
|
|
36
36
|
textareaRef.current.autofocus = true;
|
|
37
37
|
isPC && textareaRef?.current?.focus();
|
|
38
|
+
// eslint-disable-next-line
|
|
39
|
+
// @ts-ignore
|
|
38
40
|
textareaRef?.current?.addEventListener('paste', handlePasete);
|
|
39
41
|
}
|
|
40
42
|
return () => {
|
|
43
|
+
// eslint-disable-next-line
|
|
44
|
+
// @ts-ignore
|
|
41
45
|
textareaRef?.current?.removeEventListener('paste', handlePasete);
|
|
42
46
|
};
|
|
43
|
-
}, [focus]);
|
|
47
|
+
}, [focus, textareaRef]);
|
|
44
48
|
|
|
45
49
|
const [focused, setFocused] = useState<boolean>(false);
|
|
46
50
|
|
|
47
|
-
const handleFocus = (
|
|
51
|
+
const handleFocus = () => {
|
|
48
52
|
setFocused(true);
|
|
49
53
|
};
|
|
50
|
-
const handleBlur = (e) => {
|
|
51
|
-
setCursorPos({
|
|
52
|
-
start: e
|
|
54
|
+
const handleBlur = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
55
|
+
setCursorPos && setCursorPos({
|
|
56
|
+
start: e?.target?.selectionStart,
|
|
53
57
|
end: e.target.selectionEnd,
|
|
54
58
|
});
|
|
55
59
|
setFocused(false);
|
|
@@ -65,11 +69,13 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
65
69
|
placeholder={t('TUIChat.Enter a message')}
|
|
66
70
|
rows={1}
|
|
67
71
|
value={text}
|
|
72
|
+
// eslint-disable-next-line
|
|
73
|
+
// @ts-ignore
|
|
68
74
|
ref={textareaRef}
|
|
69
75
|
onChange={handleChange}
|
|
70
76
|
onKeyDown={handleKeyDown}
|
|
71
77
|
onFocus={handleFocus}
|
|
72
|
-
onBlur={handleBlur}
|
|
78
|
+
onBlur={(e:any) => {handleBlur(e)}}
|
|
73
79
|
/>
|
|
74
80
|
)
|
|
75
81
|
}
|
|
@@ -28,9 +28,9 @@ export function useEmojiPicker<T extends useEmojiPickerProps>(props:PropsWithChi
|
|
|
28
28
|
|
|
29
29
|
const onSelectEmoji = (emoji:EmojiData) => {
|
|
30
30
|
if (i18n.language === 'zh') {
|
|
31
|
-
insertText(emoji.data);
|
|
31
|
+
insertText && insertText(emoji.data);
|
|
32
32
|
} else {
|
|
33
|
-
insertText(emojiEnKey[emoji.data]);
|
|
33
|
+
insertText && insertText(emojiEnKey[emoji.data]);
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from '@tencentcloud/chat-uikit-engine';
|
|
6
6
|
import { MESSAGE_OPERATE } from '../../../constants';
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
useTUIChatStateContext, useTUIKitContext,
|
|
9
9
|
} from '../../../context';
|
|
10
10
|
|
|
11
11
|
export function useHandleForwardMessage(msg?:Message) {
|
|
@@ -16,11 +16,11 @@ export function useHandleForwardMessage(msg?:Message) {
|
|
|
16
16
|
const [conversationList, setConversationList] = useState([]);
|
|
17
17
|
const { chat } = useTUIKitContext('TUIChat');
|
|
18
18
|
|
|
19
|
-
const message = msg || operateData[MESSAGE_OPERATE.FORWARD];
|
|
19
|
+
const message = msg || (operateData && operateData[MESSAGE_OPERATE.FORWARD]);
|
|
20
20
|
|
|
21
21
|
const sendForwardMessage = (list:Array<Conversation>) => {
|
|
22
22
|
list.map((item:Conversation) => {
|
|
23
|
-
TUIChatService.sendForwardMessage([item], [message]);
|
|
23
|
+
message && TUIChatService.sendForwardMessage([item], [message]);
|
|
24
24
|
return item;
|
|
25
25
|
});
|
|
26
26
|
};
|
|
@@ -29,7 +29,7 @@ export function useHandleForwardMessage(msg?:Message) {
|
|
|
29
29
|
(async () => {
|
|
30
30
|
const res = await chat.getConversationList();
|
|
31
31
|
setConversationList(res?.data?.conversationList.filter(
|
|
32
|
-
(item) => item.type !== TencentCloudChat.TYPES.CONV_SYSTEM,
|
|
32
|
+
(item: any) => item.type !== TencentCloudChat.TYPES.CONV_SYSTEM,
|
|
33
33
|
));
|
|
34
34
|
})();
|
|
35
35
|
}, [chat]);
|
|
@@ -3,7 +3,7 @@ import TencentCloudChat, { Message } from '@tencentcloud/chat';
|
|
|
3
3
|
import { MESSAGE_OPERATE } from '../../../constants';
|
|
4
4
|
import { useTUIChatStateContext } from '../../../context';
|
|
5
5
|
|
|
6
|
-
const quoteConfigType = {
|
|
6
|
+
const quoteConfigType: any = {
|
|
7
7
|
[TencentCloudChat.TYPES.MSG_TEXT]: 1,
|
|
8
8
|
[TencentCloudChat.TYPES.MSG_CUSTOM]: 2,
|
|
9
9
|
[TencentCloudChat.TYPES.MSG_IMAGE]: 3,
|
|
@@ -13,7 +13,7 @@ const quoteConfigType = {
|
|
|
13
13
|
[TencentCloudChat.TYPES.MSG_FACE]: 8,
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
const quoteConfigForShow = {
|
|
16
|
+
const quoteConfigForShow: any = {
|
|
17
17
|
[TencentCloudChat.TYPES.MSG_CUSTOM]: '[custom]',
|
|
18
18
|
[TencentCloudChat.TYPES.MSG_IMAGE]: '[image]',
|
|
19
19
|
[TencentCloudChat.TYPES.MSG_AUDIO]: '[audio]',
|
|
@@ -27,7 +27,7 @@ export function useHandleQuoteMessage(msg?:Message) {
|
|
|
27
27
|
operateData,
|
|
28
28
|
} = useTUIChatStateContext('TUIMessageInputDefault');
|
|
29
29
|
|
|
30
|
-
const [cloudCustomData, setCloudCustomData] = useState({ messageReply: null });
|
|
30
|
+
const [cloudCustomData, setCloudCustomData] = useState<any>({ messageReply: null });
|
|
31
31
|
|
|
32
32
|
const handleQuoteMessage = (message: Message) => {
|
|
33
33
|
const messageType = quoteConfigType[message?.type];
|
|
@@ -46,7 +46,7 @@ export function useHandleQuoteMessage(msg?:Message) {
|
|
|
46
46
|
|
|
47
47
|
useEffect(
|
|
48
48
|
() => {
|
|
49
|
-
const message = msg || operateData[MESSAGE_OPERATE.QUOTE];
|
|
49
|
+
const message = msg || (operateData &&operateData[MESSAGE_OPERATE.QUOTE]);
|
|
50
50
|
setCloudCustomData(
|
|
51
51
|
{
|
|
52
52
|
messageReply: message ? handleQuoteMessage(message) : null,
|
|
@@ -59,6 +59,6 @@ export function useHandleQuoteMessage(msg?:Message) {
|
|
|
59
59
|
return {
|
|
60
60
|
cloudCustomData,
|
|
61
61
|
handleQuoteMessage,
|
|
62
|
-
message: msg || operateData[MESSAGE_OPERATE.QUOTE],
|
|
62
|
+
message: msg || (operateData &&operateData[MESSAGE_OPERATE.QUOTE]),
|
|
63
63
|
};
|
|
64
64
|
}
|
|
@@ -16,8 +16,8 @@ export interface IinitState {
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export interface ICursorPos {
|
|
19
|
-
start?: number,
|
|
20
|
-
end?: number,
|
|
19
|
+
start?: number | null,
|
|
20
|
+
end?: number | null,
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export type MessageInputReducerAction =
|
|
@@ -38,7 +38,7 @@ const initState:IinitState = {
|
|
|
38
38
|
},
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
const reducer = (state:IinitState, action) => {
|
|
41
|
+
const reducer = (state:IinitState, action: any) => {
|
|
42
42
|
switch (action.type) {
|
|
43
43
|
case CONSTANT_DISPATCH_TYPE.SET_TEXT:
|
|
44
44
|
return { ...state, text: action?.getNewText(state.text) };
|