@droppii-org/chat-sdk 0.8.1 → 0.8.3

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 (191) hide show
  1. package/dist/components/canned-response/cannedTrigger.d.ts +2 -0
  2. package/dist/components/canned-response/cannedTrigger.d.ts.map +1 -0
  3. package/dist/components/canned-response/cannedTrigger.js +3 -0
  4. package/dist/components/canned-response/insertCannedContent.js +2 -2
  5. package/dist/components/conversation/ConversationByGroupItem.js +1 -1
  6. package/dist/components/conversation/ConversationBySessionItem.js +4 -4
  7. package/dist/components/conversation/DeskConversationList.d.ts.map +1 -1
  8. package/dist/components/conversation/DeskConversationList.js +6 -4
  9. package/dist/components/conversation/folderEmptyState.d.ts.map +1 -1
  10. package/dist/components/conversation/folderEmptyState.js +2 -0
  11. package/dist/components/conversation/internalNotePreview.d.ts +1 -1
  12. package/dist/components/conversation/internalNotePreview.d.ts.map +1 -1
  13. package/dist/components/conversation/internalNotePreview.js +22 -3
  14. package/dist/components/conversation/listHeading.d.ts +1 -1
  15. package/dist/components/conversation/listHeading.d.ts.map +1 -1
  16. package/dist/components/conversation/listHeading.js +7 -1
  17. package/dist/components/conversation/rowTime.d.ts +2 -2
  18. package/dist/components/conversation/rowTime.d.ts.map +1 -1
  19. package/dist/components/conversation/rowTime.js +2 -4
  20. package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
  21. package/dist/components/conversation-detail/ConversationDetailInput.js +8 -3
  22. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  23. package/dist/components/conversation-detail/ConversationMessageList.js +6 -3
  24. package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
  25. package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
  26. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  27. package/dist/components/conversation-inbox/ConversationInboxList.js +4 -0
  28. package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -1
  29. package/dist/components/conversation-inbox/InboxBootStatus.js +10 -2
  30. package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
  31. package/dist/components/group/CreateGroupForm.js +2 -1
  32. package/dist/components/group/CreateGroupFormCrmView.d.ts.map +1 -1
  33. package/dist/components/group/CreateGroupFormCrmView.js +1 -1
  34. package/dist/components/group/GroupMemberPickerCrm.d.ts.map +1 -1
  35. package/dist/components/group/GroupMemberPickerCrm.js +1 -1
  36. package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
  37. package/dist/components/media-collection/FileCollection.js +4 -3
  38. package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
  39. package/dist/components/media-collection/ImageCollection.js +2 -1
  40. package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
  41. package/dist/components/media-collection/LinkCollection.js +14 -26
  42. package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
  43. package/dist/components/media-collection/VideoCollection.js +2 -1
  44. package/dist/components/media-resources/FileResourceList.js +2 -2
  45. package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
  46. package/dist/components/media-resources/ResourceScrollContainer.js +34 -2
  47. package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
  48. package/dist/components/message/GroupMembersDrawer.js +2 -3
  49. package/dist/components/message/MessageList.d.ts.map +1 -1
  50. package/dist/components/message/MessageList.js +15 -4
  51. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  52. package/dist/components/message/footer/ActionBar.js +10 -44
  53. package/dist/components/message/footer/CannedResponsePlugin.d.ts.map +1 -1
  54. package/dist/components/message/footer/CannedResponsePlugin.js +3 -2
  55. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  56. package/dist/components/message/footer/EnterHandler.js +10 -47
  57. package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
  58. package/dist/components/message/footer/FilePreview.js +2 -1
  59. package/dist/components/message/footer/LinkInputPreview.d.ts +1 -1
  60. package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
  61. package/dist/components/message/footer/LinkInputPreview.js +8 -1
  62. package/dist/components/message/footer/MediaUploadButtons.d.ts.map +1 -1
  63. package/dist/components/message/footer/MediaUploadButtons.js +4 -7
  64. package/dist/components/message/footer/index.d.ts.map +1 -1
  65. package/dist/components/message/footer/index.js +57 -16
  66. package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -1
  67. package/dist/components/message/footer/mention/useMentionOptions.js +2 -6
  68. package/dist/components/message/footer/resetEditorAfterSend.d.ts +7 -0
  69. package/dist/components/message/footer/resetEditorAfterSend.d.ts.map +1 -0
  70. package/dist/components/message/footer/resetEditorAfterSend.js +62 -0
  71. package/dist/components/message/groupMemberMenuCrm.d.ts +4 -4
  72. package/dist/components/message/groupMemberMenuCrm.d.ts.map +1 -1
  73. package/dist/components/message/groupMemberMenuCrm.js +73 -60
  74. package/dist/components/message/item/FileMessage.js +2 -2
  75. package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -1
  76. package/dist/components/message/item/SystemLogMessage.js +5 -2
  77. package/dist/components/search-conversation/SearchConversationAsGroups.js +1 -1
  78. package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
  79. package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
  80. package/dist/components/session/SessionFolderList.d.ts +4 -3
  81. package/dist/components/session/SessionFolderList.d.ts.map +1 -1
  82. package/dist/components/session/SessionFolderList.js +14 -5
  83. package/dist/components/thread/GroupInfoBodyCrm.d.ts.map +1 -1
  84. package/dist/components/thread/GroupInfoBodyCrm.js +2 -2
  85. package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
  86. package/dist/components/thread/GroupThreadInfo.js +2 -6
  87. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  88. package/dist/components/thread/ManualAssignPopover.js +6 -8
  89. package/dist/components/thread/SessionDetailCard.d.ts.map +1 -1
  90. package/dist/components/thread/SessionDetailCard.js +3 -3
  91. package/dist/components/thread/SessionSection.d.ts.map +1 -1
  92. package/dist/components/thread/SessionSection.js +3 -9
  93. package/dist/components/thread/SessionTagPicker.d.ts +3 -1
  94. package/dist/components/thread/SessionTagPicker.d.ts.map +1 -1
  95. package/dist/components/thread/SessionTagPicker.js +2 -2
  96. package/dist/components/thread/sessionDateFormat.d.ts +2 -0
  97. package/dist/components/thread/sessionDateFormat.d.ts.map +1 -1
  98. package/dist/components/thread/sessionDateFormat.js +6 -0
  99. package/dist/constants/dateFormat.d.ts +2 -0
  100. package/dist/constants/dateFormat.d.ts.map +1 -0
  101. package/dist/constants/dateFormat.js +2 -0
  102. package/dist/hooks/common/useFetchUrlMetadata.d.ts +1 -0
  103. package/dist/hooks/common/useFetchUrlMetadata.d.ts.map +1 -1
  104. package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
  105. package/dist/hooks/conversation/useBotFlow.js +64 -12
  106. package/dist/hooks/conversation/useCloseBotSession.d.ts +2 -0
  107. package/dist/hooks/conversation/useCloseBotSession.d.ts.map +1 -1
  108. package/dist/hooks/conversation/useCloseBotSession.js +17 -1
  109. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  110. package/dist/hooks/global/useGlobalEvent.js +148 -16
  111. package/dist/hooks/global/useLoginHealth.d.ts +3 -0
  112. package/dist/hooks/global/useLoginHealth.d.ts.map +1 -0
  113. package/dist/hooks/global/useLoginHealth.js +55 -0
  114. package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
  115. package/dist/hooks/group/useCreateGroup.js +75 -6
  116. package/dist/hooks/init/useChatBootPhase.d.ts +2 -0
  117. package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -1
  118. package/dist/hooks/init/useChatBootPhase.js +11 -6
  119. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  120. package/dist/hooks/message/useMessage.js +97 -28
  121. package/dist/hooks/message/usePinnedMessages.d.ts.map +1 -1
  122. package/dist/hooks/message/usePinnedMessages.js +13 -2
  123. package/dist/hooks/message/useRevokeMessage.d.ts.map +1 -1
  124. package/dist/hooks/message/useRevokeMessage.js +25 -0
  125. package/dist/hooks/message/useSendMessage.d.ts +15 -12
  126. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  127. package/dist/hooks/message/useSendMessage.js +199 -133
  128. package/dist/hooks/search/useSearchMessage.d.ts.map +1 -1
  129. package/dist/hooks/search/useSearchMessage.js +57 -3
  130. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
  131. package/dist/hooks/session/useConversationSessionState.js +4 -1
  132. package/dist/hooks/session/useGetSession.d.ts.map +1 -1
  133. package/dist/hooks/session/useGetSession.js +2 -0
  134. package/dist/hooks/session/useGetSessionList.d.ts +235 -0
  135. package/dist/hooks/session/useGetSessionList.d.ts.map +1 -0
  136. package/dist/hooks/session/useGetSessionList.js +23 -0
  137. package/dist/hooks/session/useSessionLatestPreview.d.ts.map +1 -1
  138. package/dist/hooks/session/useSessionLatestPreview.js +34 -4
  139. package/dist/hooks/user/useAuth.d.ts +1 -1
  140. package/dist/hooks/user/useAuth.d.ts.map +1 -1
  141. package/dist/hooks/user/useAuth.js +31 -15
  142. package/dist/index.d.ts +1 -0
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +1 -0
  145. package/dist/locales/vi/boot.json +5 -1
  146. package/dist/locales/vi/common.json +35 -15
  147. package/dist/locales/vi/conversation-inbox.json +2 -1
  148. package/dist/screens/conversation-detail/index.d.ts.map +1 -1
  149. package/dist/screens/conversation-detail/index.js +6 -0
  150. package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -1
  151. package/dist/screens/desk-message/DeskBootCard.js +6 -4
  152. package/dist/store/boot.d.ts +5 -0
  153. package/dist/store/boot.d.ts.map +1 -1
  154. package/dist/store/boot.js +11 -1
  155. package/dist/store/conversation.d.ts.map +1 -1
  156. package/dist/store/conversation.js +5 -1
  157. package/dist/store/session.d.ts +1 -13
  158. package/dist/store/session.d.ts.map +1 -1
  159. package/dist/store/session.js +10 -9
  160. package/dist/store/sessionFolder.d.ts +2 -0
  161. package/dist/store/sessionFolder.d.ts.map +1 -1
  162. package/dist/store/sessionFolder.js +3 -1
  163. package/dist/store/type.d.ts +7 -1
  164. package/dist/store/type.d.ts.map +1 -1
  165. package/dist/styles/global.css +1 -1
  166. package/dist/types/chat.d.ts +1 -1
  167. package/dist/types/chat.d.ts.map +1 -1
  168. package/dist/utils/common.d.ts.map +1 -1
  169. package/dist/utils/common.js +4 -1
  170. package/dist/utils/download.d.ts +10 -0
  171. package/dist/utils/download.d.ts.map +1 -1
  172. package/dist/utils/download.js +51 -0
  173. package/dist/utils/fileValidation.d.ts +7 -0
  174. package/dist/utils/fileValidation.d.ts.map +1 -1
  175. package/dist/utils/fileValidation.js +37 -13
  176. package/dist/utils/latestMessagePreviewable.d.ts +2 -0
  177. package/dist/utils/latestMessagePreviewable.d.ts.map +1 -0
  178. package/dist/utils/latestMessagePreviewable.js +18 -0
  179. package/dist/utils/mentionMembers.d.ts +3 -0
  180. package/dist/utils/mentionMembers.d.ts.map +1 -0
  181. package/dist/utils/mentionMembers.js +29 -0
  182. package/dist/utils/messageLog.d.ts +2 -2
  183. package/dist/utils/messageLog.d.ts.map +1 -1
  184. package/dist/utils/messageLog.js +129 -40
  185. package/dist/utils/notifiableMessage.d.ts +7 -0
  186. package/dist/utils/notifiableMessage.d.ts.map +1 -0
  187. package/dist/utils/notifiableMessage.js +26 -0
  188. package/dist/utils/withSdkTimeout.d.ts +11 -0
  189. package/dist/utils/withSdkTimeout.d.ts.map +1 -0
  190. package/dist/utils/withSdkTimeout.js +30 -0
  191. package/package.json +1 -1
@@ -145,7 +145,7 @@ export interface MessageFooterContextType {
145
145
  type: "text" | "file";
146
146
  isInternal: boolean;
147
147
  mentions?: MentionSendPayload;
148
- }) => boolean;
148
+ }) => boolean | Promise<boolean>;
149
149
  isInternal: boolean;
150
150
  setIsInternal: (isInternal: boolean) => void;
151
151
  listUploadFiles: UploadFile[];
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/types/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C,oBAAY,oBAAoB;IAC9B,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,IAAI,SAAS;CACd;AAED,oBAAY,aAAa;IACvB,YAAY,IAAI;IAChB,SAAS,IAAI;IACb,UAAU,IAAI;CACf;AAED,oBAAY,UAAU;IACpB,OAAO,IAAI;IACX,OAAO,IAAI;IACX,MAAM,IAAI;CACX;AAED,oBAAY,UAAU;IACpB,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,aAAa,MAAM;CACpB;AAED,oBAAY,cAAc;IACxB,GAAG,MAAM;CACV;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,GAAG,WAAW,CAAC;AAE5D,oBAAY,WAAW;IACrB,YAAY,iBAAiB;IAC7B,QAAQ,aAAa;IACrB,aAAa,kBAAkB;IAC/B,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC;IAC7B,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,mBAAmB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IAC/C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAKnC,WAAW,CAAC,EAAE,OAAO,CAAC;IAKtB,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,KAAK,CAAC,SAAS,CAAC;CAClF;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAKtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IAKnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAG7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,cAAc,CAAC,EAAE,MAAM,CAAC;IAGxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAKD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACnE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACvC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAG1C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAEnC,WAAW,CAAC,EAAE,OAAO,CAAC;IAGtB,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAG3C,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,KAAK,CAAC,SAAS,CAAC;IAGjF,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,cAAc,CAAC;QACrB,IAAI,EAAE;YACJ,IAAI,EAAE,WAAW,CAAC;YAClB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,oBAAoB,CAAC;IAItC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,aAAa,EAAE,CAAA;KAAE,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,CAAC,EACd,SAAS,EACT,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,QAAQ,GACT,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;QACtB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,kBAAkB,CAAC;KAC/B,KAAK,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,kBAAkB,EAAE,CAClB,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,CAAC,KACzD,IAAI,CAAC;IACV,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,cAAc,CAAC;QACrB,IAAI,EAAE;YACJ,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,WAAW,CAAC;QAClB,IAAI,EAAE;YACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,IAAI,CAAC,EAAE,WAAW,CAAC;YACnB,WAAW,CAAC,EAAE,WAAW,CAAC;SAC3B,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,QAAQ,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,oBAAoB,CAAC;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC;AAED,oBAAY,aAAa;IACvB,UAAU,eAAe;IACzB,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,SAAS,cAAc;CACxB;AAED,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,eAAe,oBAAoB;IACnC,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;CAC1C;AAED,oBAAY,wBAAwB;IAClC,qBAAqB,0BAA0B;IAC/C,cAAc,mBAAmB;IACjC,eAAe,oBAAoB;IAGnC,WAAW,gBAAgB;CAC5B;AAED,oBAAY,0BAA0B;IACpC,IAAI,SAAS;IACb,OAAO,YAAY;CACpB"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/types/chat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/utils/common.ts"],"names":[],"mappings":"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"}
@@ -48,6 +48,9 @@ const getSenderLabelForLatestPreview = (msgData, currentUserId, t, conversation)
48
48
  };
49
49
  const formatWithSender = (sender, content) => sender ? `${sender}: ${content}` : content;
50
50
  export function formatDuration(seconds) {
51
+ // Streams without a known length report Infinity/NaN.
52
+ if (!Number.isFinite(seconds) || seconds < 0)
53
+ return "";
51
54
  const minutes = Math.floor(seconds / 60);
52
55
  const secs = Math.floor(seconds % 60);
53
56
  return `${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
@@ -92,7 +95,7 @@ export const generateContentBasedOnMessageType = (contentType, plainText, t, med
92
95
  case MessageType.MergeMessage:
93
96
  return t ? t("msg_type_image") : "[Hình ảnh]";
94
97
  case MessageType.StickerMessage:
95
- return t ? t("msg_type_sticker") : "[Nhãn dán]";
98
+ return t ? t("msg_type_sticker") : "[Sticker]";
96
99
  case MessageType.VoiceMessage:
97
100
  return t ? t("msg_type_voice") : "[Tin nhắn thoại]";
98
101
  case MessageType.VideoMessage: {
@@ -1,2 +1,12 @@
1
1
  export declare const downloadFileFromUrl: (url: string, fileName?: string) => void;
2
+ export declare const getPreviewMimeType: (fileName?: string, url?: string) => string | undefined;
3
+ /**
4
+ * Open a file in a new tab when the browser can render it, download it otherwise.
5
+ *
6
+ * The storage answers `Content-Disposition: attachment`, so opening its URL
7
+ * always downloads. A previewable file is fetched and shown from a Blob URL typed
8
+ * with its real mime type; if that fetch fails (network, CORS) the file is
9
+ * downloaded instead. The tab is opened inside the click so popup blockers allow it.
10
+ */
11
+ export declare const openFileOrDownload: (url: string, fileName?: string) => Promise<void>;
2
12
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/utils/download.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,SAiBjE,CAAC"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/utils/download.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,GAAI,KAAK,MAAM,EAAE,WAAW,MAAM,SAiBjE,CAAC;AAYF,eAAO,MAAM,kBAAkB,GAC7B,WAAW,MAAM,EACjB,MAAM,MAAM,KACX,MAAM,GAAG,SACiE,CAAC;AAE9E;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAU,KAAK,MAAM,EAAE,WAAW,MAAM,kBA6BtE,CAAC"}
@@ -14,3 +14,54 @@ export const downloadFileFromUrl = (url, fileName) => {
14
14
  link.click();
15
15
  link.remove();
16
16
  };
17
+ /** File types a browser can render inline; anything else is only downloaded. */
18
+ const PREVIEWABLE_FILE_TYPES = {
19
+ pdf: "application/pdf",
20
+ };
21
+ const getFileExtension = (name) => {
22
+ var _a;
23
+ const match = /\.([a-z0-9]+)$/i.exec((_a = name === null || name === void 0 ? void 0 : name.split("?")[0]) !== null && _a !== void 0 ? _a : "");
24
+ return match ? match[1].toLowerCase() : "";
25
+ };
26
+ export const getPreviewMimeType = (fileName, url) => PREVIEWABLE_FILE_TYPES[getFileExtension(fileName) || getFileExtension(url)];
27
+ /**
28
+ * Open a file in a new tab when the browser can render it, download it otherwise.
29
+ *
30
+ * The storage answers `Content-Disposition: attachment`, so opening its URL
31
+ * always downloads. A previewable file is fetched and shown from a Blob URL typed
32
+ * with its real mime type; if that fetch fails (network, CORS) the file is
33
+ * downloaded instead. The tab is opened inside the click so popup blockers allow it.
34
+ */
35
+ export const openFileOrDownload = async (url, fileName) => {
36
+ if (!url || typeof window === "undefined") {
37
+ downloadFileFromUrl(url, fileName);
38
+ return;
39
+ }
40
+ const mimeType = getPreviewMimeType(fileName, url);
41
+ if (!mimeType) {
42
+ downloadFileFromUrl(url, fileName);
43
+ return;
44
+ }
45
+ const previewTab = window.open("", "_blank");
46
+ if (previewTab)
47
+ previewTab.opener = null;
48
+ try {
49
+ const response = await fetch(url);
50
+ if (!response.ok)
51
+ throw new Error(`HTTP ${response.status}`);
52
+ const blob = new Blob([await response.arrayBuffer()], { type: mimeType });
53
+ const blobUrl = URL.createObjectURL(blob);
54
+ if (previewTab) {
55
+ previewTab.location.href = blobUrl;
56
+ }
57
+ else {
58
+ window.open(blobUrl, "_blank");
59
+ }
60
+ // Keep the URL alive while the tab loads it.
61
+ setTimeout(() => URL.revokeObjectURL(blobUrl), 60000);
62
+ }
63
+ catch (_a) {
64
+ previewTab === null || previewTab === void 0 ? void 0 : previewTab.close();
65
+ downloadFileFromUrl(url, fileName);
66
+ }
67
+ };
@@ -2,9 +2,16 @@ import { UploadFile } from "antd";
2
2
  import { TFunction } from "i18next";
3
3
  export declare const ACCEPTED_IMAGE_TYPES: string[];
4
4
  export declare const MAX_IMAGE_SIZE_MB = 15;
5
+ export declare const OBEFE_MAX_IMAGE_SIZE_MB = 5;
5
6
  export declare const MAX_VIDEO_SIZE_MB = 200;
6
7
  export declare const MAX_DOCUMENT_SIZE_MB = 20;
7
8
  export declare const DOCUMENT_MIME_TYPES: string[];
9
+ export declare const getMaxImageSizeMB: () => 5 | 15;
10
+ export type AttachmentKind = "image" | "video" | "document";
11
+ export declare const getAttachmentSizeError: (t: TFunction, file: File, kind: AttachmentKind, maxSize: number) => string;
12
+ export declare const getDocumentFormatError: (t: TFunction, file: File) => string;
13
+ export declare const getImageFormatError: (t: TFunction, file: File) => string;
14
+ export declare const getMediaFormatError: (t: TFunction, file: File) => string;
8
15
  export interface FileValidationOptions {
9
16
  t: TFunction;
10
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fileValidation.d.ts","sourceRoot":"","sources":["../../src/utils/fileValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,oBAAoB,UAAyD,CAAC;AAC3F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,SAAS,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,IAAI,EACV,GAAG,SAAS,KACX,oBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,KAAG,UAO5C,CAAC;AAEH,eAAO,MAAM,2BAA2B,GACtC,OAAO,IAAI,EAAE,EACb,GAAG,SAAS,KACX,UAAU,EA4BZ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,IAAI,EAAE,EACb,SAAS,qBAAqB,KAC7B,UAAU,EAwBZ,CAAC"}
1
+ {"version":3,"file":"fileValidation.d.ts","sourceRoot":"","sources":["../../src/utils/fileValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,UAAU,EAAE,MAAM,MAAM,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIpC,eAAO,MAAM,oBAAoB,UAAyD,CAAC;AAC3F,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,mBAAmB,UAI/B,CAAC;AAYF,eAAO,MAAM,iBAAiB,cAGP,CAAC;AAExB,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE5D,eAAO,MAAM,sBAAsB,GACjC,GAAG,SAAS,EACZ,MAAM,IAAI,EACV,MAAM,cAAc,EACpB,SAAS,MAAM,KACd,MAUI,CAAC;AAER,eAAO,MAAM,sBAAsB,GAAI,GAAG,SAAS,EAAE,MAAM,IAAI,KAAG,MAGP,CAAC;AAE5D,eAAO,MAAM,mBAAmB,GAAI,GAAG,SAAS,EAAE,MAAM,IAAI,KAAG,MAGP,CAAC;AAEzD,eAAO,MAAM,mBAAmB,GAAI,GAAG,SAAS,EAAE,MAAM,IAAI,KAAG,MAGR,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,CAAC,EAAE,SAAS,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GACvB,MAAM,IAAI,EACV,GAAG,SAAS,KACX,oBAuBF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,IAAI,KAAG,UAO5C,CAAC;AAEH,eAAO,MAAM,2BAA2B,GACtC,OAAO,IAAI,EAAE,EACb,GAAG,SAAS,KACX,UAAU,EAuBZ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAClC,OAAO,IAAI,EAAE,EACb,SAAS,qBAAqB,KAC7B,UAAU,EAwBZ,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { message as antdMessage } from "antd";
2
+ import useAuthStore from "../store/auth";
3
+ import { DChatApplicationType } from "../types/chat";
2
4
  export const ACCEPTED_IMAGE_TYPES = ["image/jpeg", "image/png", "image/jpg", "image/webp"];
3
5
  export const MAX_IMAGE_SIZE_MB = 15;
6
+ export const OBEFE_MAX_IMAGE_SIZE_MB = 5;
4
7
  export const MAX_VIDEO_SIZE_MB = 200;
5
8
  export const MAX_DOCUMENT_SIZE_MB = 20;
6
9
  export const DOCUMENT_MIME_TYPES = [
@@ -8,6 +11,35 @@ export const DOCUMENT_MIME_TYPES = [
8
11
  "application/msword",
9
12
  "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
10
13
  ];
14
+ // BIZ (seller) specs word these toasts without the file name; every other
15
+ // surface keeps the file-name wording. Read at validation time because the
16
+ // application type arrives after the SDK mounts.
17
+ const usesBizAttachmentWording = () => {
18
+ const { applicationType, isCrm } = useAuthStore.getState();
19
+ return applicationType === DChatApplicationType.DROPPII && !isCrm;
20
+ };
21
+ // Obefe limits images to 5MB. Read at validation time: the store holds the
22
+ // OBEFE default until ChatContext sets the host's real application type.
23
+ export const getMaxImageSizeMB = () => useAuthStore.getState().applicationType === DChatApplicationType.OBEFE
24
+ ? OBEFE_MAX_IMAGE_SIZE_MB
25
+ : MAX_IMAGE_SIZE_MB;
26
+ export const getAttachmentSizeError = (t, file, kind, maxSize) => usesBizAttachmentWording()
27
+ ? t(`biz_${kind}_size_exceeded`, { maxSize })
28
+ : t(
29
+ // The Obefe spec quotes the name only in the image size error.
30
+ kind === "image" &&
31
+ useAuthStore.getState().applicationType === DChatApplicationType.OBEFE
32
+ ? "obefe_file_size_exceeded"
33
+ : "file_size_exceeded", { fileName: file.name, maxSize });
34
+ export const getDocumentFormatError = (t, file) => usesBizAttachmentWording()
35
+ ? t("biz_document_invalid_format")
36
+ : t("invalid_document_format", { fileName: file.name });
37
+ export const getImageFormatError = (t, file) => usesBizAttachmentWording()
38
+ ? t("biz_image_invalid_format")
39
+ : t("invalid_image_format", { fileName: file.name });
40
+ export const getMediaFormatError = (t, file) => usesBizAttachmentWording()
41
+ ? t("biz_media_invalid_format")
42
+ : t("invalid_file_format", { fileName: file.name });
11
43
  /**
12
44
  * Validates a single file for type and size
13
45
  */
@@ -15,18 +47,13 @@ export const validateFile = (file, t) => {
15
47
  const isImage = ACCEPTED_IMAGE_TYPES.includes(file.type);
16
48
  const isVideo = file.type.startsWith("video/");
17
49
  if (!isImage && !isVideo) {
18
- const error = t("invalid_file_format", {
19
- fileName: file.name,
20
- });
50
+ const error = getMediaFormatError(t, file);
21
51
  return { isValid: false, error };
22
52
  }
23
- const maxSize = isVideo ? MAX_VIDEO_SIZE_MB : MAX_IMAGE_SIZE_MB;
53
+ const maxSize = isVideo ? MAX_VIDEO_SIZE_MB : getMaxImageSizeMB();
24
54
  const fileSizeMB = file.size / 1024 / 1024;
25
55
  if (fileSizeMB > maxSize) {
26
- const error = t("file_size_exceeded", {
27
- fileName: file.name,
28
- maxSize,
29
- });
56
+ const error = getAttachmentSizeError(t, file, isVideo ? "video" : "image", maxSize);
30
57
  return { isValid: false, error };
31
58
  }
32
59
  return { isValid: true };
@@ -44,15 +71,12 @@ export const processAndValidateDocuments = (files, t) => {
44
71
  return files
45
72
  .filter((file) => {
46
73
  if (!DOCUMENT_MIME_TYPES.includes(file.type)) {
47
- antdMessage.error(t("invalid_document_format", { fileName: file.name }));
74
+ antdMessage.error(getDocumentFormatError(t, file));
48
75
  return false;
49
76
  }
50
77
  const fileSizeMB = file.size / 1024 / 1024;
51
78
  if (fileSizeMB > MAX_DOCUMENT_SIZE_MB) {
52
- antdMessage.error(t("file_size_exceeded", {
53
- fileName: file.name,
54
- maxSize: MAX_DOCUMENT_SIZE_MB,
55
- }));
79
+ antdMessage.error(getAttachmentSizeError(t, file, "document", MAX_DOCUMENT_SIZE_MB));
56
80
  return false;
57
81
  }
58
82
  return true;
@@ -0,0 +1,2 @@
1
+ export declare const isPreviewableLatestMessage: (latestMsg?: string) => boolean;
2
+ //# sourceMappingURL=latestMessagePreviewable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"latestMessagePreviewable.d.ts","sourceRoot":"","sources":["../../src/utils/latestMessagePreviewable.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,0BAA0B,GAAI,YAAY,MAAM,KAAG,OAGhB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { parseLatestMessage } from "../utils/common";
2
+ import { SESSION_END_MARKER, SESSION_START_MARKER } from "../utils/messageLog";
3
+ const isSessionMarker = (latestMsg) => {
4
+ var _a, _b;
5
+ try {
6
+ const data = (_b = (_a = JSON.parse(latestMsg)) === null || _a === void 0 ? void 0 : _a.customElem) === null || _b === void 0 ? void 0 : _b.data;
7
+ return data === SESSION_START_MARKER || data === SESSION_END_MARKER;
8
+ }
9
+ catch (_c) {
10
+ return false;
11
+ }
12
+ };
13
+ // Desk rows should show a real message. Logs, session markers and hidden
14
+ // customs parse to nothing (or only a marker line), so the row looks for an
15
+ // older message instead of reading "Chưa có tin nhắn".
16
+ export const isPreviewableLatestMessage = (latestMsg) => Boolean(latestMsg) &&
17
+ !isSessionMarker(latestMsg) &&
18
+ parseLatestMessage(latestMsg) !== "";
@@ -0,0 +1,3 @@
1
+ import type { MentionSendPayload } from "../types/chat";
2
+ export declare const keepCurrentGroupMembersOnly: (groupID: string | undefined, mentions: MentionSendPayload) => Promise<MentionSendPayload>;
3
+ //# sourceMappingURL=mentionMembers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentionMembers.d.ts","sourceRoot":"","sources":["../../src/utils/mentionMembers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAOvD,eAAO,MAAM,2BAA2B,GACtC,SAAS,MAAM,GAAG,SAAS,EAC3B,UAAU,kBAAkB,KAC3B,OAAO,CAAC,kBAAkB,CA6B5B,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { DChatSDK } from "../constants/sdk";
2
+ import { withSdkTimeout } from "../utils/withSdkTimeout";
3
+ // Members can leave between picking an @mention and sending; core rejects or
4
+ // mis-tags the message when the list holds someone who is no longer in the group.
5
+ // An unknown answer (error, timeout, or core's nil result when the group is not
6
+ // in its local joined list yet) keeps the mentions as picked rather than blocking the send.
7
+ export const keepCurrentGroupMembersOnly = async (groupID, mentions) => {
8
+ if (!groupID || mentions.atUserIDList.length === 0)
9
+ return mentions;
10
+ let currentIDs;
11
+ try {
12
+ const { data } = await withSdkTimeout(DChatSDK.getSpecifiedGroupMembersInfo({
13
+ groupID,
14
+ userIDList: mentions.atUserIDList,
15
+ }), "getSpecifiedGroupMembersInfo");
16
+ if (data == null)
17
+ return mentions;
18
+ currentIDs = new Set(data.map((member) => member.userID));
19
+ }
20
+ catch (error) {
21
+ console.warn("mention member lookup failed", error);
22
+ return mentions;
23
+ }
24
+ if (mentions.atUserIDList.every((id) => currentIDs.has(id)))
25
+ return mentions;
26
+ // "Tag all" offsets use the all-members sentinel as userID and are never stale.
27
+ const stale = new Set(mentions.atUserIDList.filter((id) => !currentIDs.has(id)));
28
+ return Object.assign(Object.assign({}, mentions), { atUserIDList: mentions.atUserIDList.filter((id) => !stale.has(id)), atUsersInfo: mentions.atUsersInfo.filter((info) => !stale.has(info.atUserID)), mentionOffsets: mentions.mentionOffsets.filter((offset) => !stale.has(offset.userID)) });
29
+ };
@@ -9,6 +9,6 @@ export declare const GROUP_NOTIFICATION_MESSAGE_TYPES: readonly [MessageType.Gro
9
9
  export declare const isGroupNotificationMessageType: (contentType?: number) => boolean;
10
10
  export declare const getGroupNotificationText: (contentType: number | undefined, detailJson: string | undefined, t?: TFunction, senderNickname?: string) => string;
11
11
  export declare const isSystemLogMessageType: (contentType?: number) => contentType is MessageType.LogTextMessage;
12
- export declare const getSystemLogMessageText: (message: Partial<MessageItem>) => string;
13
- export declare const getSystemLogMessageHtml: (message: Partial<MessageItem>) => string;
12
+ export declare const getSystemLogMessageText: (message: Partial<MessageItem>, viewerId?: string, t?: TFunction) => string;
13
+ export declare const getSystemLogMessageHtml: (message: Partial<MessageItem>, viewerId?: string, t?: TFunction) => string;
14
14
  //# sourceMappingURL=messageLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messageLog.d.ts","sourceRoot":"","sources":["../../src/utils/messageLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,wBAAwB,uCAAwC,CAAC;AAI9E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAKnD,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,CAAC,WAAW,CAAC,YAGf,CAAC;AAEtD,eAAO,MAAM,mBAAmB,GAC9B,SAAS,OAAO,CAAC,WAAW,CAAC,EAC7B,IAAI,SAAS,KACZ,MAQF,CAAC;AAEF,eAAO,MAAM,gCAAgC,6dAmBnC,CAAC;AAEX,eAAO,MAAM,8BAA8B,GAAI,cAAc,MAAM,YAGhE,CAAC;AAoDJ,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,GAAG,SAAS,EAC/B,YAAY,MAAM,GAAG,SAAS,EAC9B,IAAI,SAAS,EACb,iBAAiB,MAAM,KACtB,MAmJF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,MAAM,8CACf,CAAC;AAE7C,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WAyBpE,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,WAAW,CAAC,WA2BpE,CAAC"}
1
+ {"version":3,"file":"messageLog.d.ts","sourceRoot":"","sources":["../../src/utils/messageLog.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EACX,WAAW,EACZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,eAAO,MAAM,wBAAwB,uCAAwC,CAAC;AAI9E,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAKnD,eAAO,MAAM,qBAAqB,GAAI,UAAU,OAAO,CAAC,WAAW,CAAC,YAGf,CAAC;AAEtD,eAAO,MAAM,mBAAmB,GAC9B,SAAS,OAAO,CAAC,WAAW,CAAC,EAC7B,IAAI,SAAS,KACZ,MAQF,CAAC;AAEF,eAAO,MAAM,gCAAgC,6dAmBnC,CAAC;AAEX,eAAO,MAAM,8BAA8B,GAAI,cAAc,MAAM,YAGhE,CAAC;AAoDJ,eAAO,MAAM,wBAAwB,GACnC,aAAa,MAAM,GAAG,SAAS,EAC/B,YAAY,MAAM,GAAG,SAAS,EAC9B,IAAI,SAAS,EACb,iBAAiB,MAAM,KACtB,MAmJF,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,cAAc,MAAM,8CACf,CAAC;AAsI7C,eAAO,MAAM,uBAAuB,GAClC,SAAS,OAAO,CAAC,WAAW,CAAC,EAC7B,WAAW,MAAM,EACjB,IAAI,SAAS,WAed,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,SAAS,OAAO,CAAC,WAAW,CAAC,EAC7B,WAAW,MAAM,EACjB,IAAI,SAAS,WASd,CAAC"}
@@ -100,7 +100,7 @@ export const getGroupNotificationText = (contentType, detailJson, t, senderNickn
100
100
  name: opUserName,
101
101
  groupName: ((_b = detail.group) === null || _b === void 0 ? void 0 : _b.groupName) || "",
102
102
  }))
103
- : `${opUserName} đã đổi tên nhóm thành "${((_c = detail.group) === null || _c === void 0 ? void 0 : _c.groupName) || ""}"`;
103
+ : `${opUserName} đã đổi tên nhóm thành ${((_c = detail.group) === null || _c === void 0 ? void 0 : _c.groupName) || ""}`;
104
104
  case MessageType.GroupAnnouncementUpdated:
105
105
  return t
106
106
  ? String(t("group_notification_announcement_updated", { name: opUserName }))
@@ -117,7 +117,7 @@ export const getGroupNotificationText = (contentType, detailJson, t, senderNickn
117
117
  name: opUserName,
118
118
  newOwner: ((_f = detail.newGroupOwner) === null || _f === void 0 ? void 0 : _f.nickname) || "",
119
119
  }))
120
- : `${opUserName} đã chuyển quyền trưởng nhóm cho ${((_g = detail.newGroupOwner) === null || _g === void 0 ? void 0 : _g.nickname) || ""}`;
120
+ : `${opUserName} đã chuyển quyền chủ nhóm cho ${((_g = detail.newGroupOwner) === null || _g === void 0 ? void 0 : _g.nickname) || ""}`;
121
121
  case MessageType.MemberKicked:
122
122
  return t
123
123
  ? String(t("group_notification_member_kicked", {
@@ -176,57 +176,146 @@ export const getGroupNotificationText = (contentType, detailJson, t, senderNickn
176
176
  name: opUserName,
177
177
  target: ((_r = detail.changedUser) === null || _r === void 0 ? void 0 : _r.nickname) || "",
178
178
  }))
179
- : `${opUserName} đã chỉ định ${((_s = detail.changedUser) === null || _s === void 0 ? void 0 : _s.nickname) || ""} làm quản trị viên`;
179
+ : `${opUserName} đã đặt ${((_s = detail.changedUser) === null || _s === void 0 ? void 0 : _s.nickname) || ""} làm quản trị viên`;
180
180
  default:
181
181
  return "";
182
182
  }
183
183
  };
184
184
  export const isSystemLogMessageType = (contentType) => contentType === MessageType.LogTextMessage;
185
- export const getSystemLogMessageText = (message) => {
185
+ const parseLogPayload = (message) => {
186
186
  var _a;
187
- if ((_a = message.logTextElem) === null || _a === void 0 ? void 0 : _a.content) {
188
- try {
189
- const parsed = JSON.parse(message.logTextElem.content);
190
- return typeof (parsed === null || parsed === void 0 ? void 0 : parsed.message) === "string"
191
- ? parsed.message.trim()
192
- : message.logTextElem.content.trim();
193
- }
194
- catch (_b) {
195
- return message.logTextElem.content.trim();
196
- }
197
- }
198
- if (!message.ex)
199
- return "";
187
+ const raw = ((_a = message.logTextElem) === null || _a === void 0 ? void 0 : _a.content) || message.ex;
188
+ if (!raw)
189
+ return null;
200
190
  try {
201
- const parsed = JSON.parse(message.ex);
202
- return typeof (parsed === null || parsed === void 0 ? void 0 : parsed.message) === "string" ? parsed.message.trim() : "";
191
+ const parsed = JSON.parse(raw);
192
+ return parsed && typeof parsed === "object" ? parsed : null;
203
193
  }
204
- catch (_c) {
205
- return "";
194
+ catch (_b) {
195
+ return null;
206
196
  }
207
197
  };
208
- export const getSystemLogMessageHtml = (message) => {
209
- var _a;
210
- if ((_a = message.logTextElem) === null || _a === void 0 ? void 0 : _a.content) {
211
- try {
212
- const parsed = JSON.parse(message.logTextElem.content);
213
- return typeof (parsed === null || parsed === void 0 ? void 0 : parsed.messageHtml) === "string"
214
- ? parsed.messageHtml.trim()
215
- : "";
216
- }
217
- catch (_b) {
198
+ // vi defaults mirror locales/vi/common.json so callers without `t` still read right.
199
+ const SESSION_LOG_TEMPLATES = {
200
+ ACTOR_REASSIGN_SUPPORTER: {
201
+ key: "system_log_actor_reassign",
202
+ text: "{{actor}} đã bỏ phân công {{old}} và phân công cho {{new}}",
203
+ },
204
+ ACTOR_FIRST_ASSIGN_SUPPORTER: {
205
+ key: "system_log_actor_first_assign",
206
+ text: "{{actor}} đã phân công cho {{new}}",
207
+ },
208
+ SYSTEM_AUTO_ASSIGN_SESSION: {
209
+ key: "system_log_auto_assign",
210
+ text: "Hệ thống đã phân công cho {{new}}",
211
+ },
212
+ SUPPORTER_JOIN_SESSION: {
213
+ key: "system_log_supporter_join",
214
+ text: "{{new}} đã tham gia nhóm",
215
+ },
216
+ SYSTEM_AUTO_REASSIGN_SESSION: {
217
+ key: "system_log_auto_reassign",
218
+ text: "Phân công tự động: hệ thống đã bỏ phân công {{old}} và phân công cho {{new}}",
219
+ },
220
+ SYSTEM_REMOVE_MEMBER_GROUP: {
221
+ key: "system_log_remove_member",
222
+ text: "Hệ thống đã xóa {{old}} khỏi nhóm",
223
+ },
224
+ SUPPORTER_LEAVE_GROUP: {
225
+ key: "system_log_supporter_leave",
226
+ text: "{{actor}} đã rời khỏi nhóm",
227
+ },
228
+ };
229
+ const escapeHtml = (value) => value
230
+ .replace(/&/g, "&amp;")
231
+ .replace(/</g, "&lt;")
232
+ .replace(/>/g, "&gt;")
233
+ .replace(/"/g, "&quot;")
234
+ .replace(/'/g, "&#39;");
235
+ const asId = (value) => typeof value === "string" && value ? value.toLowerCase() : "";
236
+ // Rebuilds the sentence for the viewer only when the viewer is a party to the
237
+ // event; otherwise (or with old logs lacking the fields) the BE text stays as is.
238
+ const buildViewerSessionLog = (payload, viewerId, t, html) => {
239
+ const template = typeof payload.type === "string"
240
+ ? SESSION_LOG_TEMPLATES[payload.type]
241
+ : undefined;
242
+ const viewer = asId(viewerId);
243
+ if (!template || !viewer)
244
+ return null;
245
+ const actor = asId(payload.actorId);
246
+ const oldId = asId(payload.oldSupporterId);
247
+ const newId = asId(payload.newSupporterId);
248
+ if (viewer !== actor && viewer !== oldId && viewer !== newId)
249
+ return null;
250
+ const names = payload.names && typeof payload.names === "object"
251
+ ? payload.names
252
+ : {};
253
+ const lookupName = (id) => {
254
+ var _a;
255
+ const hit = (_a = Object.entries(names).find(([key]) => asId(key) === id)) === null || _a === void 0 ? void 0 : _a[1];
256
+ return typeof hit === "string" && hit ? hit : "";
257
+ };
258
+ const wrap = (value) => html ? `<b>${escapeHtml(value)}</b>` : value;
259
+ const tr = (key, fallback) => t ? String(t(key)) : fallback;
260
+ // Self-assignment reads "chính mình" for everyone, matching the BE wording.
261
+ const resolve = (id, isActorSlot) => {
262
+ if (!id)
218
263
  return "";
264
+ if (isActorSlot) {
265
+ return id === viewer
266
+ ? wrap(tr("system_log_viewer_start", "Bạn"))
267
+ : wrap(lookupName(id));
219
268
  }
269
+ if (actor && id === actor)
270
+ return tr("system_log_self", "chính mình");
271
+ return id === viewer
272
+ ? wrap(tr("system_log_viewer", "bạn"))
273
+ : wrap(lookupName(id));
274
+ };
275
+ const params = {
276
+ actor: resolve(actor, true),
277
+ old: resolve(oldId, false),
278
+ new: resolve(newId, false),
279
+ };
280
+ // A slot the template uses must resolve to a real name.
281
+ const needs = (slot) => template.text.includes(`{{${slot}}}`);
282
+ if ((needs("actor") && (!actor || params.actor === wrap(""))) ||
283
+ (needs("old") && (!oldId || params.old === wrap(""))) ||
284
+ (needs("new") && (!newId || params.new === wrap("")))) {
285
+ return null;
220
286
  }
221
- if (!message.ex)
222
- return "";
223
- try {
224
- const parsed = JSON.parse(message.ex);
225
- return typeof (parsed === null || parsed === void 0 ? void 0 : parsed.messageHtml) === "string"
226
- ? parsed.messageHtml.trim()
227
- : "";
287
+ // The start-of-sentence "Bạn" applies to the new-member slot of join logs too.
288
+ if (payload.type === "SUPPORTER_JOIN_SESSION" && newId === viewer) {
289
+ params.new = wrap(tr("system_log_viewer_start", "Bạn"));
228
290
  }
229
- catch (_c) {
230
- return "";
291
+ const sentence = t
292
+ ? String(t(template.key, params))
293
+ : template.text.replace(/\{\{(actor|old|new)\}\}/g, (_, slot) => { var _a; return (_a = params[slot]) !== null && _a !== void 0 ? _a : ""; });
294
+ return html ? `<span>${sentence}</span>` : sentence;
295
+ };
296
+ export const getSystemLogMessageText = (message, viewerId, t) => {
297
+ var _a;
298
+ const payload = parseLogPayload(message);
299
+ if (payload) {
300
+ const rebuilt = buildViewerSessionLog(payload, viewerId, t, false);
301
+ if (rebuilt)
302
+ return rebuilt;
303
+ }
304
+ if ((_a = message.logTextElem) === null || _a === void 0 ? void 0 : _a.content) {
305
+ return typeof (payload === null || payload === void 0 ? void 0 : payload.message) === "string"
306
+ ? payload.message.trim()
307
+ : message.logTextElem.content.trim();
231
308
  }
309
+ return typeof (payload === null || payload === void 0 ? void 0 : payload.message) === "string" ? payload.message.trim() : "";
310
+ };
311
+ export const getSystemLogMessageHtml = (message, viewerId, t) => {
312
+ const payload = parseLogPayload(message);
313
+ if (!payload)
314
+ return "";
315
+ const rebuilt = buildViewerSessionLog(payload, viewerId, t, true);
316
+ if (rebuilt)
317
+ return rebuilt;
318
+ return typeof payload.messageHtml === "string"
319
+ ? payload.messageHtml.trim()
320
+ : "";
232
321
  };
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Whether a conversation's latest message deserves a browser notification: a real
3
+ * message from someone else. Own sends, system logs, group notices and session
4
+ * markers stay silent.
5
+ */
6
+ export declare const isNotifiableLatestMessage: (latestMsg: string | undefined, selfUserID: string | undefined) => boolean;
7
+ //# sourceMappingURL=notifiableMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifiableMessage.d.ts","sourceRoot":"","sources":["../../src/utils/notifiableMessage.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,GACpC,WAAW,MAAM,GAAG,SAAS,EAC7B,YAAY,MAAM,GAAG,SAAS,KAC7B,OAgBF,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { isEventCustomMessage } from "../utils/customMessage";
2
+ import { isGroupNotificationMessageType, isSessionEventMessage, isSystemLogMessageType, } from "../utils/messageLog";
3
+ /**
4
+ * Whether a conversation's latest message deserves a browser notification: a real
5
+ * message from someone else. Own sends, system logs, group notices and session
6
+ * markers stay silent.
7
+ */
8
+ export const isNotifiableLatestMessage = (latestMsg, selfUserID) => {
9
+ if (!latestMsg)
10
+ return false;
11
+ let message;
12
+ try {
13
+ message = JSON.parse(latestMsg);
14
+ }
15
+ catch (_a) {
16
+ return false;
17
+ }
18
+ if (!(message === null || message === void 0 ? void 0 : message.contentType))
19
+ return false;
20
+ if (selfUserID && message.sendID === selfUserID)
21
+ return false;
22
+ return !(isSystemLogMessageType(message.contentType) ||
23
+ isGroupNotificationMessageType(message.contentType) ||
24
+ isSessionEventMessage(message) ||
25
+ isEventCustomMessage(message));
26
+ };
@@ -0,0 +1,11 @@
1
+ export declare const SDK_CALL_TIMEOUT_MS = 15000;
2
+ /** Failure of an SDK call, carrying core's error code when it sent one. */
3
+ export declare class SdkCallError extends Error {
4
+ readonly code?: number;
5
+ constructor(label: string, cause?: unknown);
6
+ }
7
+ export declare class SdkTimeoutError extends SdkCallError {
8
+ constructor(label: string, ms: number);
9
+ }
10
+ export declare const withSdkTimeout: <T>(promise: Promise<T>, label: string, ms?: number) => Promise<T>;
11
+ //# sourceMappingURL=withSdkTimeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withSdkTimeout.d.ts","sourceRoot":"","sources":["../../src/utils/withSdkTimeout.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,2EAA2E;AAC3E,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAO3C;AAED,qBAAa,eAAgB,SAAQ,YAAY;gBACnC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM;CAKtC;AAED,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,SAAS,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,MAAM,EACb,WAAwB,KACvB,OAAO,CAAC,CAAC,CAaR,CAAC"}
@@ -0,0 +1,30 @@
1
+ // A wasm call whose worker or connection stalled never settles (core's own RPC
2
+ // timeout is over an hour), which froze the composer and the group dialog.
3
+ export const SDK_CALL_TIMEOUT_MS = 15000;
4
+ /** Failure of an SDK call, carrying core's error code when it sent one. */
5
+ export class SdkCallError extends Error {
6
+ constructor(label, cause) {
7
+ const { errCode, errMsg } = (cause !== null && cause !== void 0 ? cause : {});
8
+ super(`${label} failed${errMsg ? `: ${errMsg}` : ""}`);
9
+ this.name = "SdkCallError";
10
+ this.code = errCode;
11
+ this.cause = cause;
12
+ }
13
+ }
14
+ export class SdkTimeoutError extends SdkCallError {
15
+ constructor(label, ms) {
16
+ super(label);
17
+ this.message = `${label} timed out after ${ms}ms`;
18
+ this.name = "SdkTimeoutError";
19
+ }
20
+ }
21
+ export const withSdkTimeout = (promise, label, ms = SDK_CALL_TIMEOUT_MS) => new Promise((resolve, reject) => {
22
+ const timer = setTimeout(() => reject(new SdkTimeoutError(label, ms)), ms);
23
+ promise.then((value) => {
24
+ clearTimeout(timer);
25
+ resolve(value);
26
+ }, (error) => {
27
+ clearTimeout(timer);
28
+ reject(error instanceof SdkCallError ? error : new SdkCallError(label, error));
29
+ });
30
+ });