@droppii-org/chat-sdk 0.8.1 → 0.8.2

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 (165) 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/internalNotePreview.d.ts +1 -1
  8. package/dist/components/conversation/internalNotePreview.d.ts.map +1 -1
  9. package/dist/components/conversation/internalNotePreview.js +22 -3
  10. package/dist/components/conversation/rowTime.d.ts +2 -2
  11. package/dist/components/conversation/rowTime.d.ts.map +1 -1
  12. package/dist/components/conversation/rowTime.js +2 -4
  13. package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
  14. package/dist/components/conversation-detail/ConversationDetailInput.js +8 -3
  15. package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
  16. package/dist/components/conversation-detail/ConversationMessageList.js +6 -3
  17. package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
  18. package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
  19. package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
  20. package/dist/components/conversation-inbox/ConversationInboxList.js +4 -0
  21. package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -1
  22. package/dist/components/conversation-inbox/InboxBootStatus.js +10 -2
  23. package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
  24. package/dist/components/group/CreateGroupForm.js +2 -1
  25. package/dist/components/group/CreateGroupFormCrmView.d.ts.map +1 -1
  26. package/dist/components/group/CreateGroupFormCrmView.js +1 -1
  27. package/dist/components/group/GroupMemberPickerCrm.d.ts.map +1 -1
  28. package/dist/components/group/GroupMemberPickerCrm.js +1 -1
  29. package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
  30. package/dist/components/media-collection/FileCollection.js +2 -1
  31. package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
  32. package/dist/components/media-collection/ImageCollection.js +2 -1
  33. package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
  34. package/dist/components/media-collection/LinkCollection.js +14 -26
  35. package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
  36. package/dist/components/media-collection/VideoCollection.js +2 -1
  37. package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
  38. package/dist/components/media-resources/ResourceScrollContainer.js +34 -2
  39. package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
  40. package/dist/components/message/GroupMembersDrawer.js +2 -3
  41. package/dist/components/message/MessageList.d.ts.map +1 -1
  42. package/dist/components/message/MessageList.js +15 -4
  43. package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
  44. package/dist/components/message/footer/ActionBar.js +10 -44
  45. package/dist/components/message/footer/CannedResponsePlugin.d.ts.map +1 -1
  46. package/dist/components/message/footer/CannedResponsePlugin.js +3 -2
  47. package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
  48. package/dist/components/message/footer/EnterHandler.js +10 -47
  49. package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
  50. package/dist/components/message/footer/FilePreview.js +2 -1
  51. package/dist/components/message/footer/LinkInputPreview.d.ts +1 -1
  52. package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
  53. package/dist/components/message/footer/LinkInputPreview.js +8 -1
  54. package/dist/components/message/footer/MediaUploadButtons.d.ts.map +1 -1
  55. package/dist/components/message/footer/MediaUploadButtons.js +4 -7
  56. package/dist/components/message/footer/index.d.ts.map +1 -1
  57. package/dist/components/message/footer/index.js +57 -16
  58. package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -1
  59. package/dist/components/message/footer/mention/useMentionOptions.js +2 -6
  60. package/dist/components/message/footer/resetEditorAfterSend.d.ts +7 -0
  61. package/dist/components/message/footer/resetEditorAfterSend.d.ts.map +1 -0
  62. package/dist/components/message/footer/resetEditorAfterSend.js +62 -0
  63. package/dist/components/message/groupMemberMenuCrm.d.ts +4 -4
  64. package/dist/components/message/groupMemberMenuCrm.d.ts.map +1 -1
  65. package/dist/components/message/groupMemberMenuCrm.js +73 -60
  66. package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -1
  67. package/dist/components/message/item/SystemLogMessage.js +5 -2
  68. package/dist/components/search-conversation/SearchConversationAsGroups.js +1 -1
  69. package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
  70. package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
  71. package/dist/components/thread/GroupInfoBodyCrm.d.ts.map +1 -1
  72. package/dist/components/thread/GroupInfoBodyCrm.js +2 -2
  73. package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
  74. package/dist/components/thread/GroupThreadInfo.js +2 -6
  75. package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
  76. package/dist/components/thread/ManualAssignPopover.js +6 -8
  77. package/dist/components/thread/SessionDetailCard.d.ts.map +1 -1
  78. package/dist/components/thread/SessionDetailCard.js +3 -3
  79. package/dist/components/thread/SessionSection.d.ts.map +1 -1
  80. package/dist/components/thread/SessionSection.js +3 -9
  81. package/dist/components/thread/SessionTagPicker.d.ts +3 -1
  82. package/dist/components/thread/SessionTagPicker.d.ts.map +1 -1
  83. package/dist/components/thread/SessionTagPicker.js +2 -2
  84. package/dist/components/thread/sessionDateFormat.d.ts +2 -0
  85. package/dist/components/thread/sessionDateFormat.d.ts.map +1 -1
  86. package/dist/components/thread/sessionDateFormat.js +6 -0
  87. package/dist/constants/dateFormat.d.ts +2 -0
  88. package/dist/constants/dateFormat.d.ts.map +1 -0
  89. package/dist/constants/dateFormat.js +2 -0
  90. package/dist/hooks/common/useFetchUrlMetadata.d.ts +1 -0
  91. package/dist/hooks/common/useFetchUrlMetadata.d.ts.map +1 -1
  92. package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
  93. package/dist/hooks/conversation/useBotFlow.js +64 -12
  94. package/dist/hooks/conversation/useCloseBotSession.d.ts +2 -0
  95. package/dist/hooks/conversation/useCloseBotSession.d.ts.map +1 -1
  96. package/dist/hooks/conversation/useCloseBotSession.js +17 -1
  97. package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
  98. package/dist/hooks/global/useGlobalEvent.js +148 -16
  99. package/dist/hooks/global/useLoginHealth.d.ts +3 -0
  100. package/dist/hooks/global/useLoginHealth.d.ts.map +1 -0
  101. package/dist/hooks/global/useLoginHealth.js +55 -0
  102. package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
  103. package/dist/hooks/group/useCreateGroup.js +75 -6
  104. package/dist/hooks/init/useChatBootPhase.d.ts +2 -0
  105. package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -1
  106. package/dist/hooks/init/useChatBootPhase.js +11 -6
  107. package/dist/hooks/message/useMessage.d.ts.map +1 -1
  108. package/dist/hooks/message/useMessage.js +97 -28
  109. package/dist/hooks/message/usePinnedMessages.d.ts.map +1 -1
  110. package/dist/hooks/message/usePinnedMessages.js +13 -2
  111. package/dist/hooks/message/useRevokeMessage.d.ts.map +1 -1
  112. package/dist/hooks/message/useRevokeMessage.js +25 -0
  113. package/dist/hooks/message/useSendMessage.d.ts +15 -12
  114. package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
  115. package/dist/hooks/message/useSendMessage.js +199 -133
  116. package/dist/hooks/search/useSearchMessage.d.ts.map +1 -1
  117. package/dist/hooks/search/useSearchMessage.js +57 -3
  118. package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
  119. package/dist/hooks/session/useConversationSessionState.js +4 -1
  120. package/dist/hooks/session/useSessionLatestPreview.d.ts.map +1 -1
  121. package/dist/hooks/session/useSessionLatestPreview.js +34 -4
  122. package/dist/hooks/user/useAuth.d.ts +1 -1
  123. package/dist/hooks/user/useAuth.d.ts.map +1 -1
  124. package/dist/hooks/user/useAuth.js +31 -15
  125. package/dist/index.d.ts +1 -0
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +1 -0
  128. package/dist/locales/vi/boot.json +5 -1
  129. package/dist/locales/vi/common.json +34 -15
  130. package/dist/locales/vi/conversation-inbox.json +2 -1
  131. package/dist/screens/conversation-detail/index.d.ts.map +1 -1
  132. package/dist/screens/conversation-detail/index.js +6 -0
  133. package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -1
  134. package/dist/screens/desk-message/DeskBootCard.js +6 -4
  135. package/dist/store/boot.d.ts +5 -0
  136. package/dist/store/boot.d.ts.map +1 -1
  137. package/dist/store/boot.js +11 -1
  138. package/dist/store/conversation.d.ts.map +1 -1
  139. package/dist/store/conversation.js +5 -1
  140. package/dist/store/type.d.ts +3 -1
  141. package/dist/store/type.d.ts.map +1 -1
  142. package/dist/styles/global.css +1 -1
  143. package/dist/types/chat.d.ts +1 -1
  144. package/dist/types/chat.d.ts.map +1 -1
  145. package/dist/utils/common.d.ts.map +1 -1
  146. package/dist/utils/common.js +4 -1
  147. package/dist/utils/fileValidation.d.ts +7 -0
  148. package/dist/utils/fileValidation.d.ts.map +1 -1
  149. package/dist/utils/fileValidation.js +37 -13
  150. package/dist/utils/latestMessagePreviewable.d.ts +2 -0
  151. package/dist/utils/latestMessagePreviewable.d.ts.map +1 -0
  152. package/dist/utils/latestMessagePreviewable.js +18 -0
  153. package/dist/utils/mentionMembers.d.ts +3 -0
  154. package/dist/utils/mentionMembers.d.ts.map +1 -0
  155. package/dist/utils/mentionMembers.js +29 -0
  156. package/dist/utils/messageLog.d.ts +2 -2
  157. package/dist/utils/messageLog.d.ts.map +1 -1
  158. package/dist/utils/messageLog.js +129 -40
  159. package/dist/utils/notifiableMessage.d.ts +7 -0
  160. package/dist/utils/notifiableMessage.d.ts.map +1 -0
  161. package/dist/utils/notifiableMessage.js +26 -0
  162. package/dist/utils/withSdkTimeout.d.ts +11 -0
  163. package/dist/utils/withSdkTimeout.d.ts.map +1 -0
  164. package/dist/utils/withSdkTimeout.js +30 -0
  165. package/package.json +1 -1
@@ -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, "&")
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
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@droppii-org/chat-sdk",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "description": "Droppii React Chat SDK",
5
5
  "repository": {
6
6
  "type": "git",