@tencentcloud/chat-uikit-react 2.2.5 → 2.2.6
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 +16 -12
- package/.lintstagedrc.json +1 -1
- package/CHANGELOG.md +8 -0
- package/dist/cjs/components/Avatar/Avatar.d.ts +4 -4
- package/dist/cjs/components/Checkbox/index.d.ts +2 -2
- package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreate.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/ConversationListContainer.d.ts +2 -2
- package/dist/cjs/components/ConversationPreview/ConversationPreview.d.ts +8 -8
- package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.d.ts +2 -2
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.d.ts +3 -3
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/cjs/components/Icon/Icon.d.ts +3 -3
- package/dist/cjs/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +4 -4
- package/dist/cjs/components/Input/Input.d.ts +4 -4
- package/dist/cjs/components/Model/index.d.ts +2 -2
- package/dist/cjs/components/Plugins/index.d.ts +4 -4
- package/dist/cjs/components/Popup/index.d.ts +2 -2
- package/dist/cjs/components/Switch/Switch.d.ts +2 -2
- package/dist/cjs/components/TUIChat/TUIChat.d.ts +12 -12
- package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +5 -5
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +5 -5
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContact.d.ts +3 -3
- package/dist/cjs/components/TUIContact/TUIContact.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/TUIContactInfo.d.ts +3 -3
- package/dist/cjs/components/TUIContact/TUIContactInfo/TUIContactInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/basicInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/blockInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/friendApplication.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/groupInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactInfo/hooks/useContactInfo.js +1 -1
- package/dist/cjs/components/TUIContact/TUIContactList/TUIContactList.d.ts +3 -3
- package/dist/cjs/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/cjs/components/TUIContact/hooks/useTUIContact.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/TUIConversation/TUIConversation.d.ts +2 -2
- package/dist/cjs/components/TUIConversationList/TUIConversationList.d.ts +6 -6
- package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/cjs/components/TUIManage/TUIManage.d.ts +2 -2
- 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.d.ts +2 -2
- package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageName.js +1 -1
- package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +4 -4
- 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/MessageStatus.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/TUIMessage.d.ts +19 -19
- 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/TUIMessageInput/InputPluginsDefalut.d.ts +2 -2
- 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/TUIMessageInput.d.ts +7 -7
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.d.ts +2 -2
- package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.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/useMessageInputText.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +2 -2
- 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.d.ts +3 -3
- package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.d.ts +2 -2
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/cjs/components/Toast/index.d.ts +2 -2
- package/dist/cjs/context/ComponentContext.d.ts +12 -12
- package/dist/cjs/context/LanguageContext.js +1 -0
- package/dist/cjs/context/TUIChatActionContext.d.ts +3 -3
- package/dist/cjs/context/TUIChatStateContext.d.ts +5 -5
- package/dist/cjs/context/TUIContactContext.d.ts +4 -4
- package/dist/cjs/context/TUIConversationContext.js +1 -1
- package/dist/cjs/context/TUIMessageContext.d.ts +17 -17
- package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -4
- package/dist/cjs/context/ThemeContext.js +1 -0
- package/dist/cjs/context/UIKitContext.d.ts +25 -0
- package/dist/cjs/context/UIKitContext.js +1 -0
- package/dist/cjs/context/UIManagerContext.d.ts +46 -0
- package/dist/cjs/context/UIManagerContext.js +1 -0
- package/dist/cjs/hooks/useConversation.d.ts +2 -2
- package/dist/cjs/index.css +1 -2
- package/dist/cjs/index.d.css +908 -1440
- package/dist/cjs/index.d.ts +2 -4
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/locales/en-US/TUIGlobal.js +1 -0
- package/dist/cjs/locales/en-US/index.js +1 -1
- package/dist/cjs/locales/ja-JP/TUIGlobal.js +1 -0
- package/dist/cjs/locales/ja-JP/index.js +1 -1
- package/dist/cjs/locales/ko-KR/TUIGlobal.js +1 -0
- package/dist/cjs/locales/ko-KR/index.js +1 -1
- package/dist/cjs/locales/zh-CN/TUIGlobal.js +1 -0
- package/dist/cjs/locales/zh-CN/index.js +1 -1
- package/dist/esm/components/Avatar/Avatar.d.ts +4 -4
- package/dist/esm/components/Checkbox/index.d.ts +2 -2
- package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreate.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/ConversationListContainer.d.ts +2 -2
- package/dist/esm/components/ConversationPreview/ConversationPreview.d.ts +8 -8
- package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.d.ts +2 -2
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.d.ts +3 -3
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/esm/components/Icon/Icon.d.ts +3 -3
- package/dist/esm/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +4 -4
- package/dist/esm/components/Input/Input.d.ts +4 -4
- package/dist/esm/components/Model/index.d.ts +2 -2
- package/dist/esm/components/Plugins/index.d.ts +4 -4
- package/dist/esm/components/Popup/index.d.ts +2 -2
- package/dist/esm/components/Switch/Switch.d.ts +2 -2
- package/dist/esm/components/TUIChat/TUIChat.d.ts +12 -12
- package/dist/esm/components/TUIChat/TUIChat.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +5 -5
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +5 -5
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/esm/components/TUIContact/TUIContact.d.ts +3 -3
- package/dist/esm/components/TUIContact/TUIContact.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/TUIContactInfo.d.ts +3 -3
- package/dist/esm/components/TUIContact/TUIContactInfo/TUIContactInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/basicInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/blockInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/friendApplication.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/friendInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/groupInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactInfo/hooks/useContactInfo.js +1 -1
- package/dist/esm/components/TUIContact/TUIContactList/TUIContactList.d.ts +3 -3
- package/dist/esm/components/TUIContact/TUIContactList/TUIContactList.js +1 -1
- package/dist/esm/components/TUIContact/hooks/useTUIContact.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/TUIConversation/TUIConversation.d.ts +2 -2
- package/dist/esm/components/TUIConversationList/TUIConversationList.d.ts +6 -6
- package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/esm/components/TUIManage/TUIManage.d.ts +2 -2
- 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.d.ts +2 -2
- package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
- package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/esm/components/TUIMessage/MessageName.js +1 -1
- package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +4 -4
- 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/MessageStatus.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/TUIMessage.d.ts +19 -19
- 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/TUIMessageInput/InputPluginsDefalut.d.ts +2 -2
- 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/TUIMessageInput.d.ts +7 -7
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.d.ts +2 -2
- package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.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/useMessageInputText.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +2 -2
- 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.d.ts +3 -3
- package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfileDefault.d.ts +2 -2
- package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/esm/components/Toast/index.d.ts +2 -2
- package/dist/esm/context/ComponentContext.d.ts +12 -12
- package/dist/esm/context/LanguageContext.js +1 -0
- package/dist/esm/context/TUIChatActionContext.d.ts +3 -3
- package/dist/esm/context/TUIChatStateContext.d.ts +5 -5
- package/dist/esm/context/TUIContactContext.d.ts +4 -4
- package/dist/esm/context/TUIConversationContext.js +1 -1
- package/dist/esm/context/TUIMessageContext.d.ts +17 -17
- package/dist/esm/context/TUIMessageInputContext.d.ts +4 -4
- package/dist/esm/context/ThemeContext.js +1 -0
- package/dist/esm/context/UIKitContext.d.ts +25 -0
- package/dist/esm/context/UIKitContext.js +1 -0
- package/dist/esm/context/UIManagerContext.d.ts +46 -0
- package/dist/esm/context/UIManagerContext.js +1 -0
- package/dist/esm/hooks/useConversation.d.ts +2 -2
- package/dist/esm/index.css +1 -2
- package/dist/esm/index.d.css +908 -1440
- package/dist/esm/index.d.ts +2 -4
- package/dist/esm/index.js +1 -1
- package/dist/esm/locales/en-US/TUIGlobal.js +1 -0
- package/dist/esm/locales/en-US/index.js +1 -1
- package/dist/esm/locales/ja-JP/TUIGlobal.js +1 -0
- package/dist/esm/locales/ja-JP/index.js +1 -1
- package/dist/esm/locales/ko-KR/TUIGlobal.js +1 -0
- package/dist/esm/locales/ko-KR/index.js +1 -1
- package/dist/esm/locales/zh-CN/TUIGlobal.js +1 -0
- package/dist/esm/locales/zh-CN/index.js +1 -1
- package/package.json +4 -3
- package/src/components/ConversationCreate/ConversationCreatGroupDetail.tsx +4 -4
- package/src/components/ConversationCreate/ConversationCreate.tsx +2 -2
- package/src/components/ConversationCreate/ConversationCreateUserSelectList.tsx +3 -2
- package/src/components/ConversationPreview/ConversationPreview.tsx +21 -21
- package/src/components/ConversationPreview/ConversationPreviewContent.tsx +3 -2
- package/src/components/Plugins/styles/color.scss +2 -2
- package/src/components/TUIChat/TUIChat.tsx +4 -3
- package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +3 -3
- package/src/components/TUIContact/TUIContact.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/TUIContactInfo.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/basicInfo.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/blockInfo.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/friendApplication.tsx +2 -2
- package/src/components/TUIContact/TUIContactInfo/friendInfo.tsx +4 -3
- package/src/components/TUIContact/TUIContactInfo/groupInfo.tsx +3 -3
- package/src/components/TUIContact/TUIContactInfo/hooks/useContactInfo.tsx +2 -2
- package/src/components/TUIContact/TUIContactList/TUIContactList.tsx +5 -5
- package/src/components/TUIContact/hooks/useTUIContact.tsx +2 -2
- package/src/components/TUIContactSearch/TUIContactSearch.tsx +2 -2
- package/src/components/TUIContactSearch/hooks/useContactSearch.tsx +2 -2
- package/src/components/TUIConversationList/TUIConversationList.tsx +3 -4
- package/src/components/TUIConversationList/hooks/useConversationUpdate.tsx +2 -2
- package/src/components/TUIManage/TUIManage.tsx +3 -3
- package/src/components/TUIMessage/MessageStatus.tsx +2 -2
- package/src/components/TUIMessage/MessageText.tsx +16 -15
- package/src/components/TUIMessage/hooks/useMessageHandler.ts +2 -2
- package/src/components/TUIMessage/hooks/useMessageReply.ts +2 -2
- package/src/components/TUIMessageInput/TUIMessageInput.tsx +1 -1
- package/src/components/TUIMessageInput/hooks/useHandleForwardMessage.tsx +2 -2
- package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +2 -2
- package/src/components/TUIMessageInput/styles/color.scss +2 -2
- package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +2 -2
- package/src/components/TUIProfile/TUIProfile.tsx +3 -3
- package/src/components/TUIProfile/TUIProfileDefault.tsx +2 -2
- package/src/components/index.ts +0 -1
- package/src/context/LanguageContext.tsx +59 -0
- package/src/context/ThemeContext.tsx +61 -0
- package/src/context/UIKitContext.tsx +67 -0
- package/src/context/UIManagerContext.tsx +163 -0
- package/src/context/index.ts +3 -2
- package/src/locales/en-US/index.ts +1 -1
- package/src/locales/ja-JP/index.ts +2 -0
- package/src/locales/ko-KR/TUIGlobal.ts +2 -2
- package/src/locales/ko-KR/index.ts +2 -0
- package/src/locales/zh-CN/index.ts +2 -2
- package/src/styles/colors/_color-theme.scss +1 -1
- package/dist/cjs/components/Icon/images/chats-selected.svg.js +0 -1
- package/dist/cjs/components/Icon/images/chats.svg.js +0 -1
- package/dist/cjs/components/Icon/images/contacts-selected.svg.js +0 -1
- package/dist/cjs/components/Icon/images/contacts.svg.js +0 -1
- package/dist/cjs/components/TUIKit/TUIKit.d.ts +0 -12
- package/dist/cjs/components/TUIKit/TUIKit.js +0 -1
- package/dist/cjs/components/TUIKit/hooks/useCreateTUIKitContext.d.ts +0 -21
- package/dist/cjs/components/TUIKit/hooks/useCreateTUIKitContext.js +0 -1
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +0 -43
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +0 -1
- package/dist/cjs/context/TUIKitContext.d.ts +0 -25
- package/dist/cjs/context/TUIKitContext.js +0 -1
- package/dist/esm/components/Icon/images/chats-selected.svg.js +0 -1
- package/dist/esm/components/Icon/images/chats.svg.js +0 -1
- package/dist/esm/components/Icon/images/contacts-selected.svg.js +0 -1
- package/dist/esm/components/Icon/images/contacts.svg.js +0 -1
- package/dist/esm/components/TUIKit/TUIKit.d.ts +0 -12
- package/dist/esm/components/TUIKit/TUIKit.js +0 -1
- package/dist/esm/components/TUIKit/hooks/useCreateTUIKitContext.d.ts +0 -21
- package/dist/esm/components/TUIKit/hooks/useCreateTUIKitContext.js +0 -1
- package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +0 -43
- package/dist/esm/components/TUIKit/hooks/useTUIKit.js +0 -1
- package/dist/esm/context/TUIKitContext.d.ts +0 -25
- package/dist/esm/context/TUIKitContext.js +0 -1
- package/src/components/TUIKit/TUIKit.tsx +0 -229
- package/src/components/TUIKit/hooks/useCreateTUIKitContext.tsx +0 -48
- package/src/components/TUIKit/hooks/useTUIKit.tsx +0 -99
- package/src/components/TUIKit/index.ts +0 -3
- package/src/components/TUIKit/styles/h5.scss +0 -34
- package/src/components/TUIKit/styles/index.scss +0 -132
- package/src/context/TUIKitContext.tsx +0 -44
|
@@ -5,7 +5,7 @@ import './styles/index.scss';
|
|
|
5
5
|
import { Icon, IconTypes } from '../Icon';
|
|
6
6
|
import { Avatar, defaultGroupAvatarWork, defaultUserAvatar } from '../Avatar';
|
|
7
7
|
import { Switch } from '../Switch';
|
|
8
|
-
import {
|
|
8
|
+
import { useUIKit, useUIManager } from '../../context';
|
|
9
9
|
import { isH5, isPC } from '../../utils/env';
|
|
10
10
|
import { getMessageProfile } from '../ConversationPreview/utils';
|
|
11
11
|
import { useConversationUpdate } from '../TUIConversationList/hooks/useConversationUpdate';
|
|
@@ -19,13 +19,13 @@ function UnMemoizedTUIManage<T>(
|
|
|
19
19
|
const [profile, setProfile] = useState<any>();
|
|
20
20
|
const [isPinned, setIsPinned] = useState<boolean>(false);
|
|
21
21
|
const [forceUpdateCount, setForceUpdateCount] = useState(0);
|
|
22
|
+
const { chat } = useUIKit('TUIManage');
|
|
22
23
|
const {
|
|
23
24
|
conversation: activeConversation,
|
|
24
25
|
setActiveConversation,
|
|
25
|
-
chat,
|
|
26
26
|
TUIManageShow,
|
|
27
27
|
setTUIManageShow,
|
|
28
|
-
} =
|
|
28
|
+
} = useUIManager('TUIManage');
|
|
29
29
|
useConversationUpdate(undefined, () => {
|
|
30
30
|
setForceUpdateCount((count) => count + 1);
|
|
31
31
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { Message } from '@tencentcloud/chat';
|
|
3
|
-
import { useTUIMessageContext,
|
|
3
|
+
import { useTUIMessageContext, useUIKit } from '../../context';
|
|
4
4
|
import { getTimeStamp } from '../untils';
|
|
5
5
|
|
|
6
6
|
export interface MessageContextProps {
|
|
@@ -13,7 +13,7 @@ function MessageStatustWithContext <T extends MessageContextProps>(
|
|
|
13
13
|
const {
|
|
14
14
|
message,
|
|
15
15
|
} = props;
|
|
16
|
-
const { language } =
|
|
16
|
+
const { language } = useUIKit('TUIChat');
|
|
17
17
|
const {
|
|
18
18
|
isShowTime,
|
|
19
19
|
} = useTUIMessageContext('MessageStatustWithContext');
|
|
@@ -3,21 +3,21 @@ import TencentCloudChat, { Message } from '@tencentcloud/chat';
|
|
|
3
3
|
import { UnknowPorps, useTUIChatStateContext, useComponentContext } from '../../context';
|
|
4
4
|
|
|
5
5
|
export interface MessageContextProps {
|
|
6
|
-
context?: UnknowPorps
|
|
7
|
-
message?: Message
|
|
8
|
-
className?: string
|
|
6
|
+
context?: UnknowPorps;
|
|
7
|
+
message?: Message;
|
|
8
|
+
className?: string;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
function MessageTextWithContext <
|
|
12
|
-
props: PropsWithChildren<T>,
|
|
13
|
-
):React.ReactElement {
|
|
11
|
+
function MessageTextWithContext(props: PropsWithChildren<MessageContextProps>) {
|
|
14
12
|
const {
|
|
15
13
|
context,
|
|
16
14
|
message,
|
|
17
15
|
children,
|
|
18
16
|
} = props;
|
|
17
|
+
|
|
19
18
|
const { MessageTextPlugins } = useComponentContext('MessageText');
|
|
20
19
|
const { firstSendMessage } = useTUIChatStateContext('MessageText');
|
|
20
|
+
|
|
21
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' : ''}`}>
|
|
@@ -25,14 +25,15 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
25
25
|
</div>
|
|
26
26
|
);
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
|
|
29
|
+
function urlToLink(text: string) {
|
|
29
30
|
if (!text) {
|
|
30
31
|
return text;
|
|
31
32
|
}
|
|
32
|
-
// eslint-disable-next-line no-useless-escape
|
|
33
33
|
const urlRegex = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
|
|
34
|
-
return text.replace(urlRegex,
|
|
35
|
-
}
|
|
34
|
+
return text.replace(urlRegex, website => `<a class='website' href='${website}' target='_blank'>${website}</a>`);
|
|
35
|
+
}
|
|
36
|
+
|
|
36
37
|
return (
|
|
37
38
|
<div className={`bubble message-text bubble-${message?.flow} ${message?.conversationType === TencentCloudChat.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
38
39
|
<div className="message-text-content">
|
|
@@ -43,8 +44,9 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
43
44
|
<p
|
|
44
45
|
className="message-text-content-p"
|
|
45
46
|
key={item.src + key}
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
>
|
|
48
|
+
{item.text}
|
|
49
|
+
</p>
|
|
48
50
|
);
|
|
49
51
|
}
|
|
50
52
|
return <img className="text-img" key={item.src + key} src={item.src} alt="" />;
|
|
@@ -55,10 +57,9 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
55
57
|
);
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
const MemoizedMessageText = React.memo(MessageTextWithContext) as
|
|
59
|
-
typeof MessageTextWithContext;
|
|
60
|
+
const MemoizedMessageText = React.memo(MessageTextWithContext) as typeof MessageTextWithContext;
|
|
60
61
|
|
|
61
|
-
export function MessageText(props:MessageContextProps)
|
|
62
|
+
export function MessageText(props: MessageContextProps) {
|
|
62
63
|
return (
|
|
63
64
|
<MemoizedMessageText {...props} />
|
|
64
65
|
);
|
|
@@ -4,7 +4,7 @@ import { Message } from '@tencentcloud/chat';
|
|
|
4
4
|
import { TUIStore } from '@tencentcloud/chat-uikit-engine';
|
|
5
5
|
import { CONSTANT_DISPATCH_TYPE, MESSAGE_FLOW, MESSAGE_OPERATE } from '../../../constants';
|
|
6
6
|
import { enableSampleTaskStatus } from '../../untils';
|
|
7
|
-
import { useTUIChatActionContext,
|
|
7
|
+
import { useTUIChatActionContext, useUIKit } from '../../../context';
|
|
8
8
|
import { Toast } from '../../Toast';
|
|
9
9
|
|
|
10
10
|
interface MessageHandlerProps {
|
|
@@ -24,7 +24,7 @@ export const useMessageHandler = (props: MessageHandlerProps) => {
|
|
|
24
24
|
revokeMessage,
|
|
25
25
|
} = useTUIChatActionContext('useDeleteHandler');
|
|
26
26
|
const { t } = useTranslation();
|
|
27
|
-
const { chat } =
|
|
27
|
+
const { chat } = useUIKit('useDeleteHandler');
|
|
28
28
|
|
|
29
29
|
const handleDelMessage = useCallback(async (event?: any) => {
|
|
30
30
|
event.preventDefault();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useLayoutEffect, useState } from 'react';
|
|
2
2
|
import TencentCloudChat, { Message } from '@tencentcloud/chat';
|
|
3
|
-
import { useTUIChatStateContext,
|
|
3
|
+
import { useTUIChatStateContext, useUIKit } from '../../../context';
|
|
4
4
|
import { JSONStringToParse } from '../../untils';
|
|
5
5
|
|
|
6
6
|
interface messageContextParams {
|
|
@@ -26,7 +26,7 @@ export const useMessageReply = <T extends messageContextParams>(params:T) => {
|
|
|
26
26
|
const [replyMessage, setReplyMessage] = useState(null);
|
|
27
27
|
const [messageID, setMessageID] = useState('');
|
|
28
28
|
|
|
29
|
-
const { chat } =
|
|
29
|
+
const { chat } = useUIKit('TUIChat');
|
|
30
30
|
const { messageList } = useTUIChatStateContext('useMessageReply');
|
|
31
31
|
|
|
32
32
|
useLayoutEffect(() => {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from '@tencentcloud/chat-uikit-engine';
|
|
6
6
|
import { MESSAGE_OPERATE } from '../../../constants';
|
|
7
7
|
import {
|
|
8
|
-
useTUIChatStateContext,
|
|
8
|
+
useTUIChatStateContext, useUIKit,
|
|
9
9
|
} from '../../../context';
|
|
10
10
|
|
|
11
11
|
export function useHandleForwardMessage(msg?:Message) {
|
|
@@ -14,7 +14,7 @@ export function useHandleForwardMessage(msg?:Message) {
|
|
|
14
14
|
} = useTUIChatStateContext('TUIMessageInputDefault');
|
|
15
15
|
|
|
16
16
|
const [conversationList, setConversationList] = useState([]);
|
|
17
|
-
const { chat } =
|
|
17
|
+
const { chat } = useUIKit('TUIChat');
|
|
18
18
|
|
|
19
19
|
const message = msg || (operateData && operateData[MESSAGE_OPERATE.FORWARD]);
|
|
20
20
|
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { CONSTANT_DISPATCH_TYPE, MESSAGE_OPERATE, MESSAGE_TYPE_NAME } from '../../../constants';
|
|
10
10
|
import {
|
|
11
11
|
useTUIChatActionContext,
|
|
12
|
-
|
|
12
|
+
useUIKit,
|
|
13
13
|
} from '../../../context';
|
|
14
14
|
import { enableSampleTaskStatus } from '../../untils';
|
|
15
15
|
import { formatEmojiString } from '../../TUIMessage/utils/emojiMap';
|
|
@@ -33,7 +33,7 @@ export const useMessageInputText = (props:useMessageInputTextProps) => {
|
|
|
33
33
|
sendUploadMessage,
|
|
34
34
|
} = props;
|
|
35
35
|
|
|
36
|
-
const { chat } =
|
|
36
|
+
const { chat } = useUIKit('useMessageInputText');
|
|
37
37
|
const { operateMessage, setFirstSendMessage } = useTUIChatActionContext('TUIMessageInput');
|
|
38
38
|
|
|
39
39
|
const { cloudCustomData } = useHandleQuoteMessage();
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
&-box {
|
|
24
24
|
border-radius: 16px;
|
|
25
25
|
|
|
26
|
-
[data-
|
|
26
|
+
[data-uikit-theme="light"] & {
|
|
27
27
|
background-color: var(--chat-theme-light-bg-primary);
|
|
28
28
|
box-shadow: var(--chat-theme-light-box-shadow-1);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
[data-
|
|
31
|
+
[data-uikit-theme="dark"] & {
|
|
32
32
|
background-color: var(--chat-theme-dark-bg-3);
|
|
33
33
|
box-shadow: var(--chat-theme-dark-box-shadow-1);
|
|
34
34
|
}
|
|
@@ -2,7 +2,7 @@ import React, {
|
|
|
2
2
|
PropsWithChildren, useMemo,
|
|
3
3
|
} from 'react';
|
|
4
4
|
import { Message } from '@tencentcloud/chat';
|
|
5
|
-
import { UnknowPorps,
|
|
5
|
+
import { UnknowPorps, useUIKit } from '../../../context';
|
|
6
6
|
import { TUIMessageProps } from '../../TUIMessage/TUIMessage';
|
|
7
7
|
import { getTimeStamp } from '../../untils';
|
|
8
8
|
|
|
@@ -20,7 +20,7 @@ function useMessageListElement <T extends MessageListElementProps>(
|
|
|
20
20
|
TUIMessage,
|
|
21
21
|
intervalsTimer,
|
|
22
22
|
} = props;
|
|
23
|
-
const { language } =
|
|
23
|
+
const { language } = useUIKit('TUIConversation');
|
|
24
24
|
|
|
25
25
|
return useMemo(() => enrichedMessageList?.map((item: Message, index:number) => {
|
|
26
26
|
const key = `${item.ID}-${index}`;
|
|
@@ -4,7 +4,7 @@ import { Profile } from '../Profile';
|
|
|
4
4
|
import './styles/index.scss';
|
|
5
5
|
import { useMyProfile } from './hooks';
|
|
6
6
|
import { TUIProfileDefault } from './TUIProfileDefault';
|
|
7
|
-
import {
|
|
7
|
+
import { useUIManager } from '../../context';
|
|
8
8
|
|
|
9
9
|
interface TUIProfileProps {
|
|
10
10
|
className?: string,
|
|
@@ -21,13 +21,13 @@ function UnMemoizedTUIProfile<T extends TUIProfileProps>(
|
|
|
21
21
|
|
|
22
22
|
const { myProfile, updateMyProfile } = useMyProfile();
|
|
23
23
|
|
|
24
|
-
const { setTUIProfileShow, TUIProfileShow } =
|
|
24
|
+
const { setTUIProfileShow, TUIProfileShow } = useUIManager('TUIProfile');
|
|
25
25
|
|
|
26
26
|
const TUIProfileUIComponent = PropTUIProfile || TUIProfileDefault;
|
|
27
27
|
|
|
28
28
|
return (
|
|
29
29
|
<>
|
|
30
|
-
{/* //eslint-disable-next-line
|
|
30
|
+
{/* //eslint-disable-next-line
|
|
31
31
|
@ts-ignore */}
|
|
32
32
|
<Profile
|
|
33
33
|
profile={myProfile}
|
|
@@ -4,7 +4,7 @@ import DatePicker from 'react-date-picker';
|
|
|
4
4
|
import TencentCloudChat, { Profile } from '@tencentcloud/chat';
|
|
5
5
|
import { UpdateMyProfileParams } from "@tencentcloud/chat-uikit-engine";
|
|
6
6
|
import { isH5 } from '../../utils/env';
|
|
7
|
-
import {
|
|
7
|
+
import { useUIManager } from '../../context';
|
|
8
8
|
|
|
9
9
|
import { Avatar } from '../Avatar';
|
|
10
10
|
import { DivWithEdit } from '../DivWithEdit';
|
|
@@ -73,7 +73,7 @@ function TUIProfileDefaultWithContext<T extends TUIProfileDefaultProps>(
|
|
|
73
73
|
} = props;
|
|
74
74
|
|
|
75
75
|
const { t } = useTranslation();
|
|
76
|
-
const { setTUIProfileShow } =
|
|
76
|
+
const { setTUIProfileShow } = useUIManager('TUIProfileDefault');
|
|
77
77
|
|
|
78
78
|
const [isEditName, setIsEditName] = useState('');
|
|
79
79
|
|
package/src/components/index.ts
CHANGED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useState,
|
|
3
|
+
useContext,
|
|
4
|
+
createContext,
|
|
5
|
+
useLayoutEffect,
|
|
6
|
+
PropsWithChildren,
|
|
7
|
+
} from 'react';
|
|
8
|
+
import { useTranslation } from 'react-i18next';
|
|
9
|
+
|
|
10
|
+
interface LanguageContextType {
|
|
11
|
+
language: string;
|
|
12
|
+
setLanguage: React.Dispatch<React.SetStateAction<string>>;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface LanguageProviderProps {
|
|
16
|
+
language: string;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const LanguageContext = createContext<LanguageContextType | null>(null);
|
|
20
|
+
|
|
21
|
+
function LanguageProvider(props: PropsWithChildren<Partial<LanguageProviderProps>>) {
|
|
22
|
+
const {
|
|
23
|
+
language: _language = 'en-US',
|
|
24
|
+
children,
|
|
25
|
+
} = props;
|
|
26
|
+
|
|
27
|
+
const { i18n } = useTranslation();
|
|
28
|
+
|
|
29
|
+
const [language, setLanguage] = useState(_language);
|
|
30
|
+
|
|
31
|
+
useLayoutEffect(() => {
|
|
32
|
+
i18n.changeLanguage(language);
|
|
33
|
+
}, [language, i18n]);
|
|
34
|
+
|
|
35
|
+
useLayoutEffect(() => {
|
|
36
|
+
document.documentElement.lang = language;
|
|
37
|
+
}, [language]);
|
|
38
|
+
|
|
39
|
+
const value = {
|
|
40
|
+
language,
|
|
41
|
+
setLanguage,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<LanguageContext.Provider value={value}>
|
|
46
|
+
{children}
|
|
47
|
+
</LanguageContext.Provider>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function useLanguage() {
|
|
52
|
+
const context = useContext(LanguageContext);
|
|
53
|
+
if (!context) {
|
|
54
|
+
throw new Error('useLanguage must be used within a LanguageProvider');
|
|
55
|
+
}
|
|
56
|
+
return context;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export { LanguageProvider, useLanguage, LanguageContextType };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useState,
|
|
3
|
+
useContext,
|
|
4
|
+
createContext,
|
|
5
|
+
useLayoutEffect,
|
|
6
|
+
PropsWithChildren,
|
|
7
|
+
} from 'react';
|
|
8
|
+
|
|
9
|
+
import '../styles/index.scss';
|
|
10
|
+
|
|
11
|
+
interface ThemeContextType {
|
|
12
|
+
theme: string;
|
|
13
|
+
colors: Record<string, string> | undefined;
|
|
14
|
+
setTheme: (theme: string) => void;
|
|
15
|
+
setColors: (colors: Record<string, string>) => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface ThemeProviderProps {
|
|
19
|
+
theme: string;
|
|
20
|
+
colors: Record<string, string> | undefined;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const ThemeContext = createContext<ThemeContextType | null>(null);
|
|
24
|
+
|
|
25
|
+
function ThemeProvider(props: PropsWithChildren<Partial<ThemeProviderProps>>) {
|
|
26
|
+
const {
|
|
27
|
+
theme: _theme = 'light',
|
|
28
|
+
colors: _colors,
|
|
29
|
+
children,
|
|
30
|
+
} = props;
|
|
31
|
+
|
|
32
|
+
const [theme, setTheme] = useState(_theme);
|
|
33
|
+
const [colors, setColors] = useState(_colors);
|
|
34
|
+
|
|
35
|
+
useLayoutEffect(() => {
|
|
36
|
+
document.documentElement.dataset.uikitTheme = theme;
|
|
37
|
+
}, [theme]);
|
|
38
|
+
|
|
39
|
+
const value = {
|
|
40
|
+
theme,
|
|
41
|
+
colors,
|
|
42
|
+
setTheme,
|
|
43
|
+
setColors,
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
return (
|
|
47
|
+
<ThemeContext.Provider value={value}>
|
|
48
|
+
{children}
|
|
49
|
+
</ThemeContext.Provider>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function useTheme() {
|
|
54
|
+
const context = useContext(ThemeContext);
|
|
55
|
+
if (!context) {
|
|
56
|
+
throw new Error('useTheme must be used within a ThemeProvider');
|
|
57
|
+
}
|
|
58
|
+
return context;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export { ThemeProvider, useTheme, ThemeContextType };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { PropsWithChildren, useContext, createContext } from 'react';
|
|
2
|
+
import type {
|
|
3
|
+
ChatSDK,
|
|
4
|
+
Conversation,
|
|
5
|
+
} from '@tencentcloud/chat';
|
|
6
|
+
import { TUILogin } from '@tencentcloud/tui-core';
|
|
7
|
+
import { ThemeProvider, useTheme } from './ThemeContext';
|
|
8
|
+
import { LanguageProvider, useLanguage } from './LanguageContext';
|
|
9
|
+
import { UIManagerProvider } from './UIManagerContext';
|
|
10
|
+
|
|
11
|
+
interface UIKitContextType {
|
|
12
|
+
chat: ChatSDK;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
interface UIKitProviderProps {
|
|
16
|
+
chat?: ChatSDK;
|
|
17
|
+
language?: string;
|
|
18
|
+
theme?: string;
|
|
19
|
+
colors?: Record<string, string>;
|
|
20
|
+
customClasses?: string;
|
|
21
|
+
activeConversation?: Conversation;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const UIKitContext = createContext<UIKitContextType | null>(null);
|
|
25
|
+
|
|
26
|
+
function UIKitProvider(props: PropsWithChildren<UIKitProviderProps>) {
|
|
27
|
+
const {
|
|
28
|
+
chat = TUILogin.getContext().chat,
|
|
29
|
+
language,
|
|
30
|
+
theme,
|
|
31
|
+
colors,
|
|
32
|
+
customClasses,
|
|
33
|
+
activeConversation,
|
|
34
|
+
children,
|
|
35
|
+
} = props;
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<LanguageProvider language={language}>
|
|
39
|
+
<ThemeProvider theme={theme} colors={colors}>
|
|
40
|
+
<UIKitContext.Provider value={{ chat }}>
|
|
41
|
+
<UIManagerProvider activeConversation={activeConversation} customClasses={customClasses}>
|
|
42
|
+
{children}
|
|
43
|
+
</UIManagerProvider>
|
|
44
|
+
</UIKitContext.Provider>
|
|
45
|
+
</ThemeProvider>
|
|
46
|
+
</LanguageProvider>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const useUIKit = (componentName?: string) => {
|
|
51
|
+
const languageContext = useLanguage();
|
|
52
|
+
const themeContext = useTheme();
|
|
53
|
+
const uikitContext = useContext(UIKitContext);
|
|
54
|
+
if (!uikitContext) {
|
|
55
|
+
throw new Error('useUIKit must be used within a UIKitProvider');
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
...themeContext,
|
|
59
|
+
...languageContext,
|
|
60
|
+
...uikitContext,
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
UIKitProvider,
|
|
66
|
+
useUIKit,
|
|
67
|
+
};
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
useState,
|
|
3
|
+
useContext,
|
|
4
|
+
useCallback,
|
|
5
|
+
PropsWithChildren,
|
|
6
|
+
useEffect,
|
|
7
|
+
} from 'react';
|
|
8
|
+
import type {
|
|
9
|
+
Conversation,
|
|
10
|
+
Profile,
|
|
11
|
+
Friend,
|
|
12
|
+
FriendApplication,
|
|
13
|
+
} from '@tencentcloud/chat';
|
|
14
|
+
import {
|
|
15
|
+
TUIStore,
|
|
16
|
+
StoreName,
|
|
17
|
+
type IConversationModel,
|
|
18
|
+
} from '@tencentcloud/chat-uikit-engine';
|
|
19
|
+
import type { IGroupModel } from '@tencentcloud/chat-uikit-engine';
|
|
20
|
+
import { useUIKit } from './UIKitContext';
|
|
21
|
+
|
|
22
|
+
type blockData = {
|
|
23
|
+
type: 'block';
|
|
24
|
+
data: Profile;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
type friendData = {
|
|
28
|
+
type: 'friend';
|
|
29
|
+
data: Friend;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
type friendApplicationData = {
|
|
33
|
+
type: 'friendApplication';
|
|
34
|
+
data: FriendApplication;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
type addFriendData = {
|
|
38
|
+
type: 'addFriend';
|
|
39
|
+
data: Profile;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
type GroupData = {
|
|
43
|
+
type: 'group';
|
|
44
|
+
data: IGroupModel;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
type UseContactParams =
|
|
48
|
+
| blockData
|
|
49
|
+
| friendData
|
|
50
|
+
| friendApplicationData
|
|
51
|
+
| addFriendData
|
|
52
|
+
| GroupData
|
|
53
|
+
| undefined;
|
|
54
|
+
|
|
55
|
+
type UIManagerContextType = {
|
|
56
|
+
conversation?: Conversation;
|
|
57
|
+
contactData?: UseContactParams;
|
|
58
|
+
customClasses?: unknown;
|
|
59
|
+
myProfile?: Profile;
|
|
60
|
+
TUIManageShow?: boolean;
|
|
61
|
+
TUIProfileShow?: boolean;
|
|
62
|
+
setTUIManageShow: React.Dispatch<React.SetStateAction<boolean>>;
|
|
63
|
+
setTUIProfileShow: React.Dispatch<React.SetStateAction<boolean>>;
|
|
64
|
+
setActiveConversation: (conversation?: Conversation) => void;
|
|
65
|
+
setActiveContact: (useContactParams?: UseContactParams) => void;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
type UIManagerProviderProps = {
|
|
69
|
+
customClasses: string;
|
|
70
|
+
activeConversation: Conversation;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const UIManagerContext = React.createContext<UIManagerContextType | null>(null);
|
|
74
|
+
|
|
75
|
+
function UIManagerProvider(props: PropsWithChildren<Partial<UIManagerProviderProps>>) {
|
|
76
|
+
const {
|
|
77
|
+
customClasses,
|
|
78
|
+
activeConversation,
|
|
79
|
+
children,
|
|
80
|
+
} = props;
|
|
81
|
+
|
|
82
|
+
const { chat } = useUIKit();
|
|
83
|
+
|
|
84
|
+
const [conversation, setConversation] = useState<Conversation | undefined>(activeConversation);
|
|
85
|
+
const [contactData, setContactData] = useState<UseContactParams>();
|
|
86
|
+
const [myProfile, setMyProfile] = useState<Profile>();
|
|
87
|
+
const [TUIManageShow, setTUIManageShow] = useState<boolean>(false);
|
|
88
|
+
const [TUIProfileShow, setTUIProfileShow] = useState<boolean>(false);
|
|
89
|
+
|
|
90
|
+
useEffect(() => {
|
|
91
|
+
TUIStore.watch(StoreName.USER, {
|
|
92
|
+
userProfile: onMyProfileUpdated,
|
|
93
|
+
});
|
|
94
|
+
TUIStore.watch(StoreName.CONV, {
|
|
95
|
+
currentConversation: onCurrentConversationUpdated,
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
return () => {
|
|
99
|
+
TUIStore.unwatch(StoreName.USER, {
|
|
100
|
+
userProfile: onMyProfileUpdated,
|
|
101
|
+
});
|
|
102
|
+
TUIStore.unwatch(StoreName.CONV, {
|
|
103
|
+
currentConversation: onCurrentConversationUpdated,
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
}, []);
|
|
107
|
+
|
|
108
|
+
const setActiveConversation = useCallback((_activeConversation?: Conversation) => {
|
|
109
|
+
if (_activeConversation) {
|
|
110
|
+
chat?.setMessageRead({ conversationID: _activeConversation.conversationID });
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (_activeConversation?.conversationID !== conversation?.conversationID) {
|
|
114
|
+
setTUIManageShow(false);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
setConversation(_activeConversation);
|
|
118
|
+
}, []);
|
|
119
|
+
|
|
120
|
+
function onMyProfileUpdated(userProfileData: unknown) {
|
|
121
|
+
setMyProfile(userProfileData as Profile);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function onCurrentConversationUpdated(conversationModel: IConversationModel) {
|
|
125
|
+
setActiveConversation(conversationModel?.getConversation());
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function setActiveContact(actionContactData?: UseContactParams) {
|
|
129
|
+
setContactData(actionContactData);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const value = {
|
|
133
|
+
conversation,
|
|
134
|
+
contactData,
|
|
135
|
+
setActiveConversation,
|
|
136
|
+
myProfile,
|
|
137
|
+
TUIManageShow,
|
|
138
|
+
setTUIManageShow,
|
|
139
|
+
TUIProfileShow,
|
|
140
|
+
setTUIProfileShow,
|
|
141
|
+
setActiveContact,
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
return (
|
|
145
|
+
<UIManagerContext.Provider value={value}>
|
|
146
|
+
{children}
|
|
147
|
+
</UIManagerContext.Provider>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const useUIManager = (componentName?: string) => {
|
|
152
|
+
const context = useContext(UIManagerContext);
|
|
153
|
+
if (!context) {
|
|
154
|
+
throw new Error('useUIManager must be used within a UIManagerProvider');
|
|
155
|
+
}
|
|
156
|
+
return context;
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export {
|
|
160
|
+
UIManagerProvider,
|
|
161
|
+
useUIManager,
|
|
162
|
+
UIManagerContextType,
|
|
163
|
+
};
|
package/src/context/index.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './UIKitContext';
|
|
2
|
+
export * from './UIManagerContext';
|
|
2
3
|
export * from './TUIChatStateContext';
|
|
3
4
|
export * from './TUIChatActionContext';
|
|
4
5
|
export * from './TUIMessageContext';
|
|
5
6
|
export * from './ComponentContext';
|
|
6
7
|
export * from './TUIMessageInputContext';
|
|
7
|
-
export * from './TUIContactContext';
|
|
8
|
+
export * from './TUIContactContext';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import TUIGlobal from './TUIGlobal';
|
|
1
2
|
import TUIChat from './TUIChat';
|
|
2
3
|
import TUIConversation from './TUIConversation';
|
|
3
4
|
import TUIContact from './TUIContact';
|
|
4
5
|
import TUIProfile from './TUIProfile';
|
|
5
|
-
import TUIGlobal from './TUIProfile';
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
export const message = {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import TUIGlobal from './TUIGlobal';
|
|
1
2
|
import TUIChat from './TUIChat';
|
|
2
3
|
import TUIConversation from './TUIConversation';
|
|
3
4
|
import TUIContact from './TUIContact';
|
|
4
5
|
import TUIProfile from './TUIProfile';
|
|
5
6
|
|
|
6
7
|
export const message = {
|
|
8
|
+
TUIGlobal,
|
|
7
9
|
TUIChat,
|
|
8
10
|
TUIConversation,
|
|
9
11
|
TUIContact,
|