@tencentcloud/chat-uikit-react 1.2.2 → 2.1.0
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 +2 -1
- package/CHANGELOG.md +8 -2
- package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreview.d.ts +2 -0
- package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/cjs/components/ConversationPreview/utils.js +1 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/cjs/components/Icon/config.js +1 -1
- package/dist/cjs/components/Icon/images/chats-selected.svg.js +1 -0
- package/dist/cjs/components/Icon/images/chats.svg.js +1 -0
- package/dist/cjs/components/Icon/images/contacts-selected.svg.js +1 -0
- package/dist/cjs/components/Icon/images/contacts.svg.js +1 -0
- package/dist/cjs/components/Icon/images/files.png.js +1 -0
- package/dist/cjs/components/Icon/images/image.png.js +1 -1
- package/dist/cjs/components/Icon/images/video.png.js +1 -1
- package/dist/cjs/components/TUIChat/TUIChat.d.ts +5 -0
- 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/TUIContactInfo/friendInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/cjs/components/TUIConversation/TUIConversation.js +1 -1
- package/dist/cjs/components/TUIConversationList/TUIConversationList.d.ts +1 -0
- package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
- package/dist/cjs/components/TUIManage/TUIManage.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/MessageImage.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/MessageRevoke.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageTip.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/hooks/useMessageHandler.js +1 -1
- package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.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/useMessageInputText.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/cjs/components/untils.js +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/context/ComponentContext.d.ts +2 -0
- package/dist/cjs/context/TUIChatActionContext.d.ts +3 -14
- package/dist/cjs/context/TUIChatStateContext.d.ts +2 -0
- package/dist/cjs/context/TUIConversationContext.js +1 -1
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.d.css +240 -12
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/locales/en/TUIChat.js +1 -1
- package/dist/cjs/locales/en/TUIContact.js +1 -1
- package/dist/cjs/locales/en/TUIProfile.js +1 -1
- package/dist/cjs/locales/index.js +1 -1
- package/dist/cjs/locales/zh_cn/TUIChat.js +1 -1
- package/dist/cjs/locales/zh_cn/TUIContact.js +1 -1
- package/dist/cjs/locales/zh_cn/TUIProfile.js +1 -1
- package/dist/cjs/server.js +1 -0
- package/dist/cjs/utils/env.js +1 -0
- package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreview.d.ts +2 -0
- package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/esm/components/ConversationPreview/utils.js +1 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/esm/components/Icon/config.js +1 -1
- package/dist/esm/components/Icon/images/chats-selected.svg.js +1 -0
- package/dist/esm/components/Icon/images/chats.svg.js +1 -0
- package/dist/esm/components/Icon/images/contacts-selected.svg.js +1 -0
- package/dist/esm/components/Icon/images/contacts.svg.js +1 -0
- package/dist/esm/components/Icon/images/files.png.js +1 -0
- package/dist/esm/components/Icon/images/image.png.js +1 -1
- package/dist/esm/components/Icon/images/video.png.js +1 -1
- package/dist/esm/components/TUIChat/TUIChat.d.ts +5 -0
- 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/TUIContactInfo/friendInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/esm/components/TUIConversation/TUIConversation.js +1 -1
- package/dist/esm/components/TUIConversationList/TUIConversationList.d.ts +1 -0
- package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/esm/components/TUIKit/TUIKit.js +1 -1
- package/dist/esm/components/TUIManage/TUIManage.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/MessageImage.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/MessageRevoke.js +1 -1
- package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/esm/components/TUIMessage/MessageText.js +1 -1
- package/dist/esm/components/TUIMessage/MessageTip.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/hooks/useMessageHandler.js +1 -1
- package/dist/esm/components/TUIMessage/utils/index.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.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/useMessageInputText.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/esm/components/untils.js +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/context/ComponentContext.d.ts +2 -0
- package/dist/esm/context/TUIChatActionContext.d.ts +3 -14
- package/dist/esm/context/TUIChatStateContext.d.ts +2 -0
- package/dist/esm/context/TUIConversationContext.js +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.d.css +240 -12
- package/dist/esm/index.js +1 -1
- package/dist/esm/locales/en/TUIChat.js +1 -1
- package/dist/esm/locales/en/TUIContact.js +1 -1
- package/dist/esm/locales/en/TUIProfile.js +1 -1
- package/dist/esm/locales/index.js +1 -1
- package/dist/esm/locales/zh_cn/TUIChat.js +1 -1
- package/dist/esm/locales/zh_cn/TUIContact.js +1 -1
- package/dist/esm/locales/zh_cn/TUIProfile.js +1 -1
- package/dist/esm/server.js +1 -0
- package/dist/esm/utils/env.js +1 -0
- package/package.json +7 -6
- package/rollup.config.js +0 -1
- package/scripts/publish-github.js +60 -0
- package/scripts/publish-intl-demo.js +14 -0
- package/scripts/publish-npm.js +22 -0
- package/src/components/Avatar/styles/index.scss +1 -0
- package/src/components/ConversationCreate/ConversationCreatGroupDetail.tsx +6 -3
- package/src/components/ConversationCreate/ConversationCreateUserSelectList.tsx +5 -1
- package/src/components/ConversationCreate/hooks/useConversationCreate.tsx +7 -2
- package/src/components/ConversationCreate/styles/conversationGroupTypeInfo.scss +1 -0
- package/src/components/ConversationCreate/styles/index.scss +2 -0
- package/src/components/ConversationPreview/ConversationPreview.tsx +2 -0
- package/src/components/ConversationPreview/ConversationPreviewContent.tsx +57 -9
- package/src/components/ConversationPreview/styles/index.scss +4 -2
- package/src/components/ConversationPreview/utils.tsx +5 -1
- package/src/components/DivWithEdit/styles/index.scss +2 -1
- package/src/components/Icon/config.ts +1 -1
- package/src/components/Icon/images/chats-selected.svg +6 -0
- package/src/components/Icon/images/chats.svg +9 -0
- package/src/components/Icon/images/contacts-selected.svg +3 -0
- package/src/components/Icon/images/contacts.svg +6 -0
- package/src/components/Icon/images/files.png +0 -0
- package/src/components/Icon/images/image.png +0 -0
- package/src/components/Icon/images/language.svg +3 -0
- package/src/components/Icon/images/video.png +0 -0
- package/src/components/Model/styles/layout.scss +1 -1
- package/src/components/Profile/styles/index.scss +4 -0
- package/src/components/TUIChat/TUIChat.tsx +74 -120
- package/src/components/TUIChat/TUIChatState.tsx +18 -45
- package/src/components/TUIChat/hooks/useHandleMessage.tsx +8 -0
- package/src/components/TUIChat/hooks/useHandleMessageList.tsx +2 -41
- package/src/components/TUIChat/unitls.ts +0 -29
- package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +7 -1
- package/src/components/TUIContact/TUIContactInfo/friendInfo.tsx +4 -1
- package/src/components/TUIContact/TUIContactList/TUIContactList.tsx +1 -1
- package/src/components/TUIConversation/TUIConversation.tsx +1 -4
- package/src/components/TUIConversationList/TUIConversationList.tsx +91 -65
- package/src/components/TUIConversationList/index.scss +5 -0
- package/src/components/TUIKit/TUIKit.tsx +133 -9
- package/src/components/TUIKit/styles/h5.scss +34 -0
- package/src/components/TUIKit/styles/index.scss +103 -0
- package/src/components/TUIKit/styles/reset.scss +20 -0
- package/src/components/TUIManage/TUIManage.tsx +59 -35
- package/src/components/TUIManage/styles/index.scss +15 -1
- package/src/components/TUIMessage/MessageBubble.tsx +20 -3
- package/src/components/TUIMessage/MessageCustom.tsx +11 -2
- package/src/components/TUIMessage/MessageImage.tsx +2 -1
- package/src/components/TUIMessage/MessageName.tsx +1 -1
- package/src/components/TUIMessage/MessagePlugins.tsx +4 -2
- package/src/components/TUIMessage/MessageRevoke.tsx +2 -2
- package/src/components/TUIMessage/MessageText.tsx +25 -3
- package/src/components/TUIMessage/MessageVideo.tsx +8 -5
- package/src/components/TUIMessage/hooks/useMessageHandler.ts +13 -33
- package/src/components/TUIMessage/styles/color.scss +1 -0
- package/src/components/TUIMessage/styles/layout.scss +33 -6
- package/src/components/TUIMessage/utils/index.ts +1 -1
- package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +2 -2
- package/src/components/TUIMessageInput/hooks/useEmojiPicker.tsx +2 -6
- package/src/components/TUIMessageInput/hooks/useHandleForwardMessage.tsx +4 -3
- package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +10 -3
- package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +10 -14
- package/src/components/TUIMessageInput/styles/color.scss +1 -1
- package/src/components/TUIMessageInput/styles/layout.scss +7 -2
- package/src/components/TUIMessageList/TUIMessageList.tsx +9 -13
- package/src/components/TUIMessageList/index.ts +0 -1
- package/src/components/TUIProfile/TUIProfileDefault.tsx +65 -51
- package/src/components/TUIProfile/styles/layout.scss +6 -0
- package/src/components/untils.ts +9 -0
- package/src/constants.ts +4 -1
- package/src/context/ComponentContext.tsx +2 -0
- package/src/context/TUIChatActionContext.tsx +3 -23
- package/src/context/TUIChatStateContext.tsx +2 -0
- package/src/context/TUIKitContext.tsx +0 -1
- package/src/index.ts +3 -0
- package/src/locales/en/TUIChat.ts +2 -1
- package/src/locales/en/TUIContact.ts +1 -1
- package/src/locales/en/TUIProfile.ts +5 -4
- package/src/locales/index.ts +1 -1
- package/src/locales/zh_cn/TUIChat.ts +1 -0
- package/src/locales/zh_cn/TUIContact.ts +1 -1
- package/src/locales/zh_cn/TUIProfile.ts +1 -0
- package/src/server.ts +44 -0
- package/src/utils/env.ts +5 -0
- package/tsconfig.json +1 -0
- package/dist/cjs/components/Icon/images/document.png.js +0 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +0 -59
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +0 -1
- package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +0 -1
- package/dist/cjs/components/TUIMessageList/hooks/useEnrichedMessageList.js +0 -1
- package/dist/esm/components/Icon/images/document.png.js +0 -1
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +0 -59
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +0 -1
- package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +0 -1
- package/dist/esm/components/TUIMessageList/hooks/useEnrichedMessageList.js +0 -1
- package/src/components/TUIChat/hooks/useCreateMessage.tsx +0 -198
- package/src/components/TUIChat/hooks/useMessageReceviedListener.tsx +0 -26
- package/src/components/TUIMessageList/hooks/useEnrichedMessageList.tsx +0 -16
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
align-items: center;
|
|
14
14
|
padding: 24px 20px;
|
|
15
15
|
span {
|
|
16
|
-
margin-
|
|
16
|
+
margin-right: 10px;
|
|
17
17
|
font-weight: 700;
|
|
18
18
|
font-size: 14px;
|
|
19
19
|
font-family: PingFangSC-Medium;
|
|
@@ -69,3 +69,17 @@
|
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
|
+
|
|
73
|
+
.tui-manage.tui-h5-manage {
|
|
74
|
+
border-left: 1px solid #f9fafb;
|
|
75
|
+
display: flex;
|
|
76
|
+
flex-direction: column;
|
|
77
|
+
position: absolute;
|
|
78
|
+
top: 0;
|
|
79
|
+
bottom: 0;
|
|
80
|
+
width: 100%;
|
|
81
|
+
max-width: 100%;
|
|
82
|
+
min-width: 100%;
|
|
83
|
+
z-index: 1;
|
|
84
|
+
background: #fff;
|
|
85
|
+
}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React, {
|
|
2
2
|
PropsWithChildren,
|
|
3
3
|
ReactNode,
|
|
4
|
+
useEffect,
|
|
4
5
|
useState,
|
|
5
6
|
} from 'react';
|
|
6
7
|
import TencentCloudChat, { Message } from '@tencentcloud/chat';
|
|
7
8
|
import { MESSAGE_STATUS } from '../../constants';
|
|
8
|
-
import { useTUIChatActionContext } from '../../context';
|
|
9
|
+
import { useTUIChatActionContext, useTUIChatStateContext } from '../../context';
|
|
9
10
|
import { Icon, IconTypes } from '../Icon';
|
|
10
11
|
import { useMessageReply } from './hooks/useMessageReply';
|
|
11
12
|
import { MessageProgress } from './MessageProgress';
|
|
@@ -36,7 +37,8 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
36
37
|
sender,
|
|
37
38
|
} = useMessageReply({ message });
|
|
38
39
|
|
|
39
|
-
const { setHighlightedMessageId } = useTUIChatActionContext('MessageBubbleWithContext');
|
|
40
|
+
const { setHighlightedMessageId, setActiveMessageID } = useTUIChatActionContext('MessageBubbleWithContext');
|
|
41
|
+
const { activeMessageID } = useTUIChatStateContext('MessageBubbleWithContext');
|
|
40
42
|
|
|
41
43
|
const handleLoading = () => !!((
|
|
42
44
|
message?.type === TencentCloudChat.TYPES.MSG_IMAGE
|
|
@@ -45,12 +47,24 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
45
47
|
) && message?.status === MESSAGE_STATUS.UNSEND);
|
|
46
48
|
|
|
47
49
|
const handleMouseEnter = () => {
|
|
50
|
+
setActiveMessageID(message.ID);
|
|
48
51
|
setPluginsShow(true);
|
|
49
52
|
};
|
|
50
53
|
const handleMouseLeave = () => {
|
|
54
|
+
setActiveMessageID(message.ID);
|
|
51
55
|
setPluginsShow(false);
|
|
52
56
|
};
|
|
53
57
|
|
|
58
|
+
const activeMessage = () => {
|
|
59
|
+
setActiveMessageID(message.ID);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
useEffect(() => {
|
|
63
|
+
if (activeMessageID !== message.ID) {
|
|
64
|
+
setPluginsShow(false);
|
|
65
|
+
}
|
|
66
|
+
}, [activeMessageID]);
|
|
67
|
+
|
|
54
68
|
const handleReplyMessage = () => {
|
|
55
69
|
setHighlightedMessageId(replyMessage?.ID);
|
|
56
70
|
};
|
|
@@ -59,8 +73,11 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
59
73
|
<div className="meesage-bubble">
|
|
60
74
|
<div
|
|
61
75
|
className={`meesage-bubble-context ${message?.flow}`}
|
|
76
|
+
role="button"
|
|
77
|
+
tabIndex={0}
|
|
62
78
|
onMouseEnter={handleMouseEnter}
|
|
63
79
|
onMouseLeave={handleMouseLeave}
|
|
80
|
+
onClick={activeMessage}
|
|
64
81
|
>
|
|
65
82
|
<div
|
|
66
83
|
className={
|
|
@@ -88,7 +105,7 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
88
105
|
{
|
|
89
106
|
Plugins && (
|
|
90
107
|
<div className="message-plugin">
|
|
91
|
-
{PluginsShow && <Plugins />}
|
|
108
|
+
{PluginsShow && <Plugins message={message} />}
|
|
92
109
|
</div>
|
|
93
110
|
)
|
|
94
111
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import TencentCloudChat from '@tencentcloud/chat';
|
|
3
|
+
import { useTranslation } from 'react-i18next';
|
|
3
4
|
import { JSONStringToParse } from '../untils';
|
|
4
5
|
import type { MessageContextProps } from './MessageText';
|
|
6
|
+
import { useComponentContext } from '../../context';
|
|
5
7
|
|
|
6
8
|
function MessageCustomWithContext <T extends MessageContextProps>(
|
|
7
9
|
props: PropsWithChildren<T>,
|
|
@@ -11,7 +13,8 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
11
13
|
message,
|
|
12
14
|
children,
|
|
13
15
|
} = props;
|
|
14
|
-
|
|
16
|
+
const { t } = useTranslation();
|
|
17
|
+
const { MessageCustomPlugins } = useComponentContext('MessageCustom');
|
|
15
18
|
const handleContext = (data) => {
|
|
16
19
|
if (data.data === 'Hyperlink') {
|
|
17
20
|
const extension = JSONStringToParse(data?.extension);
|
|
@@ -32,7 +35,13 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
32
35
|
if (data.data === 'group_create') {
|
|
33
36
|
return `${message?.nick || message?.from} Create a group`;
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
const botMessage = JSONStringToParse(data.data);
|
|
39
|
+
if (botMessage?.chatbotPlugin === 1 && botMessage?.src === 15 && (botMessage?.subtype === 'welcome_msg' || botMessage?.subtype === 'clarify_msg')) {
|
|
40
|
+
return (
|
|
41
|
+
<MessageCustomPlugins data={JSONStringToParse(data.data).content} />
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return `[${t('TUIChat.Custom message')}]`;
|
|
36
45
|
};
|
|
37
46
|
|
|
38
47
|
return (
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useState } from 'react';
|
|
2
2
|
import TencentCloudChat from '@tencentcloud/chat';
|
|
3
|
+
import { isH5 } from '../../utils/env';
|
|
3
4
|
import { Model } from '../Model';
|
|
4
5
|
import type { MessageContextProps } from './MessageText';
|
|
5
6
|
|
|
@@ -19,7 +20,7 @@ function MessageImageWithContext <T extends MessageContextProps>(
|
|
|
19
20
|
return (
|
|
20
21
|
<div className="message-image">
|
|
21
22
|
<div role="button" tabIndex={0} onClick={() => { setShow(true); }}>
|
|
22
|
-
<img className={`img bubble-${message.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`} src={context.url} alt="" />
|
|
23
|
+
<img className={`img ${isH5 ? 'img-h5' : ''} bubble-${message.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`} src={context.url} alt="" />
|
|
23
24
|
</div>
|
|
24
25
|
{children}
|
|
25
26
|
{
|
|
@@ -90,10 +90,12 @@ export function MessagePlugins <T extends MessagePluginsProps>(
|
|
|
90
90
|
|
|
91
91
|
const handleVisible = (data) => {
|
|
92
92
|
if (data.x && data.y) {
|
|
93
|
+
const isTop = data.y < data.height ? true : data.top;
|
|
94
|
+
const isLeft = data.x < data.width ? true : data.left;
|
|
93
95
|
setPopStyle({
|
|
94
96
|
position: 'fixed',
|
|
95
|
-
left: `${
|
|
96
|
-
top: `${
|
|
97
|
+
left: `${isLeft ? data.x : (data.x - data.width)}px`,
|
|
98
|
+
top: `${isTop ? data.y : (data.y - data.height)}px`,
|
|
97
99
|
});
|
|
98
100
|
}
|
|
99
101
|
};
|
|
@@ -26,9 +26,9 @@ function MessageRevokeWithContext <T extends MessageContextProps>(
|
|
|
26
26
|
message?.flow === MESSAGE_FLOW.IN && <span>{message?.nick || message?.from}</span>
|
|
27
27
|
}
|
|
28
28
|
{
|
|
29
|
-
message?.flow !== MESSAGE_FLOW.IN && <span>{t('TUIChat.You')}</span>
|
|
29
|
+
message?.flow !== MESSAGE_FLOW.IN && <span style={{ marginRight: '5px' }}>{t('TUIChat.You')}</span>
|
|
30
30
|
}
|
|
31
|
-
<span>{t('TUIChat.recalled a message')}</span>
|
|
31
|
+
<span style={{ marginRight: '5px' }}>{t('TUIChat.recalled a message')}</span>
|
|
32
32
|
{
|
|
33
33
|
message?.flow === MESSAGE_FLOW.OUT
|
|
34
34
|
&& message?.type === TencentCloudChat.TYPES.MSG_TEXT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import TencentCloudChat, { Message } from '@tencentcloud/chat';
|
|
3
|
-
import { UnknowPorps } from '../../context';
|
|
3
|
+
import { UnknowPorps, useTUIChatStateContext, useComponentContext } from '../../context';
|
|
4
4
|
|
|
5
5
|
export interface MessageContextProps {
|
|
6
6
|
context?: UnknowPorps,
|
|
@@ -16,14 +16,36 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
16
16
|
message,
|
|
17
17
|
children,
|
|
18
18
|
} = props;
|
|
19
|
-
|
|
19
|
+
const { MessageTextPlugins } = useComponentContext('MessageText');
|
|
20
|
+
const { firstSendMessage } = useTUIChatStateContext('MessageText');
|
|
21
|
+
if (MessageTextPlugins && message.flow === 'in' && (firstSendMessage?.time <= message?.time)) {
|
|
22
|
+
return (
|
|
23
|
+
<div className={`bubble message-text bubble-${message.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
24
|
+
<MessageTextPlugins data={message} />
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
const urlToLink = function (text: string) {
|
|
29
|
+
if (!text) {
|
|
30
|
+
return text;
|
|
31
|
+
}
|
|
32
|
+
// eslint-disable-next-line no-useless-escape
|
|
33
|
+
const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
|
|
34
|
+
return text.replace(urlRegex, (website) => `<a class='website' href='${website}' target='_blank'>${website}</a>`);
|
|
35
|
+
};
|
|
20
36
|
return (
|
|
21
37
|
<div className={`bubble message-text bubble-${message.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
22
38
|
<div className="message-text-content">
|
|
23
39
|
{context.text.map((item, index) => {
|
|
24
40
|
const key = message.ID + index;
|
|
25
41
|
if (item.name === 'text') {
|
|
26
|
-
return
|
|
42
|
+
return (
|
|
43
|
+
<p
|
|
44
|
+
className="message-text-content-p"
|
|
45
|
+
key={item.src + key}
|
|
46
|
+
dangerouslySetInnerHTML={{ __html: urlToLink(item.text) }}
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
27
49
|
}
|
|
28
50
|
return <img className="text-img" key={item.src + key} src={item.src} alt="" />;
|
|
29
51
|
})}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import React, { PropsWithChildren, useState } from 'react';
|
|
1
|
+
import React, { PropsWithChildren, useEffect, useState } from 'react';
|
|
2
2
|
import { MESSAGE_STATUS } from '../../constants';
|
|
3
|
+
import { isH5, isPC } from '../../utils/env';
|
|
3
4
|
import { Model } from '../Model';
|
|
4
5
|
import type { MessageContextProps } from './MessageText';
|
|
5
6
|
|
|
@@ -13,18 +14,20 @@ function MessageVideoWithContext <T extends MessageContextProps>(
|
|
|
13
14
|
} = props;
|
|
14
15
|
|
|
15
16
|
const [show, setShow] = useState(false);
|
|
17
|
+
const transparentPosterUrl = 'https://web.sdk.qcloud.com/im/assets/images/transparent.png';
|
|
16
18
|
|
|
17
19
|
return (
|
|
18
|
-
<div className=
|
|
20
|
+
<div className={`message-video ${isH5 ? 'message-video-h5' : ''}`}>
|
|
19
21
|
<div className={`${message?.status === MESSAGE_STATUS.SUCCESS ? 'snap-video' : ''}`} role="button" tabIndex={0} onClick={() => { setShow(true); }}>
|
|
20
|
-
<video muted controls={false} src={context.url} />
|
|
22
|
+
{isPC && (<video muted controls={false} src={context.url} />)}
|
|
23
|
+
{isH5 && (<img src={message.payload.snapshotUrl || transparentPosterUrl} style={{ maxHeight: '200px', maxWidth: '200px', borderRadius: '10px' }} />)}
|
|
21
24
|
</div>
|
|
22
25
|
|
|
23
26
|
{children}
|
|
24
27
|
{
|
|
25
28
|
show && (
|
|
26
|
-
<Model onClick={() => { setShow(false); }}>
|
|
27
|
-
<video className="play-video"
|
|
29
|
+
<Model onClick={(e) => { e.stopPropagation(); setShow(false); }}>
|
|
30
|
+
<video className="play-video" autoPlay controls src={context.url} />
|
|
28
31
|
</Model>
|
|
29
32
|
)
|
|
30
33
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
3
|
import { Message } from '@tencentcloud/chat';
|
|
4
|
-
import {
|
|
4
|
+
import { TUIStore } from '@tencentcloud/chat-uikit-engine';
|
|
5
|
+
import { CONSTANT_DISPATCH_TYPE, MESSAGE_FLOW, MESSAGE_OPERATE } from '../../../constants';
|
|
6
|
+
import { enableSampleTaskStatus } from '../../untils';
|
|
5
7
|
import { useTUIChatActionContext, useTUIKitContext } from '../../../context';
|
|
6
8
|
import { Toast } from '../../Toast';
|
|
7
9
|
|
|
@@ -17,7 +19,6 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
17
19
|
} = props;
|
|
18
20
|
|
|
19
21
|
const {
|
|
20
|
-
removeMessage,
|
|
21
22
|
editLocalMessage,
|
|
22
23
|
operateMessage,
|
|
23
24
|
revokeMessage,
|
|
@@ -27,40 +28,19 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
27
28
|
|
|
28
29
|
const handleDelMessage = useCallback(async (event?) => {
|
|
29
30
|
event.preventDefault();
|
|
30
|
-
if (!message
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
try {
|
|
35
|
-
await chat.deleteMessage([message]);
|
|
36
|
-
removeMessage(message);
|
|
37
|
-
} catch (error) {
|
|
38
|
-
if (handleError) {
|
|
39
|
-
handleError({
|
|
40
|
-
functionName: 'deleteMessage',
|
|
41
|
-
error,
|
|
42
|
-
});
|
|
43
|
-
} else {
|
|
44
|
-
Toast({ text: t('TUIChat.Error deleting message'), type: 'error' });
|
|
45
|
-
throw new Error(error);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
31
|
+
if (!message) return;
|
|
32
|
+
const messageModel = TUIStore.getMessageModel(message?.ID);
|
|
33
|
+
messageModel.deleteMessage();
|
|
48
34
|
}, [message]);
|
|
49
35
|
|
|
50
36
|
const handleRevokeMessage = useCallback(async (event?) => {
|
|
51
37
|
event.preventDefault();
|
|
52
|
-
if (!message
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
try {
|
|
57
|
-
if (revokeMessage) {
|
|
58
|
-
await revokeMessage(message);
|
|
59
|
-
} else {
|
|
60
|
-
await chat.revokeMessage(message);
|
|
61
|
-
}
|
|
38
|
+
if (!message) return;
|
|
39
|
+
const messageModel = TUIStore.getMessageModel(message?.ID);
|
|
40
|
+
messageModel.revokeMessage().then(() => {
|
|
62
41
|
editLocalMessage(message);
|
|
63
|
-
|
|
42
|
+
enableSampleTaskStatus('revokeMessage');
|
|
43
|
+
}).catch((error: any) => {
|
|
64
44
|
if (handleError) {
|
|
65
45
|
handleError({
|
|
66
46
|
functionName: 'revokeMessage',
|
|
@@ -71,7 +51,7 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
71
51
|
Toast({ text, type: 'error' });
|
|
72
52
|
throw new Error(error);
|
|
73
53
|
}
|
|
74
|
-
}
|
|
54
|
+
});
|
|
75
55
|
}, [message]);
|
|
76
56
|
|
|
77
57
|
const handleReplyMessage = useCallback((event?) => {
|
|
@@ -110,7 +90,7 @@ export const useMessageHandler = (props?: MessageHandlerProps) => {
|
|
|
110
90
|
try {
|
|
111
91
|
const res = await chat.resendMessage(message);
|
|
112
92
|
editLocalMessage(res?.data?.message);
|
|
113
|
-
} catch (error) {
|
|
93
|
+
} catch (error: any) {
|
|
114
94
|
if (handleError) {
|
|
115
95
|
handleError({
|
|
116
96
|
functionName: 'resendMessage',
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
.name {
|
|
24
24
|
display: inline-block;
|
|
25
25
|
padding-bottom: 3px;
|
|
26
|
+
max-width: 60%;
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
.bubble {
|
|
58
59
|
padding: 8px 16px;
|
|
59
60
|
&-in {
|
|
60
|
-
border-radius: 16px 16px 16px
|
|
61
|
+
border-radius: 0px 16px 16px 16px;
|
|
61
62
|
&.group {
|
|
62
63
|
border-radius: 0px 16px 16px 16px;
|
|
63
64
|
}
|
|
@@ -104,8 +105,9 @@
|
|
|
104
105
|
font-style: normal;
|
|
105
106
|
font-weight: 500;
|
|
106
107
|
font-size: 14px;
|
|
107
|
-
line-height:
|
|
108
|
+
line-height: 24px;
|
|
108
109
|
&-p {
|
|
110
|
+
white-space: pre-wrap;
|
|
109
111
|
display: inline;
|
|
110
112
|
vertical-align: middle;
|
|
111
113
|
}
|
|
@@ -136,9 +138,13 @@
|
|
|
136
138
|
img {
|
|
137
139
|
max-width: 300px;
|
|
138
140
|
}
|
|
141
|
+
.img-h5 {
|
|
142
|
+
max-width: 200px;
|
|
143
|
+
max-height: 200px;
|
|
144
|
+
}
|
|
139
145
|
.big-image {
|
|
140
|
-
max-width:
|
|
141
|
-
max-height:
|
|
146
|
+
max-width: 90%;
|
|
147
|
+
max-height: 90%;
|
|
142
148
|
}
|
|
143
149
|
}
|
|
144
150
|
|
|
@@ -146,6 +152,8 @@
|
|
|
146
152
|
max-width: 300px;
|
|
147
153
|
.snap-video {
|
|
148
154
|
position: relative;
|
|
155
|
+
height: 100%;
|
|
156
|
+
border-radius: 10px;
|
|
149
157
|
&::before {
|
|
150
158
|
position: absolute;
|
|
151
159
|
z-index: 1;
|
|
@@ -163,14 +171,18 @@
|
|
|
163
171
|
}
|
|
164
172
|
video {
|
|
165
173
|
width: 100%;
|
|
174
|
+
height: 100%;
|
|
166
175
|
border-radius: 10px;
|
|
167
176
|
}
|
|
168
177
|
.play-video {
|
|
169
178
|
max-width: 95%;
|
|
170
|
-
max-height:
|
|
179
|
+
max-height: 65%;
|
|
171
180
|
}
|
|
172
181
|
}
|
|
173
|
-
|
|
182
|
+
.message-video.message-video-h5 {
|
|
183
|
+
max-width: 200px;
|
|
184
|
+
max-height: 200px;
|
|
185
|
+
}
|
|
174
186
|
.message-file {
|
|
175
187
|
display: flex;
|
|
176
188
|
flex-direction: column;
|
|
@@ -317,6 +329,13 @@
|
|
|
317
329
|
max-width: 300px;
|
|
318
330
|
border-radius: 10px;
|
|
319
331
|
}
|
|
332
|
+
.img-h5, .video-h5{
|
|
333
|
+
min-width: 60px;
|
|
334
|
+
min-height: 60px;
|
|
335
|
+
max-width: 200px;
|
|
336
|
+
max-height: 200px;
|
|
337
|
+
border-radius: 10px;
|
|
338
|
+
}
|
|
320
339
|
&::before {
|
|
321
340
|
position: absolute;
|
|
322
341
|
content: "";
|
|
@@ -358,6 +377,7 @@
|
|
|
358
377
|
.plugin-popup-box{
|
|
359
378
|
bottom: auto;
|
|
360
379
|
top: 100%;
|
|
380
|
+
overflow: hidden;
|
|
361
381
|
}
|
|
362
382
|
|
|
363
383
|
&-box {
|
|
@@ -449,17 +469,20 @@
|
|
|
449
469
|
@keyframes highLightedAnimation {
|
|
450
470
|
0% {
|
|
451
471
|
opacity: 1;
|
|
472
|
+
color: #ff9c19;
|
|
452
473
|
}
|
|
453
474
|
25% {
|
|
454
475
|
opacity: 0.3;
|
|
455
476
|
}
|
|
456
477
|
50% {
|
|
478
|
+
color: #ff9c19;
|
|
457
479
|
opacity: 1;
|
|
458
480
|
}
|
|
459
481
|
75% {
|
|
460
482
|
opacity: 0.3;
|
|
461
483
|
}
|
|
462
484
|
100% {
|
|
485
|
+
color: #ff9c19;
|
|
463
486
|
opacity: 1;
|
|
464
487
|
}
|
|
465
488
|
}
|
|
@@ -478,3 +501,7 @@
|
|
|
478
501
|
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.25);
|
|
479
502
|
}
|
|
480
503
|
}
|
|
504
|
+
|
|
505
|
+
.website {
|
|
506
|
+
color: #147aff !important;
|
|
507
|
+
}
|
|
@@ -127,7 +127,7 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
127
127
|
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.quit group')}`;
|
|
128
128
|
break;
|
|
129
129
|
case TencentCloudChat.TYPES.GRP_TIP_MBR_KICKED_OUT:
|
|
130
|
-
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by')}${message.payload.operatorID}${t(
|
|
130
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by')} ${message.payload.operatorID} ${t(
|
|
131
131
|
'message.tip.kicked out of group',
|
|
132
132
|
)}`;
|
|
133
133
|
break;
|
|
@@ -2,7 +2,7 @@ import React, { useEffect, useRef, useState } from 'react';
|
|
|
2
2
|
import { useTranslation } from 'react-i18next';
|
|
3
3
|
import { MESSAGE_OPERATE } from '../../constants';
|
|
4
4
|
import { useTUIChatStateContext } from '../../context';
|
|
5
|
-
|
|
5
|
+
import { isPC } from '../../utils/env';
|
|
6
6
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
7
7
|
import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
|
|
8
8
|
|
|
@@ -34,7 +34,7 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
34
34
|
useEffect(() => {
|
|
35
35
|
if (focus && textareaRef.current) {
|
|
36
36
|
textareaRef.current.autofocus = true;
|
|
37
|
-
textareaRef?.current?.focus();
|
|
37
|
+
isPC && textareaRef?.current?.focus();
|
|
38
38
|
textareaRef?.current?.addEventListener('paste', handlePasete);
|
|
39
39
|
}
|
|
40
40
|
return () => {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
useCallback,
|
|
5
5
|
} from 'react';
|
|
6
6
|
import { useTranslation } from 'react-i18next';
|
|
7
|
-
import {
|
|
7
|
+
import { TUIChatService } from '@tencentcloud/chat-uikit-engine';
|
|
8
8
|
import { emojiEnKey } from '../../TUIMessage/utils/emojiMap';
|
|
9
9
|
import type { IbaseStateProps } from './useMessageInputState';
|
|
10
10
|
|
|
@@ -25,7 +25,6 @@ export function useEmojiPicker<T extends useEmojiPickerProps>(props:PropsWithChi
|
|
|
25
25
|
} = props;
|
|
26
26
|
|
|
27
27
|
const { i18n } = useTranslation();
|
|
28
|
-
const { sendMessage, createFaceMessage } = useTUIChatActionContext('useEmojiPicker');
|
|
29
28
|
|
|
30
29
|
const onSelectEmoji = (emoji:EmojiData) => {
|
|
31
30
|
if (i18n.language === 'zh') {
|
|
@@ -36,10 +35,7 @@ export function useEmojiPicker<T extends useEmojiPickerProps>(props:PropsWithChi
|
|
|
36
35
|
};
|
|
37
36
|
|
|
38
37
|
const sendFaceMessage = useCallback((emoji:EmojiData) => {
|
|
39
|
-
|
|
40
|
-
payload: emoji,
|
|
41
|
-
});
|
|
42
|
-
sendMessage(message);
|
|
38
|
+
TUIChatService.sendFaceMessage({ payload: emoji });
|
|
43
39
|
}, []);
|
|
44
40
|
|
|
45
41
|
return {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { useEffect, useState } from 'react';
|
|
2
2
|
import TencentCloudChat, { Conversation, Message } from '@tencentcloud/chat';
|
|
3
|
+
import {
|
|
4
|
+
TUIChatService,
|
|
5
|
+
} from '@tencentcloud/chat-uikit-engine';
|
|
3
6
|
import { MESSAGE_OPERATE } from '../../../constants';
|
|
4
7
|
import {
|
|
5
8
|
useTUIChatActionContext, useTUIChatStateContext, useTUIKitContext,
|
|
@@ -11,15 +14,13 @@ export function useHandleForwardMessage(msg?:Message) {
|
|
|
11
14
|
} = useTUIChatStateContext('TUIMessageInputDefault');
|
|
12
15
|
|
|
13
16
|
const [conversationList, setConversationList] = useState([]);
|
|
14
|
-
const { sendMessage, createForwardMessage } = useTUIChatActionContext('useHandleForwardMessage');
|
|
15
17
|
const { chat } = useTUIKitContext('TUIChat');
|
|
16
18
|
|
|
17
19
|
const message = msg || operateData[MESSAGE_OPERATE.FORWARD];
|
|
18
20
|
|
|
19
21
|
const sendForwardMessage = (list:Array<Conversation>) => {
|
|
20
22
|
list.map((item:Conversation) => {
|
|
21
|
-
|
|
22
|
-
sendMessage(forwardMessage);
|
|
23
|
+
TUIChatService.sendForwardMessage([item], [message]);
|
|
23
24
|
return item;
|
|
24
25
|
});
|
|
25
26
|
};
|
|
@@ -3,11 +3,15 @@ import React, {
|
|
|
3
3
|
ChangeEventHandler,
|
|
4
4
|
MutableRefObject,
|
|
5
5
|
} from 'react';
|
|
6
|
+
import {
|
|
7
|
+
TUIChatService,
|
|
8
|
+
} from '@tencentcloud/chat-uikit-engine';
|
|
6
9
|
import { CONSTANT_DISPATCH_TYPE, MESSAGE_OPERATE, MESSAGE_TYPE_NAME } from '../../../constants';
|
|
7
10
|
import {
|
|
8
11
|
useTUIChatActionContext,
|
|
9
12
|
useTUIKitContext,
|
|
10
13
|
} from '../../../context';
|
|
14
|
+
import { enableSampleTaskStatus } from '../../untils';
|
|
11
15
|
import { formatEmojiString } from '../../TUIMessage/utils/emojiMap';
|
|
12
16
|
import { useHandleQuoteMessage } from './useHandleQuoteMessage';
|
|
13
17
|
import type { IbaseStateProps, ICursorPos } from './useMessageInputState';
|
|
@@ -29,7 +33,7 @@ export const useMessageInputText = (props:useMessageInputTextProps) => {
|
|
|
29
33
|
} = props;
|
|
30
34
|
|
|
31
35
|
const { chat } = useTUIKitContext('useMessageInputText');
|
|
32
|
-
const {
|
|
36
|
+
const { operateMessage, setFirstSendMessage } = useTUIChatActionContext('TUIMessageInput');
|
|
33
37
|
|
|
34
38
|
const { cloudCustomData } = useHandleQuoteMessage();
|
|
35
39
|
|
|
@@ -64,8 +68,11 @@ export const useMessageInputText = (props:useMessageInputTextProps) => {
|
|
|
64
68
|
if (cloudCustomData.messageReply) {
|
|
65
69
|
options.cloudCustomData = JSON.stringify(cloudCustomData);
|
|
66
70
|
}
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
TUIChatService.sendTextMessage(options).then((res: any) => {
|
|
72
|
+
const { message } = res.data;
|
|
73
|
+
setFirstSendMessage(message);
|
|
74
|
+
});
|
|
75
|
+
enableSampleTaskStatus('sendMessage');
|
|
69
76
|
dispatch({
|
|
70
77
|
getNewText: (text:string) => '',
|
|
71
78
|
type: CONSTANT_DISPATCH_TYPE.SET_TEXT,
|
|
@@ -2,7 +2,11 @@ import {
|
|
|
2
2
|
PropsWithChildren,
|
|
3
3
|
useCallback,
|
|
4
4
|
} from 'react';
|
|
5
|
+
import {
|
|
6
|
+
TUIChatService,
|
|
7
|
+
} from '@tencentcloud/chat-uikit-engine';
|
|
5
8
|
import { MESSAGE_TYPE_NAME } from '../../../constants';
|
|
9
|
+
import { enableSampleTaskStatus } from '../../untils';
|
|
6
10
|
import { useTUIChatActionContext } from '../../../context';
|
|
7
11
|
import type { IbaseStateProps } from './useMessageInputState';
|
|
8
12
|
|
|
@@ -12,29 +16,21 @@ export interface filesData {
|
|
|
12
16
|
|
|
13
17
|
export function useUploadPicker<T extends IbaseStateProps>(props:PropsWithChildren<T>) {
|
|
14
18
|
const {
|
|
15
|
-
sendMessage,
|
|
16
|
-
createImageMessage,
|
|
17
|
-
createVideoMessage,
|
|
18
|
-
createFileMessage,
|
|
19
19
|
updateUploadPendingMessageList,
|
|
20
20
|
} = useTUIChatActionContext('useUploadPicker');
|
|
21
21
|
|
|
22
22
|
const creatUploadMessage = {
|
|
23
|
-
[MESSAGE_TYPE_NAME.IMAGE]:
|
|
24
|
-
[MESSAGE_TYPE_NAME.VIDEO]:
|
|
25
|
-
[MESSAGE_TYPE_NAME.FILE]:
|
|
23
|
+
[MESSAGE_TYPE_NAME.IMAGE]: TUIChatService.sendImageMessage,
|
|
24
|
+
[MESSAGE_TYPE_NAME.VIDEO]: TUIChatService.sendVideoMessage,
|
|
25
|
+
[MESSAGE_TYPE_NAME.FILE]: TUIChatService.sendFileMessage,
|
|
26
26
|
};
|
|
27
27
|
|
|
28
28
|
const sendUploadMessage = useCallback((file: filesData, type:MESSAGE_TYPE_NAME) => {
|
|
29
|
-
|
|
29
|
+
creatUploadMessage[type]({
|
|
30
30
|
payload: file,
|
|
31
|
-
onProgress(num:number) {
|
|
32
|
-
message.progress = num;
|
|
33
|
-
updateUploadPendingMessageList(message);
|
|
34
|
-
},
|
|
35
31
|
});
|
|
36
|
-
sendMessage
|
|
37
|
-
}, [
|
|
32
|
+
enableSampleTaskStatus('sendMessage');
|
|
33
|
+
}, []);
|
|
38
34
|
|
|
39
35
|
return {
|
|
40
36
|
sendUploadMessage,
|