@droppii-org/chat-sdk 0.3.7 → 0.4.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/dist/components/canned-response/CannedResponseBody.js +1 -1
- package/dist/components/canned-response/CannedResponseFooter.js +1 -1
- package/dist/components/canned-response/CannedResponseHeader.js +1 -1
- package/dist/components/canned-response/index.js +1 -1
- package/dist/components/canned-response/team/TeamItem.js +1 -1
- package/dist/components/common/ConfirmModal.d.ts.map +1 -1
- package/dist/components/common/ConfirmModal.js +1 -1
- package/dist/components/common/InfoModal.d.ts +11 -0
- package/dist/components/common/InfoModal.d.ts.map +1 -0
- package/dist/components/common/InfoModal.js +13 -0
- package/dist/components/compose/ComposeNewMessageModal.d.ts.map +1 -1
- package/dist/components/compose/ComposeNewMessageModal.js +5 -7
- package/dist/components/conversation/ConversationByGroupItem.d.ts.map +1 -1
- package/dist/components/conversation/ConversationByGroupItem.js +5 -8
- package/dist/components/conversation/ConversationBySessionItem.js +5 -8
- package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
- package/dist/components/conversation/DeskConversationList.js +1 -1
- package/dist/components/conversation/MentionIndicatorIcon.d.ts +7 -0
- package/dist/components/conversation/MentionIndicatorIcon.d.ts.map +1 -0
- package/dist/components/conversation/MentionIndicatorIcon.js +17 -0
- package/dist/components/conversation/SwipeActionButton.d.ts.map +1 -1
- package/dist/components/conversation/SwipeActionButton.js +1 -1
- package/dist/components/conversation/SwipeableRow.d.ts.map +1 -1
- package/dist/components/conversation/SwipeableRow.js +1 -1
- package/dist/components/conversation/ThreadCard.d.ts +2 -1
- package/dist/components/conversation/ThreadCard.d.ts.map +1 -1
- package/dist/components/conversation/ThreadCard.js +4 -4
- package/dist/components/conversation-detail/ConversationDetailHeader.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationDetailHeader.js +2 -2
- package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationDetailInput.js +5 -1
- package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMessageList.js +1 -1
- package/dist/components/conversation-detail/ConversationMoreOptionItem.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMoreOptionItem.js +1 -1
- package/dist/components/conversation-detail/ConversationMoreOptionPanel.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMoreOptionPanel.js +1 -1
- package/dist/components/conversation-detail/PinLimitModal.d.ts.map +1 -1
- package/dist/components/conversation-detail/PinLimitModal.js +1 -1
- package/dist/components/conversation-detail/PinnedMessageBar.d.ts.map +1 -1
- package/dist/components/conversation-detail/PinnedMessageBar.js +8 -4
- package/dist/components/conversation-detail/PinnedMessageItem.d.ts.map +1 -1
- package/dist/components/conversation-detail/PinnedMessageItem.js +1 -1
- package/dist/components/conversation-detail/PinnedMessagesPanel.d.ts.map +1 -1
- package/dist/components/conversation-detail/PinnedMessagesPanel.js +1 -1
- package/dist/components/conversation-detail/ThreadProfilePanel.d.ts.map +1 -1
- package/dist/components/conversation-detail/ThreadProfilePanel.js +1 -1
- package/dist/components/conversation-detail/bot/BotButtonMessage.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotButtonMessage.js +1 -1
- package/dist/components/conversation-detail/bot/BotInactiveNotice.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotInactiveNotice.js +1 -1
- package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
- package/dist/components/conversation-detail/bot/BotStartButton.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotStartButton.js +1 -1
- package/dist/components/conversation-detail/bot/BotSuggest.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotSuggest.js +2 -2
- package/dist/components/conversation-detail/bot/CsSessionConfirmModal.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/CsSessionConfirmModal.js +1 -1
- package/dist/components/conversation-inbox/ConversationInboxHeader.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxHeader.js +1 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.js +2 -1
- package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.js +5 -7
- package/dist/components/conversation-inbox/ConversationInboxTitle.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxTitle.js +1 -1
- package/dist/components/conversation-inbox/ConversationPeerAvatar.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationPeerAvatar.js +1 -1
- package/dist/components/conversation-inbox/MuteConversationConfirmModal.d.ts.map +1 -1
- package/dist/components/conversation-inbox/MuteConversationConfirmModal.js +1 -1
- package/dist/components/group/AddMemberModal.d.ts.map +1 -1
- package/dist/components/group/AddMemberModal.js +1 -1
- package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
- package/dist/components/group/CreateGroupForm.js +1 -3
- package/dist/components/group/GroupMemberPicker.js +1 -1
- package/dist/components/group/MemberPermissionPanel.js +1 -1
- package/dist/components/icon/index.d.ts.map +1 -1
- package/dist/components/icon/index.js +1 -1
- package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
- package/dist/components/media-collection/FileCollection.js +1 -1
- package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
- package/dist/components/media-collection/ImageCollection.js +1 -1
- package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
- package/dist/components/media-collection/LinkCollection.js +2 -2
- package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
- package/dist/components/media-collection/VideoCollection.js +1 -1
- package/dist/components/media-collection/index.js +1 -1
- package/dist/components/media-resources/FileResourceList.d.ts.map +1 -1
- package/dist/components/media-resources/FileResourceList.js +1 -1
- package/dist/components/media-resources/ImageResourceGrid.d.ts.map +1 -1
- package/dist/components/media-resources/ImageResourceGrid.js +1 -1
- package/dist/components/media-resources/LinkResourceItem.d.ts.map +1 -1
- package/dist/components/media-resources/LinkResourceItem.js +1 -1
- package/dist/components/media-resources/LinkResourceList.d.ts.map +1 -1
- package/dist/components/media-resources/LinkResourceList.js +1 -1
- package/dist/components/media-resources/MediaEntryCard.d.ts.map +1 -1
- package/dist/components/media-resources/MediaEntryCard.js +1 -1
- package/dist/components/media-resources/MediaResourcePanel.d.ts.map +1 -1
- package/dist/components/media-resources/MediaResourcePanel.js +1 -1
- package/dist/components/media-resources/MediaResourceTabBar.d.ts.map +1 -1
- package/dist/components/media-resources/MediaResourceTabBar.js +1 -1
- package/dist/components/media-resources/MediaResourceTabs.js +1 -1
- package/dist/components/media-resources/ResourceEmptyState.d.ts.map +1 -1
- package/dist/components/media-resources/ResourceEmptyState.js +1 -1
- package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
- package/dist/components/media-resources/ResourceScrollContainer.js +1 -1
- package/dist/components/media-resources/VideoResourceGrid.d.ts.map +1 -1
- package/dist/components/media-resources/VideoResourceGrid.js +1 -1
- package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
- package/dist/components/message/GroupMembersDrawer.js +4 -5
- package/dist/components/message/MessageHeader.d.ts.map +1 -1
- package/dist/components/message/MessageHeader.js +3 -2
- package/dist/components/message/MessageInfiniteScroll.d.ts.map +1 -1
- package/dist/components/message/MessageInfiniteScroll.js +1 -1
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +22 -12
- package/dist/components/message/SelectSession.js +1 -1
- package/dist/components/message/UnassignedSessionFooter.d.ts.map +1 -1
- package/dist/components/message/UnassignedSessionFooter.js +1 -1
- package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
- package/dist/components/message/footer/ActionBar.js +4 -1
- package/dist/components/message/footer/ComposerEditor.js +1 -1
- package/dist/components/message/footer/ComposerTabs.d.ts.map +1 -1
- package/dist/components/message/footer/ComposerTabs.js +1 -1
- package/dist/components/message/footer/EmojiPicker.js +1 -1
- package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
- package/dist/components/message/footer/EnterHandler.js +10 -1
- package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
- package/dist/components/message/footer/FilePreview.js +4 -4
- package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
- package/dist/components/message/footer/LinkInputPreview.js +1 -1
- package/dist/components/message/footer/MediaActions.js +1 -1
- package/dist/components/message/footer/SessionClosedModal.d.ts.map +1 -1
- package/dist/components/message/footer/SessionClosedModal.js +1 -1
- package/dist/components/message/footer/ToolbarPlugin.js +1 -1
- package/dist/components/message/footer/editorConfig.d.ts +2 -1
- package/dist/components/message/footer/editorConfig.d.ts.map +1 -1
- package/dist/components/message/footer/editorConfig.js +2 -0
- package/dist/components/message/footer/index.d.ts.map +1 -1
- package/dist/components/message/footer/index.js +16 -2
- package/dist/components/message/footer/mention/MentionMenu.d.ts +6 -0
- package/dist/components/message/footer/mention/MentionMenu.d.ts.map +1 -0
- package/dist/components/message/footer/mention/MentionMenu.js +51 -0
- package/dist/components/message/footer/mention/MentionNode.d.ts +20 -0
- package/dist/components/message/footer/mention/MentionNode.d.ts.map +1 -0
- package/dist/components/message/footer/mention/MentionNode.js +39 -0
- package/dist/components/message/footer/mention/extractMentions.d.ts +6 -0
- package/dist/components/message/footer/mention/extractMentions.d.ts.map +1 -0
- package/dist/components/message/footer/mention/extractMentions.js +66 -0
- package/dist/components/message/footer/mention/useMentionOptions.d.ts +8 -0
- package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -0
- package/dist/components/message/footer/mention/useMentionOptions.js +45 -0
- package/dist/components/message/item/AtTextMessage.d.ts +16 -0
- package/dist/components/message/item/AtTextMessage.d.ts.map +1 -0
- package/dist/components/message/item/AtTextMessage.js +112 -0
- package/dist/components/message/item/FileMessage.js +1 -1
- package/dist/components/message/item/GroupNotificationMessage.d.ts.map +1 -1
- package/dist/components/message/item/GroupNotificationMessage.js +2 -2
- package/dist/components/message/item/ImageMessage.js +1 -1
- package/dist/components/message/item/LinkCard.d.ts.map +1 -1
- package/dist/components/message/item/LinkCard.js +1 -1
- package/dist/components/message/item/LinkText.d.ts.map +1 -1
- package/dist/components/message/item/LinkText.js +1 -1
- package/dist/components/message/item/MergeImageMessage.js +1 -1
- package/dist/components/message/item/MessageBubble.d.ts.map +1 -1
- package/dist/components/message/item/MessageBubble.js +2 -2
- package/dist/components/message/item/QuoteMessage.d.ts.map +1 -1
- package/dist/components/message/item/QuoteMessage.js +1 -1
- package/dist/components/message/item/RevokeMessage.d.ts.map +1 -1
- package/dist/components/message/item/RevokeMessage.js +1 -1
- package/dist/components/message/item/VideoMessage.js +1 -1
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +7 -5
- package/dist/components/message/item/renderMessageContent.d.ts.map +1 -1
- package/dist/components/message/item/renderMessageContent.js +3 -0
- package/dist/components/message/reply/ReplyPreviewBar.d.ts.map +1 -1
- package/dist/components/message/reply/ReplyPreviewBar.js +1 -1
- package/dist/components/message/reply/ReplyQuoteContent.d.ts.map +1 -1
- package/dist/components/message/reply/ReplyQuoteContent.js +7 -5
- package/dist/components/message/toolbox/MessageToolboxMenu.js +1 -1
- package/dist/components/message/toolbox/getCopyableMessageText.d.ts.map +1 -1
- package/dist/components/message/toolbox/getCopyableMessageText.js +5 -3
- package/dist/components/message/toolbox/isPinnableMessageType.d.ts.map +1 -1
- package/dist/components/message/toolbox/isPinnableMessageType.js +1 -0
- package/dist/components/search-conversation/SearchAll.d.ts.map +1 -1
- package/dist/components/search-conversation/SearchAll.js +1 -1
- package/dist/components/search-conversation/SearchConversationAsMessages.d.ts.map +1 -1
- package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
- package/dist/components/search-conversation/SearchConversationAsUsers.d.ts.map +1 -1
- package/dist/components/search-conversation/SearchConversationAsUsers.js +1 -1
- package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
- package/dist/components/search-conversation/SearchDrawer.js +1 -1
- package/dist/components/search-conversation/SearchMessageOnCurrentConversation.d.ts.map +1 -1
- package/dist/components/search-conversation/SearchMessageOnCurrentConversation.js +1 -1
- package/dist/components/search-conversation/index.js +1 -1
- package/dist/components/search-conversation/item/SearchItemAsMessage.d.ts.map +1 -1
- package/dist/components/search-conversation/item/SearchItemAsMessage.js +1 -1
- package/dist/components/search-conversation/item/SearchItemAsUser.d.ts.map +1 -1
- package/dist/components/search-conversation/item/SearchItemAsUser.js +1 -1
- package/dist/components/session/DeskTeamInbox.d.ts.map +1 -1
- package/dist/components/session/DeskTeamInbox.js +3 -2
- package/dist/components/session/SessionFilterMenu.d.ts.map +1 -1
- package/dist/components/session/SessionFilterMenu.js +1 -1
- package/dist/components/thread/AssignConfirmModal.d.ts.map +1 -1
- package/dist/components/thread/AssignConfirmModal.js +1 -1
- package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
- package/dist/components/thread/GroupThreadInfo.js +7 -4
- package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
- package/dist/components/thread/ManualAssignPopover.js +1 -1
- package/dist/components/thread/SessionSection.d.ts.map +1 -1
- package/dist/components/thread/SessionSection.js +2 -2
- package/dist/components/thread/SingleThreadInfo.d.ts.map +1 -1
- package/dist/components/thread/SingleThreadInfo.js +1 -1
- package/dist/components/thread/ThreadInfo.js +1 -1
- package/dist/components/thread/UserSection.d.ts.map +1 -1
- package/dist/components/thread/UserSection.js +1 -1
- package/dist/components/video-player/VideoPlayerModal.d.ts.map +1 -1
- package/dist/components/video-player/VideoPlayerModal.js +1 -1
- package/dist/context/ChatContext.d.ts +1 -1
- package/dist/context/ChatContext.d.ts.map +1 -1
- package/dist/context/ChatContext.js +3 -1
- package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
- package/dist/hooks/global/useGlobalEvent.js +128 -42
- package/dist/hooks/group/useCreateGroup.js +5 -5
- package/dist/hooks/group/useDismissGroup.d.ts.map +1 -1
- package/dist/hooks/group/useDismissGroup.js +18 -0
- package/dist/hooks/group/useGroupPermission.d.ts +1 -1
- package/dist/hooks/group/useGroupPermission.d.ts.map +1 -1
- package/dist/hooks/group/useGroupPermission.js +2 -2
- package/dist/hooks/message/useMessage.d.ts +4 -1
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +9 -2
- package/dist/hooks/message/useSendMessage.d.ts +8 -4
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +46 -12
- package/dist/hooks/session/useConversationSessionState.d.ts +2 -1
- package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
- package/dist/hooks/session/useConversationSessionState.js +5 -5
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +17 -2
- package/dist/locales/vi/common.json +12 -0
- package/dist/locales/vi/conversation-inbox.json +4 -0
- package/dist/screens/conversation-detail/index.d.ts.map +1 -1
- package/dist/screens/conversation-detail/index.js +6 -7
- package/dist/store/auth.js +1 -1
- package/dist/store/conversation.d.ts.map +1 -1
- package/dist/store/conversation.js +103 -52
- package/dist/store/type.d.ts +11 -2
- package/dist/store/type.d.ts.map +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/types/chat.d.ts +30 -2
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +19 -9
- package/dist/utils/messageLog.d.ts +2 -2
- package/dist/utils/messageLog.d.ts.map +1 -1
- package/dist/utils/messageLog.js +33 -3
- package/package.json +17 -3
|
@@ -13,5 +13,5 @@ export interface GroupPermissions {
|
|
|
13
13
|
viewMemberInformation: boolean;
|
|
14
14
|
}
|
|
15
15
|
export declare const permissionListToGroupPermissions: (permissionList: string[] | undefined, roleLevel: GroupMemberRole) => GroupPermissions;
|
|
16
|
-
export declare const useGroupPermission: (
|
|
16
|
+
export declare const useGroupPermission: (groupID?: string) => GroupPermissions;
|
|
17
17
|
//# sourceMappingURL=useGroupPermission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGroupPermission.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useGroupPermission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AA+CD,eAAO,MAAM,gCAAgC,GAC3C,gBAAgB,MAAM,EAAE,GAAG,SAAS,EACpC,WAAW,eAAe,KACzB,gBAcF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,
|
|
1
|
+
{"version":3,"file":"useGroupPermission.d.ts","sourceRoot":"","sources":["../../../src/hooks/group/useGroupPermission.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAI/D,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;CAChC;AA+CD,eAAO,MAAM,gCAAgC,GAC3C,gBAAgB,MAAM,EAAE,GAAG,SAAS,EACpC,WAAW,eAAe,KACzB,gBAcF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,KAAG,gBAYrD,CAAC"}
|
|
@@ -56,8 +56,8 @@ export const permissionListToGroupPermissions = (permissionList, roleLevel) => {
|
|
|
56
56
|
permissionList.includes(permissionString),
|
|
57
57
|
]));
|
|
58
58
|
};
|
|
59
|
-
export const useGroupPermission = (
|
|
60
|
-
const currentMemberInGroup = useConversationStore((state) => state.currentMemberInGroup);
|
|
59
|
+
export const useGroupPermission = (groupID) => {
|
|
60
|
+
const currentMemberInGroup = useConversationStore((state) => groupID ? state.currentMemberInGroup.get(groupID) : undefined);
|
|
61
61
|
return useMemo(() => {
|
|
62
62
|
var _a;
|
|
63
63
|
const roleLevel = (_a = currentMemberInGroup === null || currentMemberInGroup === void 0 ? void 0 : currentMemberInGroup.roleLevel) !== null && _a !== void 0 ? _a : GroupMemberRole.Normal;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { MessageItem, MessageType } from "@droppii-org/wasm-client-sdk";
|
|
2
2
|
export declare const visibleTypeMessage: MessageType[];
|
|
3
|
-
export declare const isMessageHiddenForViewer: (message: MessageItem, isCrm: boolean
|
|
3
|
+
export declare const isMessageHiddenForViewer: (message: MessageItem, isCrm: boolean, conversation?: {
|
|
4
|
+
peerType?: string;
|
|
5
|
+
conversationType?: number;
|
|
6
|
+
}) => boolean;
|
|
4
7
|
export declare const useMessage: (conversationId?: string, searchClientMsgID?: string, enabled?: boolean, useAppHistory?: boolean) => {
|
|
5
8
|
loadState: {
|
|
6
9
|
initLoading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"useMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useMessage.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,WAAW,EACX,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AAatC,eAAO,MAAM,kBAAkB,eAkB9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,SAAS,WAAW,EACpB,OAAO,OAAO,EACd,eAAe;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAE,KAC9D,OAqBF,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,iBAAiB,MAAM,EACvB,oBAAoB,MAAM,EAC1B,iBAAc,EACd,uBAAqB;;;;;qBAeA,WAAW,EAAE;;;;;;qBAAb,WAAW,EAAE;;;;;;CAsSnC,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,SAAS,WAAW,SACpB,CAAC;AAChC,eAAO,MAAM,gBAAgB,GAAI,SAAS,WAAW,SACpB,CAAC;AAClC,eAAO,MAAM,gBAAgB,GAAI,aAAa,MAAM,SACf,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAC7B,aAAa,WAAW,EAAE,EAC1B,SAAS,WAAW,EACpB,WAAW,MAAM,GAAG,MAAM,KACzB,WAAW,GAAG,SAkBhB,CAAC"}
|
|
@@ -8,8 +8,9 @@ import isEmpty from "lodash/isEmpty";
|
|
|
8
8
|
import { useChatContext } from "../../context/ChatContext";
|
|
9
9
|
import useAuthStore from "../../store/auth";
|
|
10
10
|
import { ConnectStatus, SyncStatus } from "../../types/chat";
|
|
11
|
-
import { GROUP_NOTIFICATION_MESSAGE_TYPES, isSystemLogMessageType } from "../../utils/messageLog";
|
|
11
|
+
import { GROUP_NOTIFICATION_MESSAGE_TYPES, isGroupNotificationMessageType, isSystemLogMessageType } from "../../utils/messageLog";
|
|
12
12
|
import { isRenderableCustomMessage } from "../../utils/customMessage";
|
|
13
|
+
import { isGroupConversation } from "../../utils/imCommon";
|
|
13
14
|
export const visibleTypeMessage = [
|
|
14
15
|
MessageType.TextMessage,
|
|
15
16
|
MessageType.PictureMessage,
|
|
@@ -29,9 +30,15 @@ export const visibleTypeMessage = [
|
|
|
29
30
|
MessageType.LogTextMessage,
|
|
30
31
|
...GROUP_NOTIFICATION_MESSAGE_TYPES,
|
|
31
32
|
];
|
|
32
|
-
export const isMessageHiddenForViewer = (message, isCrm) => {
|
|
33
|
+
export const isMessageHiddenForViewer = (message, isCrm, conversation) => {
|
|
33
34
|
if (!visibleTypeMessage.includes(message === null || message === void 0 ? void 0 : message.contentType))
|
|
34
35
|
return true;
|
|
36
|
+
// Group notification messages stay hidden in a CX support session even
|
|
37
|
+
// for CRM — the isCrm early-return below only applies past this check.
|
|
38
|
+
if (isGroupNotificationMessageType(message === null || message === void 0 ? void 0 : message.contentType) &&
|
|
39
|
+
!isGroupConversation(conversation)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
35
42
|
if (isCrm)
|
|
36
43
|
return false;
|
|
37
44
|
const isCustomMessage = MessageType.CustomMessage === (message === null || message === void 0 ? void 0 : message.contentType);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { CustomMsgParams, MergerMsgParams, MessageItem } from "@droppii-org/wasm-client-sdk";
|
|
1
|
+
import { AtMsgParams, CustomMsgParams, MergerMsgParams, MessageItem } from "@droppii-org/wasm-client-sdk";
|
|
2
2
|
import { type CustomMessagePayload } from "../../types/customMessage";
|
|
3
|
-
import { BotFlowMeta, ExtendMessageInfo, FileMsgParamsByFile, ImageMsgParamsByFile, UrlMetadataInfo, VideoMsgParamsByFile } from "../../types/chat";
|
|
3
|
+
import { BotFlowMeta, ExtendMessageInfo, FileMsgParamsByFile, ImageMsgParamsByFile, MentionOffset, MentionSendPayload, UrlMetadataInfo, VideoMsgParamsByFile } from "../../types/chat";
|
|
4
4
|
import { UploadFile } from "antd";
|
|
5
5
|
import { ISessionResponse } from "../../types/dto";
|
|
6
6
|
export declare const isMediaResendable: (message: {
|
|
@@ -12,6 +12,8 @@ export declare const createImageMessageByFile: (file: ImageMsgParamsByFile) => P
|
|
|
12
12
|
export declare const createMergerMessage: (mergerMsgParams: MergerMsgParams) => Promise<MessageItem | null>;
|
|
13
13
|
export declare const createVideoMessageByFile: (file: VideoMsgParamsByFile) => Promise<MessageItem | null>;
|
|
14
14
|
export declare const createFileMessageByFile: (file: FileMsgParamsByFile) => Promise<MessageItem | null>;
|
|
15
|
+
export declare const AT_ALL_TAG = "AtAllTag";
|
|
16
|
+
export declare const createAtTextMessage: (params: AtMsgParams) => Promise<MessageItem | null>;
|
|
15
17
|
export declare const createUrlTextMessage: (text: string, urls: string[]) => Promise<MessageItem | null>;
|
|
16
18
|
export declare const createCustomMessageByParams: (params: CustomMsgParams) => Promise<MessageItem | null>;
|
|
17
19
|
export declare const createCustomMessage: (payload: CustomMessagePayload) => Promise<MessageItem | null>;
|
|
@@ -21,7 +23,7 @@ export interface UseSendMessageOptions {
|
|
|
21
23
|
scrollEvent?: SendMessageScrollEvent;
|
|
22
24
|
}
|
|
23
25
|
export declare const useSendMessage: (options?: UseSendMessageOptions) => {
|
|
24
|
-
sendMergeMessage: ({ richText, plainText, files, currentSession, isInternal, urlMetadata, flow, customMessage, }: {
|
|
26
|
+
sendMergeMessage: ({ richText, plainText, files, currentSession, isInternal, urlMetadata, flow, customMessage, mentions, }: {
|
|
25
27
|
richText: string;
|
|
26
28
|
plainText: string;
|
|
27
29
|
files?: UploadFile[];
|
|
@@ -30,16 +32,18 @@ export declare const useSendMessage: (options?: UseSendMessageOptions) => {
|
|
|
30
32
|
urlMetadata?: UrlMetadataInfo;
|
|
31
33
|
flow?: BotFlowMeta;
|
|
32
34
|
customMessage?: CustomMessagePayload;
|
|
35
|
+
mentions?: MentionSendPayload;
|
|
33
36
|
}) => Promise<boolean>;
|
|
34
37
|
sendCustomMessage: (payload: CustomMessagePayload, sendOptions?: {
|
|
35
38
|
currentSession?: ISessionResponse;
|
|
36
39
|
}) => Promise<boolean>;
|
|
37
40
|
resendMessage: (failedMessage: MessageItem) => Promise<void>;
|
|
38
41
|
};
|
|
39
|
-
export declare const generateExtendMessageInfo: ({ richText, urlMetadata, currentSession, flow, }: {
|
|
42
|
+
export declare const generateExtendMessageInfo: ({ richText, urlMetadata, currentSession, flow, mentionOffsets, }: {
|
|
40
43
|
richText?: string;
|
|
41
44
|
urlMetadata?: UrlMetadataInfo;
|
|
42
45
|
currentSession?: ISessionResponse;
|
|
43
46
|
flow?: BotFlowMeta;
|
|
47
|
+
mentionOffsets?: MentionOffset[];
|
|
44
48
|
}) => ExtendMessageInfo;
|
|
45
49
|
//# sourceMappingURL=useSendMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EAIZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAgB,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAmBpF,eAAO,MAAM,iBAAiB,GAAI,SAAS;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,YAE0C,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,gCAanD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,iBAAiB,eAAe,gCAazE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,mBAAmB,gCAatE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,gCActE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,eAAe,gCAcxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,SAAS,oBAAoB,gCAOtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,iDAAiD,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,qBAAqB;
|
|
1
|
+
{"version":3,"file":"useSendMessage.d.ts","sourceRoot":"","sources":["../../../src/hooks/message/useSendMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,eAAe,EACf,eAAe,EACf,WAAW,EAIZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACrB,MAAM,cAAc,CAAC;AAWtB,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAQlC,OAAO,EAAgB,gBAAgB,EAAyB,MAAM,aAAa,CAAC;AAmBpF,eAAO,MAAM,iBAAiB,GAAI,SAAS;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,YAE0C,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAU,MAAM,MAAM,gCAanD,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,iBAAiB,eAAe,gCAazE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAU,MAAM,oBAAoB,gCAaxE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAU,MAAM,mBAAmB,gCAatE,CAAC;AAGF,eAAO,MAAM,UAAU,aAAa,CAAC;AAErC,eAAO,MAAM,mBAAmB,GAAU,QAAQ,WAAW,gCAa5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,MAAM,MAAM,EAAE,MAAM,MAAM,EAAE,gCActE,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,QAAQ,eAAe,gCAcxB,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,SAAS,oBAAoB,gCAOtE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,eAAe,WAAW,gCAc3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAC9B,4BAA4B,GAC5B,iDAAiD,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,eAAO,MAAM,cAAc,GAAI,UAAU,qBAAqB;gIAuSvD;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;QACrB,cAAc,CAAC,EAAE,gBAAgB,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,eAAe,CAAC;QAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;QACnB,aAAa,CAAC,EAAE,oBAAoB,CAAC;QACrC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KAC/B,KAAG,OAAO,CAAC,OAAO,CAAC;iCA7CT,oBAAoB,gBACf;QAAE,cAAc,CAAC,EAAE,gBAAgB,CAAA;KAAE,KAClD,OAAO,CAAC,OAAO,CAAC;mCAnHG,WAAW;CA+WpC,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,kEAMvC;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,sBAkCA,CAAC"}
|
|
@@ -26,7 +26,7 @@ const MEDIA_CONTENT_TYPES = new Set([
|
|
|
26
26
|
export const isMediaResendable = (message) => !MEDIA_CONTENT_TYPES.has(message.contentType) ||
|
|
27
27
|
messageFileStore.has(message.clientMsgID);
|
|
28
28
|
export const createTextMessage = async (text) => {
|
|
29
|
-
|
|
29
|
+
const textMessage = await DChatSDK.createTextMessage(text, new Date().getTime().toString())
|
|
30
30
|
.then(({ data }) => {
|
|
31
31
|
return data;
|
|
32
32
|
})
|
|
@@ -37,7 +37,7 @@ export const createTextMessage = async (text) => {
|
|
|
37
37
|
return textMessage;
|
|
38
38
|
};
|
|
39
39
|
export const createImageMessageByFile = async (file) => {
|
|
40
|
-
|
|
40
|
+
const imageMessage = await DChatSDK.createImageMessageByFile(file, new Date().getTime().toString())
|
|
41
41
|
.then(({ data }) => {
|
|
42
42
|
return data;
|
|
43
43
|
})
|
|
@@ -48,7 +48,7 @@ export const createImageMessageByFile = async (file) => {
|
|
|
48
48
|
return imageMessage;
|
|
49
49
|
};
|
|
50
50
|
export const createMergerMessage = async (mergerMsgParams) => {
|
|
51
|
-
|
|
51
|
+
const mergerMessage = await DChatSDK.createMergerMessage(mergerMsgParams, new Date().getTime().toString())
|
|
52
52
|
.then(({ data }) => {
|
|
53
53
|
return data;
|
|
54
54
|
})
|
|
@@ -59,7 +59,7 @@ export const createMergerMessage = async (mergerMsgParams) => {
|
|
|
59
59
|
return mergerMessage;
|
|
60
60
|
};
|
|
61
61
|
export const createVideoMessageByFile = async (file) => {
|
|
62
|
-
|
|
62
|
+
const videoMessage = await DChatSDK.createVideoMessageByFile(file, new Date().getTime().toString())
|
|
63
63
|
.then(({ data }) => {
|
|
64
64
|
return data;
|
|
65
65
|
})
|
|
@@ -70,7 +70,7 @@ export const createVideoMessageByFile = async (file) => {
|
|
|
70
70
|
return videoMessage;
|
|
71
71
|
};
|
|
72
72
|
export const createFileMessageByFile = async (file) => {
|
|
73
|
-
|
|
73
|
+
const fileMessage = await DChatSDK.createFileMessageByFile(file, new Date().getTime().toString())
|
|
74
74
|
.then(({ data }) => {
|
|
75
75
|
return data;
|
|
76
76
|
})
|
|
@@ -80,8 +80,21 @@ export const createFileMessageByFile = async (file) => {
|
|
|
80
80
|
});
|
|
81
81
|
return fileMessage;
|
|
82
82
|
};
|
|
83
|
+
// OpenIM SDK convention for "tag all members" in AtMsgParams.atUserIDList.
|
|
84
|
+
export const AT_ALL_TAG = "AtAllTag";
|
|
85
|
+
export const createAtTextMessage = async (params) => {
|
|
86
|
+
const atTextMessage = await DChatSDK.createTextAtMessage(params, new Date().getTime().toString())
|
|
87
|
+
.then(({ data }) => {
|
|
88
|
+
return data;
|
|
89
|
+
})
|
|
90
|
+
.catch(({ errCode, errMsg }) => {
|
|
91
|
+
console.error("createTextAtMessage", errCode, errMsg);
|
|
92
|
+
return null;
|
|
93
|
+
});
|
|
94
|
+
return atTextMessage;
|
|
95
|
+
};
|
|
83
96
|
export const createUrlTextMessage = async (text, urls) => {
|
|
84
|
-
|
|
97
|
+
const textMessage = await DChatSDK.createUrlTextMessage(text, JSON.stringify(urls), new Date().getTime().toString())
|
|
85
98
|
.then(({ data }) => {
|
|
86
99
|
return data;
|
|
87
100
|
})
|
|
@@ -92,7 +105,7 @@ export const createUrlTextMessage = async (text, urls) => {
|
|
|
92
105
|
return textMessage;
|
|
93
106
|
};
|
|
94
107
|
export const createCustomMessageByParams = async (params) => {
|
|
95
|
-
|
|
108
|
+
const customMessage = await DChatSDK.createCustomMessage(params, new Date().getTime().toString())
|
|
96
109
|
.then(({ data }) => {
|
|
97
110
|
return data;
|
|
98
111
|
})
|
|
@@ -110,7 +123,7 @@ export const createCustomMessage = async (payload) => {
|
|
|
110
123
|
});
|
|
111
124
|
};
|
|
112
125
|
export const createQuoteMessage = async (text, quotedMessage) => {
|
|
113
|
-
|
|
126
|
+
const textMessage = await DChatSDK.createQuoteMessage({
|
|
114
127
|
text,
|
|
115
128
|
message: JSON.stringify(quotedMessage),
|
|
116
129
|
})
|
|
@@ -326,7 +339,7 @@ export const useSendMessage = (options) => {
|
|
|
326
339
|
});
|
|
327
340
|
return sendMessage(Object.assign(Object.assign({}, customMessage), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal: false }), sendOptions === null || sendOptions === void 0 ? void 0 : sendOptions.currentSession);
|
|
328
341
|
}, [conversationData, recvID, groupID, sendMessage]);
|
|
329
|
-
const sendMergeMessage = useCallback(async ({ richText, plainText, files = [], currentSession, isInternal, urlMetadata, flow, customMessage, }) => {
|
|
342
|
+
const sendMergeMessage = useCallback(async ({ richText, plainText, files = [], currentSession, isInternal, urlMetadata, flow, customMessage, mentions, }) => {
|
|
330
343
|
if (!conversationData || (!recvID && !groupID))
|
|
331
344
|
return false;
|
|
332
345
|
const messageList = [];
|
|
@@ -449,10 +462,24 @@ export const useSendMessage = (options) => {
|
|
|
449
462
|
console.error("Lỗi xử lý tin nhắn:", err);
|
|
450
463
|
}
|
|
451
464
|
}
|
|
465
|
+
const hasMentions = !!mentions && (mentions.atUserIDList.length > 0 || mentions.isAtAll);
|
|
452
466
|
if (!!plainText && plainText.trim() !== "") {
|
|
453
467
|
const urls = extractLinkUrls(plainText);
|
|
454
468
|
let textMessage = null;
|
|
455
|
-
if (
|
|
469
|
+
if (hasMentions && mentions) {
|
|
470
|
+
// OpenIM SDK convention: "tag all" is signaled by the sentinel
|
|
471
|
+
// "AtAllTag" inside atUserIDList, not a separate flag/param.
|
|
472
|
+
textMessage = await createAtTextMessage({
|
|
473
|
+
text: plainText,
|
|
474
|
+
atUserIDList: mentions.isAtAll
|
|
475
|
+
? [AT_ALL_TAG, ...mentions.atUserIDList]
|
|
476
|
+
: mentions.atUserIDList,
|
|
477
|
+
atUsersInfo: mentions.atUsersInfo,
|
|
478
|
+
message: (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.clientMsgID) ? quotedMessage : undefined,
|
|
479
|
+
});
|
|
480
|
+
setQuotedMessage(null);
|
|
481
|
+
}
|
|
482
|
+
else if (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.clientMsgID) {
|
|
456
483
|
textMessage = await createQuoteMessage(plainText, quotedMessage);
|
|
457
484
|
setQuotedMessage(null);
|
|
458
485
|
}
|
|
@@ -475,7 +502,8 @@ export const useSendMessage = (options) => {
|
|
|
475
502
|
for (const message of messageList) {
|
|
476
503
|
const isTextLikeMessage = (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.TextMessage ||
|
|
477
504
|
(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.UrlTextMessage ||
|
|
478
|
-
(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.QuoteMessage
|
|
505
|
+
(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.QuoteMessage ||
|
|
506
|
+
(message === null || message === void 0 ? void 0 : message.contentType) === MessageType.AtTextMessage;
|
|
479
507
|
const extendMessageInfo = generateExtendMessageInfo({
|
|
480
508
|
richText: isTextLikeMessage ? richText : "",
|
|
481
509
|
urlMetadata: (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.UrlTextMessage
|
|
@@ -483,6 +511,9 @@ export const useSendMessage = (options) => {
|
|
|
483
511
|
: undefined,
|
|
484
512
|
currentSession,
|
|
485
513
|
flow: isTextLikeMessage ? flow : undefined,
|
|
514
|
+
mentionOffsets: (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.AtTextMessage
|
|
515
|
+
? mentions === null || mentions === void 0 ? void 0 : mentions.mentionOffsets
|
|
516
|
+
: undefined,
|
|
486
517
|
});
|
|
487
518
|
const mMessage = Object.assign(Object.assign({}, message), { ex: JSON.stringify(extendMessageInfo) || "{}", isInternal });
|
|
488
519
|
await sendMessage(mMessage, currentSession);
|
|
@@ -502,7 +533,7 @@ export const useSendMessage = (options) => {
|
|
|
502
533
|
resendMessage,
|
|
503
534
|
};
|
|
504
535
|
};
|
|
505
|
-
export const generateExtendMessageInfo = ({ richText, urlMetadata, currentSession, flow, }) => {
|
|
536
|
+
export const generateExtendMessageInfo = ({ richText, urlMetadata, currentSession, flow, mentionOffsets, }) => {
|
|
506
537
|
const extendMessageInfo = {
|
|
507
538
|
sessionId: (currentSession === null || currentSession === void 0 ? void 0 : currentSession.id) || "",
|
|
508
539
|
applicationType: useAuthStore.getState().applicationType,
|
|
@@ -510,6 +541,9 @@ export const generateExtendMessageInfo = ({ richText, urlMetadata, currentSessio
|
|
|
510
541
|
if (flow) {
|
|
511
542
|
extendMessageInfo.flow = flow;
|
|
512
543
|
}
|
|
544
|
+
if (mentionOffsets && mentionOffsets.length > 0) {
|
|
545
|
+
extendMessageInfo.mentions = { offsets: mentionOffsets };
|
|
546
|
+
}
|
|
513
547
|
const trimmedRichText = richText === null || richText === void 0 ? void 0 : richText.trim();
|
|
514
548
|
if (trimmedRichText) {
|
|
515
549
|
extendMessageInfo.messageInfo = {
|
|
@@ -2,9 +2,10 @@ import { SessionType } from "@droppii-org/wasm-client-sdk";
|
|
|
2
2
|
interface UseConversationSessionStateParams {
|
|
3
3
|
conversationId: string;
|
|
4
4
|
conversationType?: SessionType;
|
|
5
|
+
peerType?: string;
|
|
5
6
|
groupId?: string;
|
|
6
7
|
}
|
|
7
|
-
export declare const useConversationSessionState: ({ conversationId, conversationType, groupId, }: UseConversationSessionStateParams) => {
|
|
8
|
+
export declare const useConversationSessionState: ({ conversationId, conversationType, peerType, groupId, }: UseConversationSessionStateParams) => {
|
|
8
9
|
groupId: string | undefined;
|
|
9
10
|
latestConversationSession: import("../../types/dto").ISessionResponse | undefined;
|
|
10
11
|
customerUserID: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useConversationSessionState.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useConversationSessionState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,UAAU,iCAAiC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,2BAA2B,GAAI,
|
|
1
|
+
{"version":3,"file":"useConversationSessionState.d.ts","sourceRoot":"","sources":["../../../src/hooks/session/useConversationSessionState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,UAAU,iCAAiC;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,2BAA2B,GAAI,0DAKzC,iCAAiC;;;;;CAoBnC,CAAC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useGetListSessionByConversation } from "./useGetListSessionByConversation";
|
|
3
|
-
import {
|
|
4
|
-
export const useConversationSessionState = ({ conversationId, conversationType, groupId, }) => {
|
|
3
|
+
import { isGroupConversation } from "../../utils/imCommon";
|
|
4
|
+
export const useConversationSessionState = ({ conversationId, conversationType, peerType, groupId, }) => {
|
|
5
5
|
var _a;
|
|
6
|
-
const
|
|
7
|
-
const currentGroupId =
|
|
6
|
+
const isGroupChat = isGroupConversation({ peerType, conversationType });
|
|
7
|
+
const currentGroupId = isGroupChat ? groupId : undefined;
|
|
8
8
|
const { data: conversationSessions, refetch: refetchConversationSessions, } = useGetListSessionByConversation({
|
|
9
9
|
conversationId,
|
|
10
|
-
enabled: !
|
|
10
|
+
enabled: !isGroupChat,
|
|
11
11
|
});
|
|
12
12
|
const latestConversationSession = conversationSessions === null || conversationSessions === void 0 ? void 0 : conversationSessions[0];
|
|
13
13
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.tsx"],"names":[],"mappings":"AAKA,OAAO,iBAAiB,CAAC;AAazB,UAAU,eAAe;IACvB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AACD,QAAA,MAAM,UAAU,GAAI,cAAc,eAAe,4CAsChD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
package/dist/layout/index.js
CHANGED
|
@@ -1,18 +1,33 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Fragment as _Fragment,
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useTranslation } from "react-i18next";
|
|
3
4
|
import { useGlobalEvent } from "../hooks/global/useGlobalEvent";
|
|
4
5
|
import dayjs from "dayjs";
|
|
5
6
|
import "dayjs/locale/vi";
|
|
6
7
|
import utc from "dayjs/plugin/utc";
|
|
7
8
|
import timezone from "dayjs/plugin/timezone";
|
|
8
9
|
import { useSyncUsersInfo } from "../hooks/user/useUsersInfo";
|
|
10
|
+
import useConversationStore from "../store/conversation";
|
|
11
|
+
import InfoModal from "../components/common/InfoModal";
|
|
12
|
+
import { useChatContext } from "../context/ChatContext";
|
|
9
13
|
dayjs.extend(utc);
|
|
10
14
|
dayjs.extend(timezone);
|
|
11
15
|
dayjs.tz.setDefault("Asia/Ho_Chi_Minh");
|
|
12
16
|
dayjs.locale("vi");
|
|
13
17
|
const MainLayout = ({ children }) => {
|
|
18
|
+
const { t } = useTranslation();
|
|
14
19
|
useGlobalEvent();
|
|
15
20
|
useSyncUsersInfo();
|
|
16
|
-
|
|
21
|
+
const { renderGroupAccessModal } = useChatContext();
|
|
22
|
+
const removedFromGroupModalOpen = useConversationStore((state) => state.removedFromGroupModalOpen);
|
|
23
|
+
const hideRemovedFromGroupModal = useConversationStore((state) => state.hideRemovedFromGroupModal);
|
|
24
|
+
const modalProps = {
|
|
25
|
+
open: removedFromGroupModalOpen,
|
|
26
|
+
onOk: hideRemovedFromGroupModal,
|
|
27
|
+
title: t("removed_from_group_modal_title"),
|
|
28
|
+
okText: t("removed_from_group_modal_ok"),
|
|
29
|
+
message: t("removed_from_group_modal_message"),
|
|
30
|
+
};
|
|
31
|
+
return (_jsxs(_Fragment, { children: [children, renderGroupAccessModal ? (renderGroupAccessModal(modalProps)) : (_jsx(InfoModal, { open: modalProps.open, onOk: modalProps.onOk, title: modalProps.title, okText: modalProps.okText, children: _jsx("p", { children: modalProps.message }) }))] }));
|
|
17
32
|
};
|
|
18
33
|
export default MainLayout;
|
|
@@ -36,6 +36,12 @@
|
|
|
36
36
|
"reply": "Reply",
|
|
37
37
|
"internal": "Internal",
|
|
38
38
|
"canned_response_hint": "Gõ # và nhấn Enter để chèn câu trả lời nhanh",
|
|
39
|
+
"mention": {
|
|
40
|
+
"all_members": "Tất cả",
|
|
41
|
+
"all_members_hint": "Nhắc đến tất cả thành viên",
|
|
42
|
+
"no_result": "Không tìm thấy thành viên nào",
|
|
43
|
+
"menu_title": "Nhắc đến"
|
|
44
|
+
},
|
|
39
45
|
"update_session_status_title": "Cập nhật status",
|
|
40
46
|
"update_session_tag_title": "Cập nhật tag",
|
|
41
47
|
"cancel": "Hủy",
|
|
@@ -129,6 +135,9 @@
|
|
|
129
135
|
"group_notification_member_cancel_muted": "{{name}} đã bật lại quyền gửi tin nhắn của {{target}}",
|
|
130
136
|
"group_notification_muted": "{{name}} đã tắt quyền gửi tin nhắn của cả nhóm",
|
|
131
137
|
"group_notification_cancel_muted": "{{name}} đã bật lại quyền gửi tin nhắn của cả nhóm",
|
|
138
|
+
"group_notification_member_set_admin": "{{name}} đã chỉ định {{target}} làm quản trị viên",
|
|
139
|
+
"group_notification_message_pinned": "{{name}} đã ghim một tin nhắn",
|
|
140
|
+
"group_notification_message_unpinned": "{{name}} đã bỏ ghim một tin nhắn",
|
|
132
141
|
"invalid_message": "Tin nhắn không hợp lệ",
|
|
133
142
|
"session_started": "Phiên chat đã bắt đầu",
|
|
134
143
|
"session_ended": "Phiên chat đã kết thúc",
|
|
@@ -240,6 +249,9 @@
|
|
|
240
249
|
"disband_group_failed": "Giải tán nhóm thất bại",
|
|
241
250
|
"disband_group_confirm_title": "Giải tán nhóm?",
|
|
242
251
|
"disband_group_confirm_message": "Bạn có chắc chắn muốn giải tán nhóm này không? Hành động này không thể hoàn tác.",
|
|
252
|
+
"removed_from_group_modal_title": "Không thể xem cuộc trò chuyện này",
|
|
253
|
+
"removed_from_group_modal_message": "Bạn hiện không có quyền truy cập vào cuộc trò chuyện hoặc tin nhắn này.",
|
|
254
|
+
"removed_from_group_modal_ok": "Đã hiểu",
|
|
243
255
|
"delete_conversation_success": "Đã xóa trò chuyện",
|
|
244
256
|
"delete_conversation_failed": "Xóa trò chuyện thất bại",
|
|
245
257
|
"delete_conversation_confirm_title": "Xóa trò chuyện?",
|
|
@@ -51,6 +51,9 @@
|
|
|
51
51
|
"actions": {
|
|
52
52
|
"trigger": "Tuỳ chọn cuộc trò chuyện"
|
|
53
53
|
},
|
|
54
|
+
"mention": {
|
|
55
|
+
"label": "Bạn được nhắc đến"
|
|
56
|
+
},
|
|
54
57
|
"mute": {
|
|
55
58
|
"mute_action": "Tắt thông báo",
|
|
56
59
|
"unmute_action": "Bật thông báo",
|
|
@@ -69,6 +72,7 @@
|
|
|
69
72
|
"profile_hint": "Nhấn để xem thông tin",
|
|
70
73
|
"options_title": "Tuỳ chọn",
|
|
71
74
|
"input_placeholder": "Nhập tin nhắn...",
|
|
75
|
+
"view_only_notice": "Bạn không còn là thành viên của nhóm này. Bạn chỉ có thể xem lại nội dung trò chuyện.",
|
|
72
76
|
"resolve_failed": "Không thể mở cuộc trò chuyện",
|
|
73
77
|
"more_option": {
|
|
74
78
|
"toggle": "Tùy chọn khác",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAWrF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AAGrD,MAAM,WAAW,4BACf,SAAQ,4BAA4B,EACpC,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,uBAAuB,GAAI,wFAS9B,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/screens/conversation-detail/index.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAWrF,OAAO,EAEL,KAAK,4BAA4B,EAClC,MAAM,6CAA6C,CAAC;AAGrD,MAAM,WAAW,4BACf,SAAQ,4BAA4B,EACpC,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,uBAAuB,GAAI,wFAS9B,4BAA4B,mDAwK9B,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
|
|
@@ -12,8 +12,8 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
12
12
|
};
|
|
13
13
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
14
|
import { useState } from "react";
|
|
15
|
-
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
16
15
|
import { useTranslation } from "react-i18next";
|
|
16
|
+
import { useChatContext } from "../../context/ChatContext";
|
|
17
17
|
import { useBoolean } from "ahooks";
|
|
18
18
|
import clsx from "clsx";
|
|
19
19
|
import { Empty, Spin } from "antd";
|
|
@@ -31,9 +31,7 @@ const DChatConversationDetail = (_a) => {
|
|
|
31
31
|
var _b;
|
|
32
32
|
var { className, children, onBack, conversationId, userId, groupId, botId } = _a, inputProps = __rest(_a, ["className", "children", "onBack", "conversationId", "userId", "groupId", "botId"]);
|
|
33
33
|
const { t } = useTranslation("conversation-inbox");
|
|
34
|
-
const
|
|
35
|
-
const pathname = usePathname();
|
|
36
|
-
const searchParams = useSearchParams();
|
|
34
|
+
const { onNavigate } = useChatContext();
|
|
37
35
|
const conversation = useConversationStore((state) => state.conversationData);
|
|
38
36
|
const { isResolving, error } = useResolveConversation({
|
|
39
37
|
conversationId,
|
|
@@ -52,17 +50,18 @@ const DChatConversationDetail = (_a) => {
|
|
|
52
50
|
const [resourceTab, setResourceTab] = useState(null);
|
|
53
51
|
const handleBack = () => {
|
|
54
52
|
if (typeof window !== "undefined" && window.history.length > 1) {
|
|
55
|
-
|
|
53
|
+
window.history.back();
|
|
56
54
|
onBack === null || onBack === void 0 ? void 0 : onBack();
|
|
57
55
|
return;
|
|
58
56
|
}
|
|
59
|
-
const newSearchParams = new URLSearchParams(
|
|
57
|
+
const newSearchParams = new URLSearchParams(window.location.search);
|
|
60
58
|
newSearchParams.delete("threadId");
|
|
61
59
|
newSearchParams.delete("userId");
|
|
62
60
|
newSearchParams.delete("groupId");
|
|
63
61
|
newSearchParams.delete("botId");
|
|
64
62
|
const query = newSearchParams.toString();
|
|
65
|
-
|
|
63
|
+
const pathname = window.location.pathname;
|
|
64
|
+
onNavigate === null || onNavigate === void 0 ? void 0 : onNavigate(query ? `${pathname}?${query}` : pathname);
|
|
66
65
|
onBack === null || onBack === void 0 ? void 0 : onBack();
|
|
67
66
|
};
|
|
68
67
|
if (isResolving) {
|
package/dist/store/auth.js
CHANGED
|
@@ -18,7 +18,7 @@ const useAuthStore = create((set, get) => ({
|
|
|
18
18
|
setChatToken: (token) => set({ chatToken: token }),
|
|
19
19
|
initAuthStore: ({ accessToken, chatToken, apiAddress, wsAddress, platformID, userID, applicationType, isCrm, onTokenRefresh, onAuthError, }) => {
|
|
20
20
|
var _a;
|
|
21
|
-
const jwtParser =
|
|
21
|
+
const jwtParser = accessToken ? jwtDecode(accessToken) : null;
|
|
22
22
|
const isCx = !!isCrm && !!((_a = jwtParser === null || jwtParser === void 0 ? void 0 : jwtParser.role) === null || _a === void 0 ? void 0 : _a.includes("CRM_LIVE_CHAT"));
|
|
23
23
|
set((state) => ({
|
|
24
24
|
accessToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/store/conversation.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAM3C,QAAA,MAAM,oBAAoB,gFAgWvB,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
|