@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.
Files changed (241) hide show
  1. package/.eslintrc.js +2 -1
  2. package/CHANGELOG.md +8 -2
  3. package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  4. package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  5. package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  6. package/dist/cjs/components/ConversationPreview/ConversationPreview.d.ts +2 -0
  7. package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
  8. package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  9. package/dist/cjs/components/ConversationPreview/utils.js +1 -1
  10. package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
  11. package/dist/cjs/components/Icon/config.js +1 -1
  12. package/dist/cjs/components/Icon/images/chats-selected.svg.js +1 -0
  13. package/dist/cjs/components/Icon/images/chats.svg.js +1 -0
  14. package/dist/cjs/components/Icon/images/contacts-selected.svg.js +1 -0
  15. package/dist/cjs/components/Icon/images/contacts.svg.js +1 -0
  16. package/dist/cjs/components/Icon/images/files.png.js +1 -0
  17. package/dist/cjs/components/Icon/images/image.png.js +1 -1
  18. package/dist/cjs/components/Icon/images/video.png.js +1 -1
  19. package/dist/cjs/components/TUIChat/TUIChat.d.ts +5 -0
  20. package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
  21. package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
  22. package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
  23. package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  24. package/dist/cjs/components/TUIChat/unitls.js +1 -1
  25. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  26. package/dist/cjs/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
  27. package/dist/cjs/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
  28. package/dist/cjs/components/TUIConversation/TUIConversation.js +1 -1
  29. package/dist/cjs/components/TUIConversationList/TUIConversationList.d.ts +1 -0
  30. package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
  31. package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
  32. package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
  33. package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
  34. package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
  35. package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
  36. package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
  37. package/dist/cjs/components/TUIMessage/MessageName.js +1 -1
  38. package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
  39. package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
  40. package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
  41. package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
  42. package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
  43. package/dist/cjs/components/TUIMessage/MessageVideo.js +1 -1
  44. package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
  45. package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  46. package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
  47. package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
  48. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
  49. package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  50. package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  51. package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  52. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  53. package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  54. package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
  55. package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
  56. package/dist/cjs/components/untils.js +1 -1
  57. package/dist/cjs/constants.js +1 -1
  58. package/dist/cjs/context/ComponentContext.d.ts +2 -0
  59. package/dist/cjs/context/TUIChatActionContext.d.ts +3 -14
  60. package/dist/cjs/context/TUIChatStateContext.d.ts +2 -0
  61. package/dist/cjs/context/TUIConversationContext.js +1 -1
  62. package/dist/cjs/index.css +1 -1
  63. package/dist/cjs/index.d.css +240 -12
  64. package/dist/cjs/index.js +1 -1
  65. package/dist/cjs/locales/en/TUIChat.js +1 -1
  66. package/dist/cjs/locales/en/TUIContact.js +1 -1
  67. package/dist/cjs/locales/en/TUIProfile.js +1 -1
  68. package/dist/cjs/locales/index.js +1 -1
  69. package/dist/cjs/locales/zh_cn/TUIChat.js +1 -1
  70. package/dist/cjs/locales/zh_cn/TUIContact.js +1 -1
  71. package/dist/cjs/locales/zh_cn/TUIProfile.js +1 -1
  72. package/dist/cjs/server.js +1 -0
  73. package/dist/cjs/utils/env.js +1 -0
  74. package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  75. package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  76. package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  77. package/dist/esm/components/ConversationPreview/ConversationPreview.d.ts +2 -0
  78. package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
  79. package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  80. package/dist/esm/components/ConversationPreview/utils.js +1 -1
  81. package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
  82. package/dist/esm/components/Icon/config.js +1 -1
  83. package/dist/esm/components/Icon/images/chats-selected.svg.js +1 -0
  84. package/dist/esm/components/Icon/images/chats.svg.js +1 -0
  85. package/dist/esm/components/Icon/images/contacts-selected.svg.js +1 -0
  86. package/dist/esm/components/Icon/images/contacts.svg.js +1 -0
  87. package/dist/esm/components/Icon/images/files.png.js +1 -0
  88. package/dist/esm/components/Icon/images/image.png.js +1 -1
  89. package/dist/esm/components/Icon/images/video.png.js +1 -1
  90. package/dist/esm/components/TUIChat/TUIChat.d.ts +5 -0
  91. package/dist/esm/components/TUIChat/TUIChat.js +1 -1
  92. package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
  93. package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
  94. package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  95. package/dist/esm/components/TUIChat/unitls.js +1 -1
  96. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  97. package/dist/esm/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
  98. package/dist/esm/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
  99. package/dist/esm/components/TUIConversation/TUIConversation.js +1 -1
  100. package/dist/esm/components/TUIConversationList/TUIConversationList.d.ts +1 -0
  101. package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
  102. package/dist/esm/components/TUIKit/TUIKit.js +1 -1
  103. package/dist/esm/components/TUIManage/TUIManage.js +1 -1
  104. package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
  105. package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
  106. package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
  107. package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
  108. package/dist/esm/components/TUIMessage/MessageName.js +1 -1
  109. package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
  110. package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
  111. package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
  112. package/dist/esm/components/TUIMessage/MessageText.js +1 -1
  113. package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
  114. package/dist/esm/components/TUIMessage/MessageVideo.js +1 -1
  115. package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
  116. package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  117. package/dist/esm/components/TUIMessage/utils/index.js +1 -1
  118. package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
  119. package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
  120. package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  121. package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  122. package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  123. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  124. package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  125. package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
  126. package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
  127. package/dist/esm/components/untils.js +1 -1
  128. package/dist/esm/constants.js +1 -1
  129. package/dist/esm/context/ComponentContext.d.ts +2 -0
  130. package/dist/esm/context/TUIChatActionContext.d.ts +3 -14
  131. package/dist/esm/context/TUIChatStateContext.d.ts +2 -0
  132. package/dist/esm/context/TUIConversationContext.js +1 -1
  133. package/dist/esm/index.css +1 -1
  134. package/dist/esm/index.d.css +240 -12
  135. package/dist/esm/index.js +1 -1
  136. package/dist/esm/locales/en/TUIChat.js +1 -1
  137. package/dist/esm/locales/en/TUIContact.js +1 -1
  138. package/dist/esm/locales/en/TUIProfile.js +1 -1
  139. package/dist/esm/locales/index.js +1 -1
  140. package/dist/esm/locales/zh_cn/TUIChat.js +1 -1
  141. package/dist/esm/locales/zh_cn/TUIContact.js +1 -1
  142. package/dist/esm/locales/zh_cn/TUIProfile.js +1 -1
  143. package/dist/esm/server.js +1 -0
  144. package/dist/esm/utils/env.js +1 -0
  145. package/package.json +7 -6
  146. package/rollup.config.js +0 -1
  147. package/scripts/publish-github.js +60 -0
  148. package/scripts/publish-intl-demo.js +14 -0
  149. package/scripts/publish-npm.js +22 -0
  150. package/src/components/Avatar/styles/index.scss +1 -0
  151. package/src/components/ConversationCreate/ConversationCreatGroupDetail.tsx +6 -3
  152. package/src/components/ConversationCreate/ConversationCreateUserSelectList.tsx +5 -1
  153. package/src/components/ConversationCreate/hooks/useConversationCreate.tsx +7 -2
  154. package/src/components/ConversationCreate/styles/conversationGroupTypeInfo.scss +1 -0
  155. package/src/components/ConversationCreate/styles/index.scss +2 -0
  156. package/src/components/ConversationPreview/ConversationPreview.tsx +2 -0
  157. package/src/components/ConversationPreview/ConversationPreviewContent.tsx +57 -9
  158. package/src/components/ConversationPreview/styles/index.scss +4 -2
  159. package/src/components/ConversationPreview/utils.tsx +5 -1
  160. package/src/components/DivWithEdit/styles/index.scss +2 -1
  161. package/src/components/Icon/config.ts +1 -1
  162. package/src/components/Icon/images/chats-selected.svg +6 -0
  163. package/src/components/Icon/images/chats.svg +9 -0
  164. package/src/components/Icon/images/contacts-selected.svg +3 -0
  165. package/src/components/Icon/images/contacts.svg +6 -0
  166. package/src/components/Icon/images/files.png +0 -0
  167. package/src/components/Icon/images/image.png +0 -0
  168. package/src/components/Icon/images/language.svg +3 -0
  169. package/src/components/Icon/images/video.png +0 -0
  170. package/src/components/Model/styles/layout.scss +1 -1
  171. package/src/components/Profile/styles/index.scss +4 -0
  172. package/src/components/TUIChat/TUIChat.tsx +74 -120
  173. package/src/components/TUIChat/TUIChatState.tsx +18 -45
  174. package/src/components/TUIChat/hooks/useHandleMessage.tsx +8 -0
  175. package/src/components/TUIChat/hooks/useHandleMessageList.tsx +2 -41
  176. package/src/components/TUIChat/unitls.ts +0 -29
  177. package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +7 -1
  178. package/src/components/TUIContact/TUIContactInfo/friendInfo.tsx +4 -1
  179. package/src/components/TUIContact/TUIContactList/TUIContactList.tsx +1 -1
  180. package/src/components/TUIConversation/TUIConversation.tsx +1 -4
  181. package/src/components/TUIConversationList/TUIConversationList.tsx +91 -65
  182. package/src/components/TUIConversationList/index.scss +5 -0
  183. package/src/components/TUIKit/TUIKit.tsx +133 -9
  184. package/src/components/TUIKit/styles/h5.scss +34 -0
  185. package/src/components/TUIKit/styles/index.scss +103 -0
  186. package/src/components/TUIKit/styles/reset.scss +20 -0
  187. package/src/components/TUIManage/TUIManage.tsx +59 -35
  188. package/src/components/TUIManage/styles/index.scss +15 -1
  189. package/src/components/TUIMessage/MessageBubble.tsx +20 -3
  190. package/src/components/TUIMessage/MessageCustom.tsx +11 -2
  191. package/src/components/TUIMessage/MessageImage.tsx +2 -1
  192. package/src/components/TUIMessage/MessageName.tsx +1 -1
  193. package/src/components/TUIMessage/MessagePlugins.tsx +4 -2
  194. package/src/components/TUIMessage/MessageRevoke.tsx +2 -2
  195. package/src/components/TUIMessage/MessageText.tsx +25 -3
  196. package/src/components/TUIMessage/MessageVideo.tsx +8 -5
  197. package/src/components/TUIMessage/hooks/useMessageHandler.ts +13 -33
  198. package/src/components/TUIMessage/styles/color.scss +1 -0
  199. package/src/components/TUIMessage/styles/layout.scss +33 -6
  200. package/src/components/TUIMessage/utils/index.ts +1 -1
  201. package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +2 -2
  202. package/src/components/TUIMessageInput/hooks/useEmojiPicker.tsx +2 -6
  203. package/src/components/TUIMessageInput/hooks/useHandleForwardMessage.tsx +4 -3
  204. package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +10 -3
  205. package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +10 -14
  206. package/src/components/TUIMessageInput/styles/color.scss +1 -1
  207. package/src/components/TUIMessageInput/styles/layout.scss +7 -2
  208. package/src/components/TUIMessageList/TUIMessageList.tsx +9 -13
  209. package/src/components/TUIMessageList/index.ts +0 -1
  210. package/src/components/TUIProfile/TUIProfileDefault.tsx +65 -51
  211. package/src/components/TUIProfile/styles/layout.scss +6 -0
  212. package/src/components/untils.ts +9 -0
  213. package/src/constants.ts +4 -1
  214. package/src/context/ComponentContext.tsx +2 -0
  215. package/src/context/TUIChatActionContext.tsx +3 -23
  216. package/src/context/TUIChatStateContext.tsx +2 -0
  217. package/src/context/TUIKitContext.tsx +0 -1
  218. package/src/index.ts +3 -0
  219. package/src/locales/en/TUIChat.ts +2 -1
  220. package/src/locales/en/TUIContact.ts +1 -1
  221. package/src/locales/en/TUIProfile.ts +5 -4
  222. package/src/locales/index.ts +1 -1
  223. package/src/locales/zh_cn/TUIChat.ts +1 -0
  224. package/src/locales/zh_cn/TUIContact.ts +1 -1
  225. package/src/locales/zh_cn/TUIProfile.ts +1 -0
  226. package/src/server.ts +44 -0
  227. package/src/utils/env.ts +5 -0
  228. package/tsconfig.json +1 -0
  229. package/dist/cjs/components/Icon/images/document.png.js +0 -1
  230. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +0 -59
  231. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +0 -1
  232. package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +0 -1
  233. package/dist/cjs/components/TUIMessageList/hooks/useEnrichedMessageList.js +0 -1
  234. package/dist/esm/components/Icon/images/document.png.js +0 -1
  235. package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +0 -59
  236. package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +0 -1
  237. package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +0 -1
  238. package/dist/esm/components/TUIMessageList/hooks/useEnrichedMessageList.js +0 -1
  239. package/src/components/TUIChat/hooks/useCreateMessage.tsx +0 -198
  240. package/src/components/TUIChat/hooks/useMessageReceviedListener.tsx +0 -26
  241. package/src/components/TUIMessageList/hooks/useEnrichedMessageList.tsx +0 -16
@@ -91,11 +91,11 @@ ul li {
91
91
  // emoji picker styles
92
92
  .emoji-picker {
93
93
  .face-list {
94
- min-width: 265px;
94
+ height: 120px;
95
+ width: 242px;
95
96
  padding: 10px 5px;
96
97
  display: flex;
97
98
  flex-wrap: wrap;
98
- max-height: 120px;
99
99
  overflow-y: auto;
100
100
  &-item {
101
101
  padding: 5px;
@@ -190,6 +190,7 @@ ul li {
190
190
  flex-direction: column;
191
191
  overflow: hidden;
192
192
  width: 300px;
193
+ max-height: 90%;
193
194
  &-header {
194
195
  display: flex;
195
196
  align-items: center;
@@ -239,9 +240,12 @@ ul li {
239
240
  display: flex;
240
241
  justify-content: space-between;
241
242
  align-items: center;
243
+ width: 100%;
242
244
  .info {
243
245
  display: flex;
244
246
  align-items: center;
247
+ flex-shrink: 0;
248
+ width: 100%;
245
249
  &-nick {
246
250
  padding: 0 13px;
247
251
  font-family: PingFangSC-Medium;
@@ -254,6 +258,7 @@ ul li {
254
258
  overflow: hidden;
255
259
  white-space: nowrap;
256
260
  text-overflow: ellipsis;
261
+ width: 80%;
257
262
  }
258
263
  }
259
264
  }
@@ -6,7 +6,6 @@ import {
6
6
  useTUIChatActionContext,
7
7
  useComponentContext,
8
8
  } from '../../context';
9
- import useEnrichedMessageList from './hooks/useEnrichedMessageList';
10
9
  import useMessageListElement from './hooks/useMessageListElement';
11
10
 
12
11
  import { InfiniteScroll, InfiniteScrollProps } from '../InfiniteScrollPaginator';
@@ -25,7 +24,6 @@ function TUIMessageListWithContext <T extends MessageListProps>(
25
24
  props: PropsWithChildren<T>,
26
25
  ):React.ReactElement {
27
26
  const {
28
- messageList: propsMessageList,
29
27
  highlightedMessageId: propsHighlightedMessageId,
30
28
  loadMore: propsLoadMore,
31
29
  intervalsTimer: propsIntervalsTimer,
@@ -35,7 +33,6 @@ function TUIMessageListWithContext <T extends MessageListProps>(
35
33
  const { t } = useTranslation();
36
34
  const [ulElement, setUlElement] = useState<HTMLUListElement | null>(null);
37
35
  const [firstRender, setFirstRender] = useState<boolean>(false);
38
-
39
36
  const {
40
37
  messageList: contextMessageList,
41
38
  highlightedMessageId: contextHighlightedMessageId,
@@ -51,32 +48,31 @@ function TUIMessageListWithContext <T extends MessageListProps>(
51
48
  const highlightedMessageId = propsHighlightedMessageId
52
49
  || TUIMessageListConfig?.highlightedMessageId
53
50
  || contextHighlightedMessageId;
54
- const intervalsTimer = (propsIntervalsTimer || TUIMessageListConfig?.intervalsTimer || 30) * 60;
55
51
 
56
- const { messageList: enrichedMessageList } = useEnrichedMessageList({
57
- messageList: propsMessageList || TUIMessageListConfig?.messageList || contextMessageList,
58
- });
52
+ const intervalsTimer = (propsIntervalsTimer || TUIMessageListConfig?.intervalsTimer || 30) * 60;
59
53
 
60
54
  const loadMore = propsLoadMore || TUIMessageListConfig?.loadMore || contextLoadMore;
61
55
 
62
56
  const elements = useMessageListElement({
63
- enrichedMessageList,
57
+ enrichedMessageList: contextMessageList,
64
58
  TUIMessage,
65
59
  intervalsTimer,
66
60
  });
67
-
68
61
  useEffect(() => {
62
+ // messageList 滑动到底部
69
63
  (async () => {
70
64
  const parentElement = ulElement?.parentElement?.parentElement;
71
- if (!isCompleted && parentElement?.clientHeight >= ulElement?.clientHeight) {
65
+ if (
66
+ !isCompleted
67
+ && parentElement?.clientHeight >= ulElement?.clientHeight
68
+ ) {
72
69
  await loadMore();
73
70
  }
74
-
75
- if (ulElement?.children && (!firstRender || !isSameLastMessageID)) {
71
+ if (ulElement?.children) {
76
72
  const HTMLCollection = ulElement?.children || [];
77
73
  const element = HTMLCollection[HTMLCollection.length - 1];
78
74
  const timer = setTimeout(() => {
79
- element?.scrollIntoView({ block: 'end' });
75
+ element?.scrollIntoView();
80
76
  setFirstRender(true);
81
77
  clearTimeout(timer);
82
78
  }, 100);
@@ -1,2 +1 @@
1
1
  export * from './TUIMessageList';
2
- export * from './hooks/useEnrichedMessageList';
@@ -1,8 +1,8 @@
1
- import React, { PropsWithChildren, useState } from 'react';
1
+ import React, { PropsWithChildren, useEffect, useState } from 'react';
2
2
  import { useTranslation } from 'react-i18next';
3
3
  import DatePicker from 'react-date-picker';
4
4
  import TencentCloudChat, { Profile } from '@tencentcloud/chat';
5
-
5
+ import { isH5 } from '../../utils/env';
6
6
  import { useTUIKitContext } from '../../context';
7
7
 
8
8
  import { Avatar } from '../Avatar';
@@ -59,13 +59,13 @@ const allowTypeList = [
59
59
 
60
60
  export interface TUIProfileDefaultProps {
61
61
  userInfo?: Profile,
62
- update?:(option:ProfileParams) => void,
62
+ update?: (option: ProfileParams) => void,
63
63
  className?: string,
64
64
  }
65
65
 
66
- function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
66
+ function TUIProfileDefaultWithContext<T extends TUIProfileDefaultProps>(
67
67
  props: PropsWithChildren<T>,
68
- ):React.ReactElement {
68
+ ): React.ReactElement {
69
69
  const {
70
70
  userInfo,
71
71
  className,
@@ -77,8 +77,20 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
77
77
 
78
78
  const [isEditName, setIsEditName] = useState('');
79
79
 
80
- // show birthday famate
81
- const showBirthdayFormat = (value: string) => {
80
+ // birthday format to show
81
+ const birthdayFormatToShow = (dateNumber: number) => {
82
+ const dateStr = String(dateNumber);
83
+ if (dateStr.length === 8) {
84
+ const year = dateStr.substring(0, 4);
85
+ const month = dateStr.substring(4, 6);
86
+ const day = dateStr.substring(6, 8);
87
+ return `${year}/${month}/${day}`;
88
+ }
89
+ return `${dateNumber}`;
90
+ };
91
+
92
+ // transform birthday string value to Date object
93
+ const transformBirthdayStringToDate = (value: string) => {
82
94
  if (value?.length === 8) {
83
95
  const y = Number(value.slice(0, 4));
84
96
  const m = Number(value.slice(4, 6));
@@ -88,15 +100,15 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
88
100
  return new Date();
89
101
  };
90
102
 
91
- // edit birthday famate transform
92
- const editBirthdayFamate = (date:Date) => {
103
+ // edit birthday format transform
104
+ const editBirthdayFormat = (date: Date) => {
93
105
  const day = date.getDate() > 9 ? date.getDate() : `0${date.getDate()}`;
94
106
  const month = date.getMonth() > 8 ? date.getMonth() + 1 : `0${date.getMonth() + 1}`;
95
107
  const year = date.getFullYear();
96
108
  return `${year}${month}${day}`;
97
109
  };
98
110
 
99
- const editListMap = [
111
+ let editListMap = [
100
112
  {
101
113
  name: 'Signature',
102
114
  value: userInfo?.selfSignature,
@@ -116,21 +128,21 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
116
128
  children: (
117
129
  <ul className="select-list">
118
130
  {
119
- genderList?.map((item, index) => {
120
- const key = `${item.value}${index}`;
121
- return (
122
- <li
123
- className="select-list-item"
124
- role="menuitem"
125
- tabIndex={index}
126
- key={key}
127
- onClick={() => { editGender(item); }}
128
- >
129
- {t(`TUIProfile.${item.label}`)}
130
- </li>
131
- );
132
- })
133
- }
131
+ genderList?.map((item, index) => {
132
+ const key = `${item.value}${index}`;
133
+ return (
134
+ <li
135
+ className="select-list-item"
136
+ role="menuitem"
137
+ tabIndex={index}
138
+ key={key}
139
+ onClick={() => { editGender(item); }}
140
+ >
141
+ {t(`TUIProfile.${item.label}`)}
142
+ </li>
143
+ );
144
+ })
145
+ }
134
146
  </ul>
135
147
  ),
136
148
  },
@@ -144,27 +156,27 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
144
156
  children: (
145
157
  <ul className="select-list">
146
158
  {
147
- allowTypeList?.map((item, index) => {
148
- const key = `${item.value}${index}`;
149
- return (
150
- <li
151
- className="select-list-item"
152
- role="menuitem"
153
- tabIndex={index}
154
- key={key}
155
- onClick={() => { editAllowType(item); }}
156
- >
157
- {t(`TUIProfile.${item.label}`)}
158
- </li>
159
- );
160
- })
161
- }
159
+ allowTypeList?.map((item, index) => {
160
+ const key = `${item.value}${index}`;
161
+ return (
162
+ <li
163
+ className="select-list-item"
164
+ role="menuitem"
165
+ tabIndex={index}
166
+ key={key}
167
+ onClick={() => { editAllowType(item); }}
168
+ >
169
+ {t(`TUIProfile.${item.label}`)}
170
+ </li>
171
+ );
172
+ })
173
+ }
162
174
  </ul>
163
175
  ),
164
176
  },
165
177
  {
166
178
  name: 'Birthday',
167
- value: `${userInfo?.birthday}`,
179
+ value: userInfo?.birthday ? birthdayFormatToShow(userInfo.birthday) : '',
168
180
  type: 'select',
169
181
  children: (
170
182
  <DatePicker
@@ -172,13 +184,15 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
172
184
  calendarClassName="tui-profile-birthday-calendar"
173
185
  isOpen
174
186
  format="y-MM-dd"
175
- onChange={(value:Date) => { editBirthday(value); }}
176
- value={showBirthdayFormat(`${userInfo?.birthday}`)}
187
+ onChange={(value: Date) => { editBirthday(value); }}
188
+ value={transformBirthdayStringToDate(`${userInfo?.birthday}`)}
177
189
  />
178
190
  ),
179
191
  },
180
192
  ];
181
-
193
+ if (isH5) {
194
+ editListMap = editListMap.filter((item) => item.name !== 'Birthday');
195
+ }
182
196
  const handleSetEditName = (name:string) => {
183
197
  setIsEditName(name);
184
198
  };
@@ -189,12 +203,12 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
189
203
  };
190
204
 
191
205
  // edit avatar
192
- const editAvatar = (url:string) => {
206
+ const editAvatar = (url: string) => {
193
207
  confirm({ avatar: url });
194
208
  };
195
209
 
196
210
  // edit nick / selfSignature
197
- const editText = (data?:any) => {
211
+ const editText = (data?: any) => {
198
212
  let key = '';
199
213
  switch (data?.name) {
200
214
  case 'nick':
@@ -224,9 +238,9 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
224
238
  };
225
239
 
226
240
  // edit birthday
227
- const editBirthday = (value:Date) => {
241
+ const editBirthday = (value: Date) => {
228
242
  confirm({
229
- birthday: Number(editBirthdayFamate(value)),
243
+ birthday: Number(editBirthdayFormat(value)),
230
244
  });
231
245
  };
232
246
 
@@ -276,7 +290,7 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
276
290
  className="tui-profile-div-with-edit"
277
291
  classEditName="tui-profile-edit"
278
292
  name={item.name}
279
- value={item?.value}
293
+ value={item.value}
280
294
  type={item.type}
281
295
  toggle={handleSetEditName}
282
296
  isEdit={isEditName === item.name}
@@ -296,10 +310,10 @@ function TUIProfileDefaultWithContext <T extends TUIProfileDefaultProps>(
296
310
  }
297
311
 
298
312
  const MemoizedTUIProfileDefault = React.memo(TUIProfileDefaultWithContext) as
299
- typeof TUIProfileDefaultWithContext;
313
+ typeof TUIProfileDefaultWithContext;
300
314
 
301
315
  export function TUIProfileDefault(props: TUIProfileDefaultProps)
302
- :React.ReactElement {
316
+ : React.ReactElement {
303
317
  const options = { ...props };
304
318
  return <MemoizedTUIProfileDefault {...options} />;
305
319
  }
@@ -59,8 +59,10 @@
59
59
  padding: 0 20px;
60
60
  display: flex;
61
61
  flex-direction: column;
62
+ user-select: none;
62
63
  &-item {
63
64
  padding: 20px 0 0;
65
+ cursor: pointer;
64
66
  h4 {
65
67
  padding-bottom: 3px;
66
68
  font-weight: 400;
@@ -86,6 +88,10 @@
86
88
  }
87
89
  .react-date-picker__calendar {
88
90
  position: static !important;
91
+ .react-calendar__navigation {
92
+ height: 20px !important;
93
+ margin-bottom: 0px;
94
+ }
89
95
  }
90
96
  &-calendar {
91
97
  border: none !important;
@@ -8,6 +8,7 @@ import {
8
8
  } from 'date-fns';
9
9
  import { enGB, zhCN } from 'date-fns/locale';
10
10
  import TencentCloudChat from '@tencentcloud/chat';
11
+ import { TUIStore, StoreName } from '@tencentcloud/chat-uikit-engine';
11
12
  import { defaultGroupAvatarWork, defaultUserAvatar } from './Avatar';
12
13
 
13
14
  // Determine if it is a JSON string
@@ -88,3 +89,11 @@ export const getTimeStamp = (time: number, language?: string) => {
88
89
  locale: locales[lng],
89
90
  });
90
91
  };
92
+
93
+ export function enableSampleTaskStatus(taskKey: string) {
94
+ const tasks = TUIStore.getData(StoreName.APP, 'tasks');
95
+ if (taskKey in tasks && !tasks[taskKey]) {
96
+ tasks[taskKey] = true;
97
+ TUIStore.update(StoreName.APP, 'tasks', tasks);
98
+ }
99
+ }
package/src/constants.ts CHANGED
@@ -44,7 +44,10 @@ export enum CONSTANT_DISPATCH_TYPE {
44
44
  SET_CURSOR_POS = 'setCursorPos',
45
45
  SET_AUDIO_SOURCE = 'setAudioSource',
46
46
  SET_VIDEO_SOURCE = 'setVideoSource',
47
- UPDATE_UPLOAD_PENDING_MESSAGE_LIST = 'updateUploadPendingMessageList'
47
+ UPDATE_UPLOAD_PENDING_MESSAGE_LIST = 'updateUploadPendingMessageList',
48
+ SET_FIRST_SEND_MESSAGE = 'setFirstSendMessage',
49
+ SET_ACTIVE_MESSAGE_ID ='setActiveMessageID',
50
+
48
51
  }
49
52
 
50
53
  export enum MESSAGE_TYPE {
@@ -15,6 +15,8 @@ export interface ComponentContextValue {
15
15
  MessageContext?: React.ComponentType<MessageContextProps>,
16
16
  InputPlugins?: React.ComponentType<UnknowPorps>,
17
17
  MessagePlugins?: React.ComponentType<UnknowPorps>,
18
+ MessageCustomPlugins?: React.ComponentType<UnknowPorps>,
19
+ MessageTextPlugins?: React.ComponentType<UnknowPorps>,
18
20
  InputQuote?: React.ComponentType<UnknowPorps>,
19
21
  }
20
22
 
@@ -1,32 +1,11 @@
1
1
  import React, { PropsWithChildren, useContext } from 'react';
2
2
  import { Message } from '@tencentcloud/chat';
3
- import type {
4
- CreateCustomMessageProps,
5
- CreateFaceMessageProps,
6
- CreateForwardMessageProps,
7
- CreateLocationMessageProps,
8
- CreateMergerMessageProps,
9
- CreateTextAtMessageProps,
10
- CreateTextMessageProps,
11
- CreateUploadMessageProps,
12
- } from '../components/TUIChat/hooks/useCreateMessage';
3
+ import { IMessageModel } from '@tencentcloud/chat-uikit-engine';
13
4
  import { OperateMessageParams } from '../components/TUIChat/hooks/useHandleMessage';
14
5
 
15
6
  export interface TUIChatActionContextValue {
16
- sendMessage?: (message: Message, options?:any) => Promise<void>,
17
- removeMessage?: (message: Message) => void,
18
7
  updateMessage?: (messages: Array<Message>) => void,
19
- createTextMessage?: (options: CreateTextMessageProps) => Message,
20
- createFaceMessage?: (options: CreateFaceMessageProps) => Message,
21
- createImageMessage?: (options: CreateUploadMessageProps) => Message,
22
- createVideoMessage?: (options: CreateUploadMessageProps) => Message,
23
- createFileMessage?: (options: CreateUploadMessageProps) => Message,
24
- createForwardMessage?: (options: CreateForwardMessageProps) => Message,
25
- createCustomMessage?: (options: CreateCustomMessageProps) => Message,
26
- createAudioMessage?: (options: CreateUploadMessageProps) => Message,
27
- createTextAtMessage?: (options: CreateTextAtMessageProps) => Message,
28
- createLocationMessage?: (options: CreateLocationMessageProps) => Message,
29
- createMergerMessage?: (options: CreateMergerMessageProps) => Message,
8
+ setFirstSendMessage?: (message: IMessageModel) => void,
30
9
  editLocalMessage?: (message: Message) => void,
31
10
  operateMessage?: (data?: OperateMessageParams) => void,
32
11
  loadMore?: () => Promise<void>,
@@ -35,6 +14,7 @@ export interface TUIChatActionContextValue {
35
14
  setVideoSource?: (source: HTMLVideoElement | null) => void,
36
15
  setHighlightedMessageId?: (highlightedMessageId: string) => void,
37
16
  updateUploadPendingMessageList?: (message?:Message) => void,
17
+ setActiveMessageID?: (messageID: string) => void,
38
18
  }
39
19
 
40
20
  export const TUIChatActionContext = React.createContext<
@@ -25,6 +25,8 @@ export interface TUIChatStateContextValue {
25
25
  vidoeSource?: HTMLVideoElement,
26
26
  TUIMessageListConfig?: MessageListProps,
27
27
  uploadPendingMessageList?: Array<Message>,
28
+ firstSendMessage?: Message;
29
+ activeMessageID?: string,
28
30
  }
29
31
 
30
32
  export const TUIChatStateContext = React.createContext<TUIChatStateContextValue>(null);
@@ -17,7 +17,6 @@ export interface TUIKitContextValue {
17
17
  TUIManageShow?: boolean,
18
18
  setTUIManageShow?: React.Dispatch<React.SetStateAction<boolean>>,
19
19
  TUIProfileShow?: boolean,
20
- // 激活 contact 列表数据,右侧显示数据,无参数时,右侧数据默认为空
21
20
  setActiveContact: (UseContactParams?: UseContactParams) => void,
22
21
  setTUIProfileShow?: React.Dispatch<React.SetStateAction<boolean>>,
23
22
  }
package/src/index.ts CHANGED
@@ -1,3 +1,6 @@
1
+ import Server from './server';
2
+
3
+ const TUIChatKit = new Server();
1
4
  export * from './components';
2
5
  export * from './context';
3
6
  export * from './hooks';
@@ -10,7 +10,7 @@ const TUIChat = {
10
10
  'recalled a message': 'recalled a message',
11
11
  'Re-edit': 'Re-edit',
12
12
  'Resend': 'Resend',
13
- 'You': 'You',
13
+ 'You': 'You ',
14
14
  'Recent Chats': 'Recent Chats',
15
15
  'Frequently Contacted': 'Frequently Contacted',
16
16
  'No Result': 'No Result',
@@ -23,5 +23,6 @@ const TUIChat = {
23
23
  'Error deleting message': 'Error deleting message',
24
24
  'The message recall exceeded the time limit (default 2 minutes)': 'The message recall exceeded the time limit (default 2 minutes)',
25
25
  'Error revoke Message': 'Error revoke Message',
26
+ 'Custom message': 'Custom message',
26
27
  };
27
28
  export default TUIChat;
@@ -7,7 +7,7 @@ const TUIContact = {
7
7
  'Accept': 'Accept',
8
8
  'Refuse': 'Refuse',
9
9
  'Handled': 'Handled',
10
- 'Friend': 'Friend',
10
+ 'Friends': 'Friends',
11
11
  'Send Message': 'Send Message',
12
12
  'Signature': 'Signature',
13
13
  'New Contacts': 'New Contacts',
@@ -5,10 +5,11 @@ const TUIProfile = {
5
5
  'Gender': 'Gender',
6
6
  'Male': 'Male',
7
7
  'Female': 'Female',
8
- 'AllowType': 'AllowType',
9
- 'NeedConfirm': 'NeedConfirm',
10
- 'AllowAny': 'AllowAny',
11
- 'DenyAny': 'DenyAny',
8
+ 'AllowType': 'Friend Request',
9
+ 'NeedConfirm': 'Anyone upon Request',
10
+ 'AllowAny': 'Allow any user to add you as friend',
11
+ 'DenyAny': 'Decline friend request from any user',
12
12
  'Birthday': 'Birthday',
13
+ 'Unknow': 'Not set',
13
14
  };
14
15
  export default TUIProfile;
@@ -14,7 +14,7 @@ const resources = {
14
14
 
15
15
  i18next.use(initReactI18next).init({
16
16
  resources,
17
- lng: 'zh',
17
+ lng: 'en',
18
18
  interpolation: {
19
19
  escapeValue: false,
20
20
  },
@@ -22,6 +22,7 @@ const TUIChat = {
22
22
  'Error deleting message': '消息删除失败',
23
23
  'The message recall exceeded the time limit (default 2 minutes)': '消息已超过 2 分钟',
24
24
  'Error revoke Message': '消息撤回失败',
25
+ 'Custom message': '自定义消息',
25
26
  };
26
27
 
27
28
  export default TUIChat;
@@ -7,7 +7,7 @@ const TUIContact = {
7
7
  'Accept': '接受',
8
8
  'Refuse': '拒绝',
9
9
  'Handled': '已处理',
10
- 'Friend': '我的好友',
10
+ 'Friends': '我的好友',
11
11
  'Send Message': '发送消息',
12
12
  'Signature': '个性签名',
13
13
  'Successful application, waiting for the administrator to agree to join the group application': '等待管理员同意',
@@ -10,5 +10,6 @@ const TUIProfile = {
10
10
  'AllowAny': '同意任何用户加好友',
11
11
  'DenyAny': '拒绝任何用户加好友',
12
12
  'Birthday': '生日',
13
+ 'Unknown': '未设置',
13
14
  };
14
15
  export default TUIProfile;
package/src/server.ts ADDED
@@ -0,0 +1,44 @@
1
+ /* eslint-disable import/no-extraneous-dependencies */
2
+ import TUICore, { TUILogin, TUIConstants } from '@tencentcloud/tui-core';
3
+ import TUIChatEngine from '@tencentcloud/chat-uikit-engine';
4
+
5
+ export default class TUIChatKit {
6
+ constructor() {
7
+ TUICore.registerEvent(
8
+ TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED,
9
+ TUIConstants.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS,
10
+ this,
11
+ );
12
+ }
13
+
14
+ /**
15
+ * 监听 TUILogin.login 的成功通知
16
+ * @param { TUIInitParam } params 初始化参数
17
+ */
18
+ public onNotifyEvent(eventName: string, subKey: string) {
19
+ if (eventName === TUIConstants.TUILogin.EVENT.LOGIN_STATE_CHANGED) {
20
+ switch (subKey) {
21
+ case TUIConstants.TUILogin.EVENT_SUB_KEY.USER_LOGIN_SUCCESS:
22
+ this.login();
23
+ break;
24
+ default:
25
+ // todo
26
+ }
27
+ }
28
+ }
29
+
30
+ /**
31
+ * login 登录
32
+ */
33
+ private login() {
34
+ const {
35
+ chat, SDKAppID, userID, userSig,
36
+ } = TUILogin.getContext();
37
+ TUIChatEngine.login({
38
+ chat,
39
+ SDKAppID,
40
+ userID,
41
+ userSig,
42
+ });
43
+ }
44
+ }
@@ -0,0 +1,5 @@
1
+ import { getPlatform } from '@tencentcloud/universal-api';
2
+
3
+ export const isPC = getPlatform() === 'pc';
4
+
5
+ export const isH5 = getPlatform() === 'h5';
package/tsconfig.json CHANGED
@@ -11,3 +11,4 @@
11
11
  "src"
12
12
  ]
13
13
  }
14
+
@@ -1 +0,0 @@
1
- "use strict";module.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA4CAYAAABez76GAAAACXBIWXMAACxLAAAsSwGlPZapAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHxSURBVHgB7du9TcNAGMbx5z2MlDIjMAASIDFAmADo+IiEgcZUsAErmAo6TIOggw1YAIGo6AgbmC4F+OUMDTR5iJw4Ofz+ikiRrCj+5xLfWTnBD3F81O6j30ZFLbTyLEtz/ANSPmzvH+xIUaT+aeU4P176MVJdz7KzHgImW3ESO8E5xkLzSGUp5EjOiR5ibKT9Prb49XD+JBYxXp1unHQQKIc6CI4RqHoC+VG0vXuwgwDVFcgPIs26e0lwI0m6u4miVpqXUwBMikiOoriLILd/ubpOINB08Cfdm1WssEi1fcWmjZ8hz/1lCtLYQN+UTnEaHogvrRoeiLNARMQP8ZdlRc8Px/BuXwg6qGhgoPJS+KGychXoanwjTuYi0Ycqt3EGfsVEcRFqnNLXe1c5QQUDAymK4O8KVj2HwSNI3CoCJyKVFsnsR9qvwpMXUU0F8obAqKCMU+l+F72KlVNy/zGkjVywweZBlAUiLBBhgQgLRFggwgIRFoiwQIQFIiwQYYEIC0RYIMICERaIsECEBSIsEGGBCAtEWCDCAhEWiLBAhAUiLBBhgQgLRFggogx0h8ZSumfEQYvyP3wN3a/hUnbMzNPj/fP84vIrBAsCjHBT79AEtdH8Q93mZXZ6zY789abW4qN2awTbwqdZH638Zogt65/EmnyoEjPYwwAAAABJRU5ErkJggg==";
@@ -1,59 +0,0 @@
1
- import _tencentcloud_chat__default, { Conversation, Message } from '@tencentcloud/chat';
2
-
3
- interface BasicCreateMessageProps {
4
- needReadReceipt?: boolean;
5
- priority?: _tencentcloud_chat__default.TYPES;
6
- onProgress?: (num: number) => void;
7
- cloudCustomData?: string;
8
- receiverList?: Array<string>;
9
- }
10
- interface CreateTextMessageProps extends BasicCreateMessageProps {
11
- payload: {
12
- text: string;
13
- };
14
- }
15
- interface CreateFaceMessageProps extends BasicCreateMessageProps {
16
- payload: {
17
- index: number;
18
- data: string;
19
- };
20
- }
21
- interface CreateUploadMessageProps extends BasicCreateMessageProps {
22
- payload: {
23
- file: HTMLInputElement | File;
24
- };
25
- }
26
- interface CreateForwardMessageProps extends BasicCreateMessageProps {
27
- conversation: Conversation;
28
- message: Message;
29
- }
30
- interface CreateCustomMessageProps extends BasicCreateMessageProps {
31
- payload: {
32
- data: string;
33
- description: string;
34
- extension: string;
35
- };
36
- }
37
- interface CreateTextAtMessageProps extends BasicCreateMessageProps {
38
- payload: {
39
- text: string;
40
- atUserList: Array<string>;
41
- };
42
- }
43
- interface CreateLocationMessageProps extends BasicCreateMessageProps {
44
- payload: {
45
- description: string;
46
- longitude: number;
47
- latitude: number;
48
- };
49
- }
50
- interface CreateMergerMessageProps extends BasicCreateMessageProps {
51
- payload: {
52
- messageList: Array<Message>;
53
- title: string;
54
- abstractList: string;
55
- compatibleText: string;
56
- };
57
- }
58
-
59
- export { BasicCreateMessageProps, CreateCustomMessageProps, CreateFaceMessageProps, CreateForwardMessageProps, CreateLocationMessageProps, CreateMergerMessageProps, CreateTextAtMessageProps, CreateTextMessageProps, CreateUploadMessageProps };