@droppii-org/chat-sdk 0.7.2 → 0.7.4
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/boot/BootProgressBar.d.ts +13 -0
- package/dist/components/boot/BootProgressBar.d.ts.map +1 -0
- package/dist/components/boot/BootProgressBar.js +18 -0
- package/dist/components/canned-response/CannedResponsePanel.d.ts.map +1 -1
- package/dist/components/canned-response/CannedResponsePanel.js +2 -2
- package/dist/components/common/BottomSheet.d.ts +18 -0
- package/dist/components/common/BottomSheet.d.ts.map +1 -0
- package/dist/components/common/BottomSheet.js +49 -0
- package/dist/components/common/DeskPanelDrawer.d.ts.map +1 -1
- package/dist/components/common/DeskPanelDrawer.js +29 -15
- package/dist/components/common/DeskSidePanel.d.ts.map +1 -1
- package/dist/components/common/DeskSidePanel.js +1 -1
- package/dist/components/compose/ComposeNewMessageModal.d.ts.map +1 -1
- package/dist/components/compose/ComposeNewMessageModal.js +3 -3
- package/dist/components/conversation/ConversationByGroupItem.d.ts.map +1 -1
- package/dist/components/conversation/ConversationByGroupItem.js +3 -8
- package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
- package/dist/components/conversation/ConversationBySessionItem.js +3 -8
- package/dist/components/conversation/DeskConversationList.d.ts +4 -1
- package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
- package/dist/components/conversation/DeskConversationList.js +2 -2
- package/dist/components/conversation/DeskListHeader.d.ts +2 -0
- package/dist/components/conversation/DeskListHeader.d.ts.map +1 -1
- package/dist/components/conversation/DeskListHeader.js +3 -3
- package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMessageList.js +23 -5
- package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxItem.js +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.js +12 -3
- package/dist/components/conversation-inbox/InboxBootStatus.d.ts +10 -0
- package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -0
- package/dist/components/conversation-inbox/InboxBootStatus.js +34 -0
- package/dist/components/conversation-inbox/InboxListSkeleton.d.ts +6 -0
- package/dist/components/conversation-inbox/InboxListSkeleton.d.ts.map +1 -0
- package/dist/components/conversation-inbox/InboxListSkeleton.js +8 -0
- package/dist/components/group/GroupPanelHeader.js +1 -1
- package/dist/components/icon/strokeIconNodes.d.ts +6 -0
- package/dist/components/icon/strokeIconNodes.d.ts.map +1 -1
- package/dist/components/icon/strokeIconNodes.js +5 -0
- package/dist/components/message/MessageHeader.d.ts +3 -1
- package/dist/components/message/MessageHeader.d.ts.map +1 -1
- package/dist/components/message/MessageHeader.js +10 -6
- package/dist/components/message/MessageList.d.ts +2 -0
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +15 -4
- package/dist/components/message/SelectSession.js +1 -1
- package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
- package/dist/components/message/footer/ActionBar.js +2 -2
- package/dist/components/message/footer/ComposerTabs.js +1 -1
- package/dist/components/message/footer/CrmComposerCard.js +1 -1
- package/dist/components/message/footer/EmojiPicker.d.ts +3 -1
- package/dist/components/message/footer/EmojiPicker.d.ts.map +1 -1
- package/dist/components/message/footer/EmojiPicker.js +3 -2
- package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
- package/dist/components/message/footer/EnterHandler.js +16 -2
- package/dist/components/message/footer/MediaActions.d.ts +2 -1
- package/dist/components/message/footer/MediaActions.d.ts.map +1 -1
- package/dist/components/message/footer/MediaActions.js +4 -4
- package/dist/components/message/footer/ToolbarPlugin.js +1 -1
- package/dist/components/message/footer/mention/MentionMenu.js +1 -1
- package/dist/components/message/headerIconButton.js +1 -1
- package/dist/components/message/item/ConsultantChatButton.d.ts +6 -0
- package/dist/components/message/item/ConsultantChatButton.d.ts.map +1 -0
- package/dist/components/message/item/ConsultantChatButton.js +19 -0
- package/dist/components/message/item/CustomMessage.d.ts.map +1 -1
- package/dist/components/message/item/CustomMessage.js +6 -1
- package/dist/components/message/item/EventMessage.d.ts +11 -0
- package/dist/components/message/item/EventMessage.d.ts.map +1 -0
- package/dist/components/message/item/EventMessage.js +28 -0
- package/dist/components/message/item/MessageMoreButton.d.ts.map +1 -1
- package/dist/components/message/item/MessageMoreButton.js +18 -5
- package/dist/components/message/item/QuoteMessage.d.ts.map +1 -1
- package/dist/components/message/item/QuoteMessage.js +3 -50
- package/dist/components/message/item/consultantCta.d.ts +8 -0
- package/dist/components/message/item/consultantCta.d.ts.map +1 -0
- package/dist/components/message/item/consultantCta.js +5 -0
- package/dist/components/message/item/index.d.ts.map +1 -1
- package/dist/components/message/item/index.js +10 -4
- package/dist/components/message/item/otherSenders.d.ts.map +1 -1
- package/dist/components/message/item/otherSenders.js +4 -1
- package/dist/components/message/reply/ReplyPreviewBar.d.ts.map +1 -1
- package/dist/components/message/reply/ReplyPreviewBar.js +4 -13
- package/dist/components/rich-text-editor/RichTextEditor.d.ts +3 -1
- package/dist/components/rich-text-editor/RichTextEditor.d.ts.map +1 -1
- package/dist/components/rich-text-editor/RichTextEditor.js +4 -2
- package/dist/components/search-conversation/item/SearchItemAsGroup.d.ts.map +1 -1
- package/dist/components/search-conversation/item/SearchItemAsGroup.js +3 -3
- package/dist/components/search-conversation/item/SearchItemAsMessage.d.ts.map +1 -1
- package/dist/components/search-conversation/item/SearchItemAsMessage.js +10 -0
- package/dist/components/search-conversation/item/SearchItemAsUser.d.ts.map +1 -1
- package/dist/components/search-conversation/item/SearchItemAsUser.js +6 -0
- package/dist/components/session/DeskAssignedSession.js +2 -2
- package/dist/components/session/FolderRow.js +1 -1
- package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
- package/dist/components/thread/ManualAssignPopover.js +13 -6
- package/dist/components/thread/SessionDetailCard.js +1 -1
- package/dist/components/thread/SessionTagPicker.js +1 -1
- package/dist/components/thread/SupportSessionPanel.d.ts +1 -1
- package/dist/components/thread/SupportSessionPanel.d.ts.map +1 -1
- package/dist/components/thread/SupportSessionPanel.js +1 -1
- package/dist/components/thread/ThreadInfo.d.ts.map +1 -1
- package/dist/components/thread/ThreadInfo.js +3 -1
- package/dist/components/thread/ThreadInfoHeader.d.ts +1 -1
- package/dist/components/thread/ThreadInfoHeader.d.ts.map +1 -1
- package/dist/components/thread/ThreadInfoHeader.js +1 -1
- package/dist/components/thread/UserSection.js +2 -2
- package/dist/constants/layout.d.ts +10 -1
- package/dist/constants/layout.d.ts.map +1 -1
- package/dist/constants/layout.js +10 -1
- package/dist/hooks/common/useDeskShortcuts.d.ts.map +1 -1
- package/dist/hooks/common/useDeskShortcuts.js +3 -1
- package/dist/hooks/common/useIsDeskWorkspaceMounted.d.ts +3 -0
- package/dist/hooks/common/useIsDeskWorkspaceMounted.d.ts.map +1 -0
- package/dist/hooks/common/useIsDeskWorkspaceMounted.js +4 -0
- package/dist/hooks/common/useViewportTier.d.ts +4 -0
- package/dist/hooks/common/useViewportTier.d.ts.map +1 -0
- package/dist/hooks/common/useViewportTier.js +9 -0
- package/dist/hooks/common/useVisualViewportHeight.d.ts +10 -0
- package/dist/hooks/common/useVisualViewportHeight.d.ts.map +1 -0
- package/dist/hooks/common/useVisualViewportHeight.js +30 -0
- package/dist/hooks/conversation/useConsultantChatNavigation.d.ts +12 -0
- package/dist/hooks/conversation/useConsultantChatNavigation.d.ts.map +1 -0
- package/dist/hooks/conversation/useConsultantChatNavigation.js +94 -0
- package/dist/hooks/conversation/useConversationList.d.ts.map +1 -1
- package/dist/hooks/conversation/useConversationList.js +31 -0
- package/dist/hooks/conversation/useDeskOfflineLock.d.ts +9 -0
- package/dist/hooks/conversation/useDeskOfflineLock.d.ts.map +1 -0
- package/dist/hooks/conversation/useDeskOfflineLock.js +46 -0
- package/dist/hooks/conversation/useDeskThreadNavigation.d.ts +19 -0
- package/dist/hooks/conversation/useDeskThreadNavigation.d.ts.map +1 -0
- package/dist/hooks/conversation/useDeskThreadNavigation.js +68 -0
- package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
- package/dist/hooks/global/useGlobalEvent.js +22 -2
- package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
- package/dist/hooks/group/useCreateGroup.js +4 -4
- package/dist/hooks/init/useChatBootPhase.d.ts +30 -0
- package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -0
- package/dist/hooks/init/useChatBootPhase.js +72 -0
- package/dist/hooks/message/useMessage.d.ts +1 -1
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +7 -4
- package/dist/hooks/message/useNewMessageAnnouncement.d.ts.map +1 -1
- package/dist/hooks/message/useNewMessageAnnouncement.js +3 -1
- package/dist/hooks/message/usePinMessage.d.ts +0 -2
- package/dist/hooks/message/usePinMessage.d.ts.map +1 -1
- package/dist/hooks/message/usePinMessage.js +7 -11
- package/dist/hooks/message/useQuotedSenderName.d.ts +14 -0
- package/dist/hooks/message/useQuotedSenderName.d.ts.map +1 -0
- package/dist/hooks/message/useQuotedSenderName.js +41 -0
- package/dist/hooks/user/useAuth.d.ts.map +1 -1
- package/dist/hooks/user/useAuth.js +2 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/locales/i18n.d.ts.map +1 -1
- package/dist/locales/i18n.js +3 -2
- package/dist/locales/i18n.ts +3 -2
- package/dist/locales/vi/boot.json +28 -0
- package/dist/locales/vi/common.json +2 -1
- package/dist/screens/conversation-detail/index.d.ts.map +1 -1
- package/dist/screens/conversation-detail/index.js +28 -4
- package/dist/screens/desk-message/DeskBootCard.d.ts +7 -0
- package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -0
- package/dist/screens/desk-message/DeskBootCard.js +69 -0
- package/dist/screens/desk-message/DeskOfflineOverlay.d.ts +10 -0
- package/dist/screens/desk-message/DeskOfflineOverlay.d.ts.map +1 -0
- package/dist/screens/desk-message/DeskOfflineOverlay.js +11 -0
- package/dist/screens/desk-message/DeskWorkspace.d.ts +7 -1
- package/dist/screens/desk-message/DeskWorkspace.d.ts.map +1 -1
- package/dist/screens/desk-message/DeskWorkspace.js +82 -13
- package/dist/screens/desk-message/DeskWorkspaceSkeleton.d.ts +10 -0
- package/dist/screens/desk-message/DeskWorkspaceSkeleton.d.ts.map +1 -0
- package/dist/screens/desk-message/DeskWorkspaceSkeleton.js +18 -0
- package/dist/screens/desk-message/PhoneThreadFallbackHeader.d.ts +8 -0
- package/dist/screens/desk-message/PhoneThreadFallbackHeader.d.ts.map +1 -0
- package/dist/screens/desk-message/PhoneThreadFallbackHeader.js +11 -0
- package/dist/screens/desk-message/index.d.ts +2 -0
- package/dist/screens/desk-message/index.d.ts.map +1 -1
- package/dist/screens/desk-message/index.js +47 -3
- package/dist/store/boot.d.ts +29 -0
- package/dist/store/boot.d.ts.map +1 -0
- package/dist/store/boot.js +21 -0
- package/dist/store/conversation.d.ts +2 -0
- package/dist/store/conversation.d.ts.map +1 -1
- package/dist/store/conversation.js +16 -12
- package/dist/store/deskPanelHost.d.ts +2 -0
- package/dist/store/deskPanelHost.d.ts.map +1 -1
- package/dist/store/deskPanelHost.js +1 -0
- package/dist/store/type.d.ts +12 -1
- package/dist/store/type.d.ts.map +1 -1
- package/dist/store/workspaceLayout.d.ts +3 -0
- package/dist/store/workspaceLayout.d.ts.map +1 -1
- package/dist/store/workspaceLayout.js +2 -0
- package/dist/styles/global.css +1 -1
- package/dist/types/customMessage.d.ts +17 -0
- package/dist/types/customMessage.d.ts.map +1 -1
- package/dist/types/customMessage.js +8 -0
- package/dist/utils/common.d.ts +2 -0
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +14 -4
- package/dist/utils/conversation.d.ts +1 -0
- package/dist/utils/conversation.d.ts.map +1 -1
- package/dist/utils/conversation.js +1 -1
- package/dist/utils/customMessage.d.ts +7 -1
- package/dist/utils/customMessage.d.ts.map +1 -1
- package/dist/utils/customMessage.js +55 -1
- package/package.json +1 -1
- package/dist/screens/desk-message/ViewportNotice.d.ts +0 -4
- package/dist/screens/desk-message/ViewportNotice.d.ts.map +0 -1
- package/dist/screens/desk-message/ViewportNotice.js +0 -9
|
@@ -3,6 +3,7 @@ import type { MessageItem } from "@droppii-org/wasm-client-sdk";
|
|
|
3
3
|
export declare const CustomMessageType: {
|
|
4
4
|
readonly Order: "Order";
|
|
5
5
|
readonly Product: "Product";
|
|
6
|
+
readonly Event: "CUSTOM_MESSAGE_EVENT";
|
|
6
7
|
};
|
|
7
8
|
export type CustomMessageType = (typeof CustomMessageType)[keyof typeof CustomMessageType];
|
|
8
9
|
export type CustomElemOrderData = {
|
|
@@ -11,12 +12,28 @@ export type CustomElemOrderData = {
|
|
|
11
12
|
timestamp: number;
|
|
12
13
|
checkoutId?: string;
|
|
13
14
|
};
|
|
15
|
+
export declare const MallEventType: {
|
|
16
|
+
readonly Welcome: "MALL_WELCOME";
|
|
17
|
+
readonly FirstOrderWithoutConsultant: "MALL_FIRST_ORDER_WITHOUT_CONSULTANT";
|
|
18
|
+
readonly SelectDroppiiConsultant: "MALL_SELECT_DROPPII_CONSULTANT";
|
|
19
|
+
readonly SelectConsultant: "MALL_SELECT_CONSULTANT";
|
|
20
|
+
};
|
|
21
|
+
export type CustomElemEventData = {
|
|
22
|
+
type: string;
|
|
23
|
+
/** Whitespace-collapsed plain text, fit for previews only. */
|
|
24
|
+
message?: string;
|
|
25
|
+
consultantId?: string;
|
|
26
|
+
consultantName?: string;
|
|
27
|
+
};
|
|
14
28
|
export type CustomMessagePayload = {
|
|
15
29
|
type: typeof CustomMessageType.Order;
|
|
16
30
|
data: CustomElemOrderData;
|
|
17
31
|
} | {
|
|
18
32
|
type: typeof CustomMessageType.Product;
|
|
19
33
|
data: Record<string, unknown>;
|
|
34
|
+
} | {
|
|
35
|
+
type: typeof CustomMessageType.Event;
|
|
36
|
+
data: CustomElemEventData;
|
|
20
37
|
};
|
|
21
38
|
export interface RenderCustomMessageArgs {
|
|
22
39
|
message: MessageItem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customMessage.d.ts","sourceRoot":"","sources":["../../src/types/customMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"customMessage.d.ts","sourceRoot":"","sources":["../../src/types/customMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEhE,eAAO,MAAM,iBAAiB;;;;CAKpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAC3B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,aAAa;;;;;CAKhB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAC,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACzE;IAAE,IAAI,EAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,MAAM,mBAAmB,GAAG,CAChC,IAAI,EAAE,uBAAuB,KAC1B,SAAS,GAAG,IAAI,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
export const CustomMessageType = {
|
|
2
2
|
Order: "Order",
|
|
3
3
|
Product: "Product",
|
|
4
|
+
// Automatic messages chat-service posts into a user's bot thread.
|
|
5
|
+
Event: "CUSTOM_MESSAGE_EVENT",
|
|
6
|
+
};
|
|
7
|
+
export const MallEventType = {
|
|
8
|
+
Welcome: "MALL_WELCOME",
|
|
9
|
+
FirstOrderWithoutConsultant: "MALL_FIRST_ORDER_WITHOUT_CONSULTANT",
|
|
10
|
+
SelectDroppiiConsultant: "MALL_SELECT_DROPPII_CONSULTANT",
|
|
11
|
+
SelectConsultant: "MALL_SELECT_CONSULTANT",
|
|
4
12
|
};
|
package/dist/utils/common.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export declare const isInternalLatestMessage: (latestMsg?: string) => boolean;
|
|
|
29
29
|
export declare const ignoreInternalLatestMessage: (conversations: ConversationItem[], isCrm: boolean) => ConversationItem[];
|
|
30
30
|
export declare const parseLatestMessage: (latestMsg: string, currentUserId?: string, t?: TFunction, conversation?: LatestMessageConversation, options?: {
|
|
31
31
|
includeSenderPrefix?: boolean;
|
|
32
|
+
/** Automatic bot-thread messages; CRM never shows them. */
|
|
33
|
+
showEventMessages?: boolean;
|
|
32
34
|
}) => string;
|
|
33
35
|
export declare const highlightSearch: (text: string, keyword: string, maxLength?: number) => string;
|
|
34
36
|
interface FormatOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAEhB,WAAW,EACX,WAAW,EACZ,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/common.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MessageType, } from "@droppii-org/wasm-client-sdk";
|
|
2
2
|
import dayjs from "dayjs";
|
|
3
3
|
import DOMPurify from "dompurify";
|
|
4
|
+
import { SUPPORT_SYSTEM_SENDER_ID } from "../constants";
|
|
4
5
|
import { CustomMessageType } from "../types/customMessage";
|
|
5
6
|
import { isGroupConversation } from "./imCommon";
|
|
6
7
|
import { getGroupNotificationText, SESSION_END_MARKER, SESSION_START_MARKER, } from "./messageLog";
|
|
@@ -109,6 +110,9 @@ export const generateContentBasedOnMessageType = (contentType, plainText, t, med
|
|
|
109
110
|
case MessageType.RevokeMessage:
|
|
110
111
|
return t ? t("revoked") : "Đã thu hồi tin nhắn";
|
|
111
112
|
case MessageType.CustomMessage: {
|
|
113
|
+
if ((customElem === null || customElem === void 0 ? void 0 : customElem.extension) === CustomMessageType.Event) {
|
|
114
|
+
return (customElem === null || customElem === void 0 ? void 0 : customElem.description) || "";
|
|
115
|
+
}
|
|
112
116
|
if ((customElem === null || customElem === void 0 ? void 0 : customElem.extension) !== CustomMessageType.Order)
|
|
113
117
|
return "";
|
|
114
118
|
const orderCode = (customElem === null || customElem === void 0 ? void 0 : customElem.description) || "";
|
|
@@ -137,7 +141,7 @@ export const ignoreInternalLatestMessage = (conversations, isCrm) => {
|
|
|
137
141
|
return conversations.filter((conversation) => !isInternalLatestMessage(conversation.latestMsg));
|
|
138
142
|
};
|
|
139
143
|
export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, options) => {
|
|
140
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
144
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
141
145
|
if (!latestMsg)
|
|
142
146
|
return "";
|
|
143
147
|
const includeSenderPrefix = (_a = options === null || options === void 0 ? void 0 : options.includeSenderPrefix) !== null && _a !== void 0 ? _a : true;
|
|
@@ -186,8 +190,14 @@ export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, op
|
|
|
186
190
|
if (customData === SESSION_END_MARKER) {
|
|
187
191
|
return translateOrFallback(t, "session_ended", "Phiên chat đã kết thúc");
|
|
188
192
|
}
|
|
189
|
-
if (((_j = msgData.customElem) === null || _j === void 0 ? void 0 : _j.extension) === CustomMessageType.
|
|
190
|
-
const
|
|
193
|
+
if (((_j = msgData.customElem) === null || _j === void 0 ? void 0 : _j.extension) === CustomMessageType.Event) {
|
|
194
|
+
const isSystemEvent = msgData.sendID === SUPPORT_SYSTEM_SENDER_ID;
|
|
195
|
+
return (options === null || options === void 0 ? void 0 : options.showEventMessages) && isSystemEvent
|
|
196
|
+
? formatWithSender(sender, ((_k = msgData.customElem) === null || _k === void 0 ? void 0 : _k.description) || "")
|
|
197
|
+
: "";
|
|
198
|
+
}
|
|
199
|
+
if (((_l = msgData.customElem) === null || _l === void 0 ? void 0 : _l.extension) === CustomMessageType.Order) {
|
|
200
|
+
const orderCode = ((_m = msgData.customElem) === null || _m === void 0 ? void 0 : _m.description) || "";
|
|
191
201
|
return formatWithSender(sender, translateOrFallback(t, "msg_type_order", `[Đơn hàng] ${orderCode}`, { orderCode }));
|
|
192
202
|
}
|
|
193
203
|
return "";
|
|
@@ -211,7 +221,7 @@ export const parseLatestMessage = (latestMsg, currentUserId, t, conversation, op
|
|
|
211
221
|
// notificationElem.detail is raw OpenIM *Tips protocol JSON, not a
|
|
212
222
|
// ready sentence — parse per-type (opUser/group/kickedUserList/...)
|
|
213
223
|
// and build the sentence ourselves.
|
|
214
|
-
return getGroupNotificationText(contentType, (
|
|
224
|
+
return getGroupNotificationText(contentType, (_o = msgData === null || msgData === void 0 ? void 0 : msgData.notificationElem) === null || _o === void 0 ? void 0 : _o.detail, t, msgData === null || msgData === void 0 ? void 0 : msgData.senderNickname);
|
|
215
225
|
default:
|
|
216
226
|
return translateOrFallback(t, "msg_type_unsupported", "Loại tin nhắn không được hỗ trợ");
|
|
217
227
|
}
|
|
@@ -8,6 +8,7 @@ type SupportSessionSource = {
|
|
|
8
8
|
conversationType?: number;
|
|
9
9
|
ex?: string;
|
|
10
10
|
} | null;
|
|
11
|
+
export declare const BOT_SESSION_CONVERSATION_PREFIX = "sg_bot_";
|
|
11
12
|
export declare const resolveSupportSessionOwnerId: (item?: SupportSessionSource) => string;
|
|
12
13
|
/**
|
|
13
14
|
* True when the viewer handles a support session someone else owns (e.g. a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/utils/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAW9B,eAAO,MAAM,sBAAsB,GACjC,IAAI,MAAM,GAAG,SAAS,KACrB,iBAcF,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,MAAM,gBAAgB,KACrB,YAA4D,CAAC;AAEhE,eAAO,MAAM,wBAAwB,GAAI,MAAM,gBAAgB,KAAG,MAOjE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/utils/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,WAAW,EAEZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAW9B,eAAO,MAAM,sBAAsB,GACjC,IAAI,MAAM,GAAG,SAAS,KACrB,iBAcF,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,MAAM,gBAAgB,KACrB,YAA4D,CAAC;AAEhE,eAAO,MAAM,wBAAwB,GAAI,MAAM,gBAAgB,KAAG,MAOjE,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,IAAI,CAAC;AAET,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAEzD,eAAO,MAAM,4BAA4B,GACvC,OAAO,oBAAoB,KAC1B,MAiBF,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,GACpC,MAAM,oBAAoB,GAAG,SAAS,EACtC,eAAe,MAAM,KACpB,OAGF,CAAC;AAEF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,GAAG,IAAI,CAAC;AAET;;;GAGG;AACH,eAAO,MAAM,8BAA8B,GACzC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACpF,OAAO,mBAAmB,GAAG,SAAS,EACtC,eAAe,MAAM,KACpB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAShD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,gBAAgB,YAChB,CAAC;AAEjC,eAAO,MAAM,cAAc,GAAI,MAAM,gBAAgB,YAChB,CAAC;AAEtC,eAAO,MAAM,WAAW,GAAI,MAAM,gBAAgB,YAChB,CAAC;AAEnC,eAAO,MAAM,8BAA8B,GACzC,MAAM,gBAAgB,EACtB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,KACzB,MAKF,CAAC;AAEF,eAAO,MAAM,4BAA4B,GACvC,MAAM,gBAAgB,KACrB,MAAM,GAAG,IAGX,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,UAAU,QAAQ,EAClB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,KACzB,MAIF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,UAAU,QAAQ,8EAIvD,CAAC;AAKF;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B,GAAI,iBAAiB,MAAM,WAG5D,CAAC;AAGT,eAAO,MAAM,4BAA4B,GAAI,SAAS,WAAW,WAKhE,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,+BAA+B,GAC1C,iBAAiB,MAAM,EACvB,aAAa,MAAM,KAClB,MAYF,CAAC"}
|
|
@@ -31,7 +31,7 @@ export const resolveConversationBotId = (item) => {
|
|
|
31
31
|
return "";
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
|
-
const BOT_SESSION_CONVERSATION_PREFIX = "sg_bot_";
|
|
34
|
+
export const BOT_SESSION_CONVERSATION_PREFIX = "sg_bot_";
|
|
35
35
|
export const resolveSupportSessionOwnerId = (item) => {
|
|
36
36
|
var _a, _b, _c, _d;
|
|
37
37
|
if (!item)
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type MessageItem } from "@droppii-org/wasm-client-sdk";
|
|
2
2
|
import { type CustomMessagePayload } from "../types/customMessage";
|
|
3
|
+
/** Any event-tagged custom message, whoever sent it. */
|
|
4
|
+
export declare const isEventCustomMessage: (message: MessageItem) => boolean;
|
|
5
|
+
export declare const isSystemEventMessage: (message: MessageItem) => boolean;
|
|
3
6
|
export declare const isRenderableCustomMessage: (message: MessageItem) => boolean;
|
|
4
7
|
export declare const parseCustomMessagePayload: (message: MessageItem) => CustomMessagePayload | null;
|
|
8
|
+
/** The rich-text HTML chat-service puts in `ex` alongside an event message. */
|
|
9
|
+
export declare const getEventMessageHtml: (message: MessageItem) => string;
|
|
10
|
+
export declare const findConsultantCtaMessageId: (newestFirstMessages: MessageItem[], hasMoreNew: boolean) => string | null;
|
|
5
11
|
//# sourceMappingURL=customMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customMessage.d.ts","sourceRoot":"","sources":["../../src/utils/customMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"customMessage.d.ts","sourceRoot":"","sources":["../../src/utils/customMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,EAKL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAuB/B,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,GAAI,SAAS,WAAW,KAAG,OAEA,CAAC;AAI7D,eAAO,MAAM,oBAAoB,GAAI,SAAS,WAAW,KAAG,OACmB,CAAC;AAEhF,eAAO,MAAM,yBAAyB,GAAI,SAAS,WAAW,KAAG,OAMhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,WAAW,KACnB,oBAAoB,GAAG,IA6BzB,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,mBAAmB,GAAI,SAAS,WAAW,KAAG,MAO1D,CAAC;AAIF,eAAO,MAAM,0BAA0B,GACrC,qBAAqB,WAAW,EAAE,EAClC,YAAY,OAAO,KAClB,MAAM,GAAG,IAUX,CAAC"}
|
|
@@ -1,14 +1,35 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MessageType } from "@droppii-org/wasm-client-sdk";
|
|
2
|
+
import { SUPPORT_SYSTEM_SENDER_ID } from "../constants";
|
|
3
|
+
import { CustomMessageType, MallEventType, } from "../types/customMessage";
|
|
2
4
|
const KNOWN_CUSTOM_MESSAGE_TYPES = Object.values(CustomMessageType);
|
|
5
|
+
const CONSULTANT_SELECTION_EVENTS = [
|
|
6
|
+
MallEventType.SelectConsultant,
|
|
7
|
+
MallEventType.SelectDroppiiConsultant,
|
|
8
|
+
];
|
|
3
9
|
const isCustomElemOrderData = (data) => {
|
|
4
10
|
if (typeof data !== "object" || data === null)
|
|
5
11
|
return false;
|
|
6
12
|
const orderData = data;
|
|
7
13
|
return (typeof orderData.id === "string" && typeof orderData.orderCode === "string");
|
|
8
14
|
};
|
|
15
|
+
const isCustomElemEventData = (data) => typeof data === "object" &&
|
|
16
|
+
data !== null &&
|
|
17
|
+
typeof data.type === "string";
|
|
18
|
+
/** Any event-tagged custom message, whoever sent it. */
|
|
19
|
+
export const isEventCustomMessage = (message) => {
|
|
20
|
+
var _a;
|
|
21
|
+
return (message === null || message === void 0 ? void 0 : message.contentType) === MessageType.CustomMessage &&
|
|
22
|
+
((_a = message === null || message === void 0 ? void 0 : message.customElem) === null || _a === void 0 ? void 0 : _a.extension) === CustomMessageType.Event;
|
|
23
|
+
};
|
|
24
|
+
// Only chat-service (as the OpenIM admin) may send these; anything else
|
|
25
|
+
// using the same extension is a forgery and must not look official.
|
|
26
|
+
export const isSystemEventMessage = (message) => isEventCustomMessage(message) && (message === null || message === void 0 ? void 0 : message.sendID) === SUPPORT_SYSTEM_SENDER_ID;
|
|
9
27
|
export const isRenderableCustomMessage = (message) => {
|
|
10
28
|
var _a;
|
|
11
29
|
const extension = (_a = message === null || message === void 0 ? void 0 : message.customElem) === null || _a === void 0 ? void 0 : _a.extension;
|
|
30
|
+
if (extension === CustomMessageType.Event) {
|
|
31
|
+
return isSystemEventMessage(message);
|
|
32
|
+
}
|
|
12
33
|
return !!extension && KNOWN_CUSTOM_MESSAGE_TYPES.includes(extension);
|
|
13
34
|
};
|
|
14
35
|
export const parseCustomMessagePayload = (message) => {
|
|
@@ -29,8 +50,41 @@ export const parseCustomMessagePayload = (message) => {
|
|
|
29
50
|
? { type: CustomMessageType.Order, data: parsedData }
|
|
30
51
|
: null;
|
|
31
52
|
}
|
|
53
|
+
if (customElem.extension === CustomMessageType.Event) {
|
|
54
|
+
return isCustomElemEventData(parsedData)
|
|
55
|
+
? { type: CustomMessageType.Event, data: parsedData }
|
|
56
|
+
: null;
|
|
57
|
+
}
|
|
32
58
|
return {
|
|
33
59
|
type: CustomMessageType.Product,
|
|
34
60
|
data: parsedData,
|
|
35
61
|
};
|
|
36
62
|
};
|
|
63
|
+
/** The rich-text HTML chat-service puts in `ex` alongside an event message. */
|
|
64
|
+
export const getEventMessageHtml = (message) => {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
try {
|
|
67
|
+
const ex = JSON.parse((message === null || message === void 0 ? void 0 : message.ex) || "{}");
|
|
68
|
+
return ((_b = (_a = ex === null || ex === void 0 ? void 0 : ex.messageInfo) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.content) || "";
|
|
69
|
+
}
|
|
70
|
+
catch (_c) {
|
|
71
|
+
return "";
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
// The newest consultant selection (Droppii included) gets the button when it
|
|
75
|
+
// names a consultant; a window short of the newest messages shows none.
|
|
76
|
+
export const findConsultantCtaMessageId = (newestFirstMessages, hasMoreNew) => {
|
|
77
|
+
if (hasMoreNew)
|
|
78
|
+
return null;
|
|
79
|
+
for (const message of newestFirstMessages) {
|
|
80
|
+
if (!isSystemEventMessage(message))
|
|
81
|
+
continue;
|
|
82
|
+
const payload = parseCustomMessagePayload(message);
|
|
83
|
+
if ((payload === null || payload === void 0 ? void 0 : payload.type) !== CustomMessageType.Event)
|
|
84
|
+
continue;
|
|
85
|
+
if (!CONSULTANT_SELECTION_EVENTS.includes(payload.data.type))
|
|
86
|
+
continue;
|
|
87
|
+
return payload.data.consultantId ? message.clientMsgID : null;
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
};
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportNotice.d.ts","sourceRoot":"","sources":["../../../src/screens/desk-message/ViewportNotice.tsx"],"names":[],"mappings":"AAGA,yFAAyF;AACzF,QAAA,MAAM,cAAc,+CAcnB,CAAC;AAEF,eAAe,cAAc,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useTranslation } from "react-i18next";
|
|
4
|
-
/** Shown instead of the workspace when the window is narrower than the desk supports. */
|
|
5
|
-
const ViewportNotice = () => {
|
|
6
|
-
const { t } = useTranslation();
|
|
7
|
-
return (_jsx("div", { role: "status", className: "flex flex-1 h-screen items-center justify-center bg-gray-5 p-6", "data-cp-name": "ViewportNotice", children: _jsx("p", { className: "rounded-xl bg-white px-6 py-4 text-center text-base text-gray-900 shadow-sm", children: t("viewport_too_narrow") }) }));
|
|
8
|
-
};
|
|
9
|
-
export default ViewportNotice;
|