@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.
Files changed (211) hide show
  1. package/dist/components/boot/BootProgressBar.d.ts +13 -0
  2. package/dist/components/boot/BootProgressBar.d.ts.map +1 -0
  3. package/dist/components/boot/BootProgressBar.js +18 -0
  4. package/dist/components/canned-response/CannedResponsePanel.d.ts.map +1 -1
  5. package/dist/components/canned-response/CannedResponsePanel.js +2 -2
  6. package/dist/components/common/BottomSheet.d.ts +18 -0
  7. package/dist/components/common/BottomSheet.d.ts.map +1 -0
  8. package/dist/components/common/BottomSheet.js +49 -0
  9. package/dist/components/common/DeskPanelDrawer.d.ts.map +1 -1
  10. package/dist/components/common/DeskPanelDrawer.js +29 -15
  11. package/dist/components/common/DeskSidePanel.d.ts.map +1 -1
  12. package/dist/components/common/DeskSidePanel.js +1 -1
  13. package/dist/components/compose/ComposeNewMessageModal.d.ts.map +1 -1
  14. package/dist/components/compose/ComposeNewMessageModal.js +3 -3
  15. package/dist/components/conversation/ConversationByGroupItem.d.ts.map +1 -1
  16. package/dist/components/conversation/ConversationByGroupItem.js +3 -8
  17. package/dist/components/conversation/ConversationBySessionItem.d.ts.map +1 -1
  18. package/dist/components/conversation/ConversationBySessionItem.js +3 -8
  19. package/dist/components/conversation/DeskConversationList.d.ts +4 -1
  20. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  21. package/dist/components/conversation/DeskConversationList.js +2 -2
  22. package/dist/components/conversation/DeskListHeader.d.ts +2 -0
  23. package/dist/components/conversation/DeskListHeader.d.ts.map +1 -1
  24. package/dist/components/conversation/DeskListHeader.js +3 -3
  25. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  26. package/dist/components/conversation-detail/ConversationMessageList.js +23 -5
  27. package/dist/components/conversation-inbox/ConversationInboxItem.d.ts.map +1 -1
  28. package/dist/components/conversation-inbox/ConversationInboxItem.js +1 -1
  29. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  30. package/dist/components/conversation-inbox/ConversationInboxList.js +12 -3
  31. package/dist/components/conversation-inbox/InboxBootStatus.d.ts +10 -0
  32. package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -0
  33. package/dist/components/conversation-inbox/InboxBootStatus.js +34 -0
  34. package/dist/components/conversation-inbox/InboxListSkeleton.d.ts +6 -0
  35. package/dist/components/conversation-inbox/InboxListSkeleton.d.ts.map +1 -0
  36. package/dist/components/conversation-inbox/InboxListSkeleton.js +8 -0
  37. package/dist/components/group/GroupPanelHeader.js +1 -1
  38. package/dist/components/icon/strokeIconNodes.d.ts +6 -0
  39. package/dist/components/icon/strokeIconNodes.d.ts.map +1 -1
  40. package/dist/components/icon/strokeIconNodes.js +5 -0
  41. package/dist/components/message/MessageHeader.d.ts +3 -1
  42. package/dist/components/message/MessageHeader.d.ts.map +1 -1
  43. package/dist/components/message/MessageHeader.js +10 -6
  44. package/dist/components/message/MessageList.d.ts +2 -0
  45. package/dist/components/message/MessageList.d.ts.map +1 -1
  46. package/dist/components/message/MessageList.js +15 -4
  47. package/dist/components/message/SelectSession.js +1 -1
  48. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  49. package/dist/components/message/footer/ActionBar.js +2 -2
  50. package/dist/components/message/footer/ComposerTabs.js +1 -1
  51. package/dist/components/message/footer/CrmComposerCard.js +1 -1
  52. package/dist/components/message/footer/EmojiPicker.d.ts +3 -1
  53. package/dist/components/message/footer/EmojiPicker.d.ts.map +1 -1
  54. package/dist/components/message/footer/EmojiPicker.js +3 -2
  55. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  56. package/dist/components/message/footer/EnterHandler.js +16 -2
  57. package/dist/components/message/footer/MediaActions.d.ts +2 -1
  58. package/dist/components/message/footer/MediaActions.d.ts.map +1 -1
  59. package/dist/components/message/footer/MediaActions.js +4 -4
  60. package/dist/components/message/footer/ToolbarPlugin.js +1 -1
  61. package/dist/components/message/footer/mention/MentionMenu.js +1 -1
  62. package/dist/components/message/headerIconButton.js +1 -1
  63. package/dist/components/message/item/ConsultantChatButton.d.ts +6 -0
  64. package/dist/components/message/item/ConsultantChatButton.d.ts.map +1 -0
  65. package/dist/components/message/item/ConsultantChatButton.js +19 -0
  66. package/dist/components/message/item/CustomMessage.d.ts.map +1 -1
  67. package/dist/components/message/item/CustomMessage.js +6 -1
  68. package/dist/components/message/item/EventMessage.d.ts +11 -0
  69. package/dist/components/message/item/EventMessage.d.ts.map +1 -0
  70. package/dist/components/message/item/EventMessage.js +28 -0
  71. package/dist/components/message/item/MessageMoreButton.d.ts.map +1 -1
  72. package/dist/components/message/item/MessageMoreButton.js +18 -5
  73. package/dist/components/message/item/QuoteMessage.d.ts.map +1 -1
  74. package/dist/components/message/item/QuoteMessage.js +3 -50
  75. package/dist/components/message/item/consultantCta.d.ts +8 -0
  76. package/dist/components/message/item/consultantCta.d.ts.map +1 -0
  77. package/dist/components/message/item/consultantCta.js +5 -0
  78. package/dist/components/message/item/index.d.ts.map +1 -1
  79. package/dist/components/message/item/index.js +10 -4
  80. package/dist/components/message/item/otherSenders.d.ts.map +1 -1
  81. package/dist/components/message/item/otherSenders.js +4 -1
  82. package/dist/components/message/reply/ReplyPreviewBar.d.ts.map +1 -1
  83. package/dist/components/message/reply/ReplyPreviewBar.js +4 -13
  84. package/dist/components/rich-text-editor/RichTextEditor.d.ts +3 -1
  85. package/dist/components/rich-text-editor/RichTextEditor.d.ts.map +1 -1
  86. package/dist/components/rich-text-editor/RichTextEditor.js +4 -2
  87. package/dist/components/search-conversation/item/SearchItemAsGroup.d.ts.map +1 -1
  88. package/dist/components/search-conversation/item/SearchItemAsGroup.js +3 -3
  89. package/dist/components/search-conversation/item/SearchItemAsMessage.d.ts.map +1 -1
  90. package/dist/components/search-conversation/item/SearchItemAsMessage.js +10 -0
  91. package/dist/components/search-conversation/item/SearchItemAsUser.d.ts.map +1 -1
  92. package/dist/components/search-conversation/item/SearchItemAsUser.js +6 -0
  93. package/dist/components/session/DeskAssignedSession.js +2 -2
  94. package/dist/components/session/FolderRow.js +1 -1
  95. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  96. package/dist/components/thread/ManualAssignPopover.js +13 -6
  97. package/dist/components/thread/SessionDetailCard.js +1 -1
  98. package/dist/components/thread/SessionTagPicker.js +1 -1
  99. package/dist/components/thread/SupportSessionPanel.d.ts +1 -1
  100. package/dist/components/thread/SupportSessionPanel.d.ts.map +1 -1
  101. package/dist/components/thread/SupportSessionPanel.js +1 -1
  102. package/dist/components/thread/ThreadInfo.d.ts.map +1 -1
  103. package/dist/components/thread/ThreadInfo.js +3 -1
  104. package/dist/components/thread/ThreadInfoHeader.d.ts +1 -1
  105. package/dist/components/thread/ThreadInfoHeader.d.ts.map +1 -1
  106. package/dist/components/thread/ThreadInfoHeader.js +1 -1
  107. package/dist/components/thread/UserSection.js +2 -2
  108. package/dist/constants/layout.d.ts +10 -1
  109. package/dist/constants/layout.d.ts.map +1 -1
  110. package/dist/constants/layout.js +10 -1
  111. package/dist/hooks/common/useDeskShortcuts.d.ts.map +1 -1
  112. package/dist/hooks/common/useDeskShortcuts.js +3 -1
  113. package/dist/hooks/common/useIsDeskWorkspaceMounted.d.ts +3 -0
  114. package/dist/hooks/common/useIsDeskWorkspaceMounted.d.ts.map +1 -0
  115. package/dist/hooks/common/useIsDeskWorkspaceMounted.js +4 -0
  116. package/dist/hooks/common/useViewportTier.d.ts +4 -0
  117. package/dist/hooks/common/useViewportTier.d.ts.map +1 -0
  118. package/dist/hooks/common/useViewportTier.js +9 -0
  119. package/dist/hooks/common/useVisualViewportHeight.d.ts +10 -0
  120. package/dist/hooks/common/useVisualViewportHeight.d.ts.map +1 -0
  121. package/dist/hooks/common/useVisualViewportHeight.js +30 -0
  122. package/dist/hooks/conversation/useConsultantChatNavigation.d.ts +12 -0
  123. package/dist/hooks/conversation/useConsultantChatNavigation.d.ts.map +1 -0
  124. package/dist/hooks/conversation/useConsultantChatNavigation.js +94 -0
  125. package/dist/hooks/conversation/useConversationList.d.ts.map +1 -1
  126. package/dist/hooks/conversation/useConversationList.js +31 -0
  127. package/dist/hooks/conversation/useDeskOfflineLock.d.ts +9 -0
  128. package/dist/hooks/conversation/useDeskOfflineLock.d.ts.map +1 -0
  129. package/dist/hooks/conversation/useDeskOfflineLock.js +46 -0
  130. package/dist/hooks/conversation/useDeskThreadNavigation.d.ts +19 -0
  131. package/dist/hooks/conversation/useDeskThreadNavigation.d.ts.map +1 -0
  132. package/dist/hooks/conversation/useDeskThreadNavigation.js +68 -0
  133. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  134. package/dist/hooks/global/useGlobalEvent.js +22 -2
  135. package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
  136. package/dist/hooks/group/useCreateGroup.js +4 -4
  137. package/dist/hooks/init/useChatBootPhase.d.ts +30 -0
  138. package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -0
  139. package/dist/hooks/init/useChatBootPhase.js +72 -0
  140. package/dist/hooks/message/useMessage.d.ts +1 -1
  141. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  142. package/dist/hooks/message/useMessage.js +7 -4
  143. package/dist/hooks/message/useNewMessageAnnouncement.d.ts.map +1 -1
  144. package/dist/hooks/message/useNewMessageAnnouncement.js +3 -1
  145. package/dist/hooks/message/usePinMessage.d.ts +0 -2
  146. package/dist/hooks/message/usePinMessage.d.ts.map +1 -1
  147. package/dist/hooks/message/usePinMessage.js +7 -11
  148. package/dist/hooks/message/useQuotedSenderName.d.ts +14 -0
  149. package/dist/hooks/message/useQuotedSenderName.d.ts.map +1 -0
  150. package/dist/hooks/message/useQuotedSenderName.js +41 -0
  151. package/dist/hooks/user/useAuth.d.ts.map +1 -1
  152. package/dist/hooks/user/useAuth.js +2 -0
  153. package/dist/index.d.ts +7 -3
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +6 -2
  156. package/dist/locales/i18n.d.ts.map +1 -1
  157. package/dist/locales/i18n.js +3 -2
  158. package/dist/locales/i18n.ts +3 -2
  159. package/dist/locales/vi/boot.json +28 -0
  160. package/dist/locales/vi/common.json +2 -1
  161. package/dist/screens/conversation-detail/index.d.ts.map +1 -1
  162. package/dist/screens/conversation-detail/index.js +28 -4
  163. package/dist/screens/desk-message/DeskBootCard.d.ts +7 -0
  164. package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -0
  165. package/dist/screens/desk-message/DeskBootCard.js +69 -0
  166. package/dist/screens/desk-message/DeskOfflineOverlay.d.ts +10 -0
  167. package/dist/screens/desk-message/DeskOfflineOverlay.d.ts.map +1 -0
  168. package/dist/screens/desk-message/DeskOfflineOverlay.js +11 -0
  169. package/dist/screens/desk-message/DeskWorkspace.d.ts +7 -1
  170. package/dist/screens/desk-message/DeskWorkspace.d.ts.map +1 -1
  171. package/dist/screens/desk-message/DeskWorkspace.js +82 -13
  172. package/dist/screens/desk-message/DeskWorkspaceSkeleton.d.ts +10 -0
  173. package/dist/screens/desk-message/DeskWorkspaceSkeleton.d.ts.map +1 -0
  174. package/dist/screens/desk-message/DeskWorkspaceSkeleton.js +18 -0
  175. package/dist/screens/desk-message/PhoneThreadFallbackHeader.d.ts +8 -0
  176. package/dist/screens/desk-message/PhoneThreadFallbackHeader.d.ts.map +1 -0
  177. package/dist/screens/desk-message/PhoneThreadFallbackHeader.js +11 -0
  178. package/dist/screens/desk-message/index.d.ts +2 -0
  179. package/dist/screens/desk-message/index.d.ts.map +1 -1
  180. package/dist/screens/desk-message/index.js +47 -3
  181. package/dist/store/boot.d.ts +29 -0
  182. package/dist/store/boot.d.ts.map +1 -0
  183. package/dist/store/boot.js +21 -0
  184. package/dist/store/conversation.d.ts +2 -0
  185. package/dist/store/conversation.d.ts.map +1 -1
  186. package/dist/store/conversation.js +16 -12
  187. package/dist/store/deskPanelHost.d.ts +2 -0
  188. package/dist/store/deskPanelHost.d.ts.map +1 -1
  189. package/dist/store/deskPanelHost.js +1 -0
  190. package/dist/store/type.d.ts +12 -1
  191. package/dist/store/type.d.ts.map +1 -1
  192. package/dist/store/workspaceLayout.d.ts +3 -0
  193. package/dist/store/workspaceLayout.d.ts.map +1 -1
  194. package/dist/store/workspaceLayout.js +2 -0
  195. package/dist/styles/global.css +1 -1
  196. package/dist/types/customMessage.d.ts +17 -0
  197. package/dist/types/customMessage.d.ts.map +1 -1
  198. package/dist/types/customMessage.js +8 -0
  199. package/dist/utils/common.d.ts +2 -0
  200. package/dist/utils/common.d.ts.map +1 -1
  201. package/dist/utils/common.js +14 -4
  202. package/dist/utils/conversation.d.ts +1 -0
  203. package/dist/utils/conversation.d.ts.map +1 -1
  204. package/dist/utils/conversation.js +1 -1
  205. package/dist/utils/customMessage.d.ts +7 -1
  206. package/dist/utils/customMessage.d.ts.map +1 -1
  207. package/dist/utils/customMessage.js +55 -1
  208. package/package.json +1 -1
  209. package/dist/screens/desk-message/ViewportNotice.d.ts +0 -4
  210. package/dist/screens/desk-message/ViewportNotice.d.ts.map +0 -1
  211. 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;;;CAGpB,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,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,CAAC;AAE9E,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
+ {"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
  };
@@ -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;AACpC,OAAO,EAAqB,eAAe,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAShD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,eAAO,MAAM,iBAAiB,GAC5B,aAAa,MAAM,EACnB,WAAW,MAAM,KAChB,MAAmE,CAAC;AAEvE,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,UAAU,MAAM,KAAG,OAAO,CAAC,CAAC,CAQlE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,eAAe,GAAG,SAQhE,CAAC;AA+BF,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAapD;AAED,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,UAAS,sBAA2B,WAoBrC,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,aAAa,WAAW,EACxB,YAAY,MAAM,EAClB,IAAI,SAAS,EACb,YAAY;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,EACpD,aAAa;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,WAyC1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,YAAY,MAAM,KAAG,OAS5D,CAAC;AAEF,eAAO,MAAM,2BAA2B,GACtC,eAAe,gBAAgB,EAAE,EACjC,OAAO,OAAO,KACb,gBAAgB,EAMlB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,IAAI,SAAS,EACb,eAAe,yBAAyB,EACxC,UAAU;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAE,WAkH5C,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,MAAM,EACZ,SAAS,MAAM,EACf,kBAAc,WA2Cf,CAAC;AAEF,UAAU,aAAa;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,MAAM,CAqBR;AAMD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,eAAO,MAAM,QAAQ,QAAiD,CAAC;AAEvE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAwC3D;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAOrD,CAAC;AAKF,eAAO,MAAM,iBAAiB,GAAI,MAAM,MAAM,KAAG,OACf,CAAC;AAEnC,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,MAO9B,CAAC;AAEZ;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAoEjD"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"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"}
@@ -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.Order) {
190
- const orderCode = ((_k = msgData.customElem) === null || _k === void 0 ? void 0 : _k.description) || "";
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, (_l = msgData === null || msgData === void 0 ? void 0 : msgData.notificationElem) === null || _l === void 0 ? void 0 : _l.detail, t, msgData === null || msgData === void 0 ? void 0 : msgData.senderNickname);
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;AAIT,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"}
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 { MessageItem } from "@droppii-org/wasm-client-sdk";
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,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC;AAY/B,eAAO,MAAM,yBAAyB,GAAI,SAAS,WAAW,KAAG,OAGhE,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,SAAS,WAAW,KACnB,oBAAoB,GAAG,IAuBzB,CAAC"}
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 { CustomMessageType, } from "../types/customMessage";
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-sdk",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "Droppii React Chat SDK",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,4 +0,0 @@
1
- /** Shown instead of the workspace when the window is narrower than the desk supports. */
2
- declare const ViewportNotice: () => import("react/jsx-runtime").JSX.Element;
3
- export default ViewportNotice;
4
- //# sourceMappingURL=ViewportNotice.d.ts.map
@@ -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;