@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.
- package/dist/components/canned-response/cannedTrigger.d.ts +2 -0
- package/dist/components/canned-response/cannedTrigger.d.ts.map +1 -0
- package/dist/components/canned-response/cannedTrigger.js +3 -0
- package/dist/components/canned-response/insertCannedContent.js +2 -2
- package/dist/components/conversation/ConversationByGroupItem.js +1 -1
- package/dist/components/conversation/ConversationBySessionItem.js +4 -4
- package/dist/components/conversation/internalNotePreview.d.ts +1 -1
- package/dist/components/conversation/internalNotePreview.d.ts.map +1 -1
- package/dist/components/conversation/internalNotePreview.js +22 -3
- package/dist/components/conversation/rowTime.d.ts +2 -2
- package/dist/components/conversation/rowTime.d.ts.map +1 -1
- package/dist/components/conversation/rowTime.js +2 -4
- package/dist/components/conversation-detail/ConversationDetailInput.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationDetailInput.js +8 -3
- package/dist/components/conversation-detail/ConversationMessageList.d.ts.map +1 -1
- package/dist/components/conversation-detail/ConversationMessageList.js +6 -3
- package/dist/components/conversation-detail/bot/BotMenuSheet.d.ts.map +1 -1
- package/dist/components/conversation-detail/bot/BotMenuSheet.js +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.d.ts.map +1 -1
- package/dist/components/conversation-inbox/ConversationInboxList.js +4 -0
- package/dist/components/conversation-inbox/InboxBootStatus.d.ts.map +1 -1
- package/dist/components/conversation-inbox/InboxBootStatus.js +10 -2
- package/dist/components/group/CreateGroupForm.d.ts.map +1 -1
- package/dist/components/group/CreateGroupForm.js +2 -1
- package/dist/components/group/CreateGroupFormCrmView.d.ts.map +1 -1
- package/dist/components/group/CreateGroupFormCrmView.js +1 -1
- package/dist/components/group/GroupMemberPickerCrm.d.ts.map +1 -1
- package/dist/components/group/GroupMemberPickerCrm.js +1 -1
- package/dist/components/media-collection/FileCollection.d.ts.map +1 -1
- package/dist/components/media-collection/FileCollection.js +2 -1
- package/dist/components/media-collection/ImageCollection.d.ts.map +1 -1
- package/dist/components/media-collection/ImageCollection.js +2 -1
- package/dist/components/media-collection/LinkCollection.d.ts.map +1 -1
- package/dist/components/media-collection/LinkCollection.js +14 -26
- package/dist/components/media-collection/VideoCollection.d.ts.map +1 -1
- package/dist/components/media-collection/VideoCollection.js +2 -1
- package/dist/components/media-resources/ResourceScrollContainer.d.ts.map +1 -1
- package/dist/components/media-resources/ResourceScrollContainer.js +34 -2
- package/dist/components/message/GroupMembersDrawer.d.ts.map +1 -1
- package/dist/components/message/GroupMembersDrawer.js +2 -3
- package/dist/components/message/MessageList.d.ts.map +1 -1
- package/dist/components/message/MessageList.js +15 -4
- package/dist/components/message/footer/ActionBar.d.ts.map +1 -1
- package/dist/components/message/footer/ActionBar.js +10 -44
- package/dist/components/message/footer/CannedResponsePlugin.d.ts.map +1 -1
- package/dist/components/message/footer/CannedResponsePlugin.js +3 -2
- package/dist/components/message/footer/EnterHandler.d.ts.map +1 -1
- package/dist/components/message/footer/EnterHandler.js +10 -47
- package/dist/components/message/footer/FilePreview.d.ts.map +1 -1
- package/dist/components/message/footer/FilePreview.js +2 -1
- package/dist/components/message/footer/LinkInputPreview.d.ts +1 -1
- package/dist/components/message/footer/LinkInputPreview.d.ts.map +1 -1
- package/dist/components/message/footer/LinkInputPreview.js +8 -1
- package/dist/components/message/footer/MediaUploadButtons.d.ts.map +1 -1
- package/dist/components/message/footer/MediaUploadButtons.js +4 -7
- package/dist/components/message/footer/index.d.ts.map +1 -1
- package/dist/components/message/footer/index.js +57 -16
- package/dist/components/message/footer/mention/useMentionOptions.d.ts.map +1 -1
- package/dist/components/message/footer/mention/useMentionOptions.js +2 -6
- package/dist/components/message/footer/resetEditorAfterSend.d.ts +7 -0
- package/dist/components/message/footer/resetEditorAfterSend.d.ts.map +1 -0
- package/dist/components/message/footer/resetEditorAfterSend.js +62 -0
- package/dist/components/message/groupMemberMenuCrm.d.ts +4 -4
- package/dist/components/message/groupMemberMenuCrm.d.ts.map +1 -1
- package/dist/components/message/groupMemberMenuCrm.js +73 -60
- package/dist/components/message/item/SystemLogMessage.d.ts.map +1 -1
- package/dist/components/message/item/SystemLogMessage.js +5 -2
- package/dist/components/search-conversation/SearchConversationAsGroups.js +1 -1
- package/dist/components/search-conversation/SearchConversationAsMessages.js +1 -1
- package/dist/components/search-conversation/SearchConversationMyInbox.js +1 -1
- package/dist/components/thread/GroupInfoBodyCrm.d.ts.map +1 -1
- package/dist/components/thread/GroupInfoBodyCrm.js +2 -2
- package/dist/components/thread/GroupThreadInfo.d.ts.map +1 -1
- package/dist/components/thread/GroupThreadInfo.js +2 -6
- package/dist/components/thread/ManualAssignPopover.d.ts.map +1 -1
- package/dist/components/thread/ManualAssignPopover.js +6 -8
- package/dist/components/thread/SessionDetailCard.d.ts.map +1 -1
- package/dist/components/thread/SessionDetailCard.js +3 -3
- package/dist/components/thread/SessionSection.d.ts.map +1 -1
- package/dist/components/thread/SessionSection.js +3 -9
- package/dist/components/thread/SessionTagPicker.d.ts +3 -1
- package/dist/components/thread/SessionTagPicker.d.ts.map +1 -1
- package/dist/components/thread/SessionTagPicker.js +2 -2
- package/dist/components/thread/sessionDateFormat.d.ts +2 -0
- package/dist/components/thread/sessionDateFormat.d.ts.map +1 -1
- package/dist/components/thread/sessionDateFormat.js +6 -0
- package/dist/constants/dateFormat.d.ts +2 -0
- package/dist/constants/dateFormat.d.ts.map +1 -0
- package/dist/constants/dateFormat.js +2 -0
- package/dist/hooks/common/useFetchUrlMetadata.d.ts +1 -0
- package/dist/hooks/common/useFetchUrlMetadata.d.ts.map +1 -1
- package/dist/hooks/conversation/useBotFlow.d.ts.map +1 -1
- package/dist/hooks/conversation/useBotFlow.js +64 -12
- package/dist/hooks/conversation/useCloseBotSession.d.ts +2 -0
- package/dist/hooks/conversation/useCloseBotSession.d.ts.map +1 -1
- package/dist/hooks/conversation/useCloseBotSession.js +17 -1
- package/dist/hooks/global/useGlobalEvent.d.ts.map +1 -1
- package/dist/hooks/global/useGlobalEvent.js +148 -16
- package/dist/hooks/global/useLoginHealth.d.ts +3 -0
- package/dist/hooks/global/useLoginHealth.d.ts.map +1 -0
- package/dist/hooks/global/useLoginHealth.js +55 -0
- package/dist/hooks/group/useCreateGroup.d.ts.map +1 -1
- package/dist/hooks/group/useCreateGroup.js +75 -6
- package/dist/hooks/init/useChatBootPhase.d.ts +2 -0
- package/dist/hooks/init/useChatBootPhase.d.ts.map +1 -1
- package/dist/hooks/init/useChatBootPhase.js +11 -6
- package/dist/hooks/message/useMessage.d.ts.map +1 -1
- package/dist/hooks/message/useMessage.js +97 -28
- package/dist/hooks/message/usePinnedMessages.d.ts.map +1 -1
- package/dist/hooks/message/usePinnedMessages.js +13 -2
- package/dist/hooks/message/useRevokeMessage.d.ts.map +1 -1
- package/dist/hooks/message/useRevokeMessage.js +25 -0
- package/dist/hooks/message/useSendMessage.d.ts +15 -12
- package/dist/hooks/message/useSendMessage.d.ts.map +1 -1
- package/dist/hooks/message/useSendMessage.js +199 -133
- package/dist/hooks/search/useSearchMessage.d.ts.map +1 -1
- package/dist/hooks/search/useSearchMessage.js +57 -3
- package/dist/hooks/session/useConversationSessionState.d.ts.map +1 -1
- package/dist/hooks/session/useConversationSessionState.js +4 -1
- package/dist/hooks/session/useSessionLatestPreview.d.ts.map +1 -1
- package/dist/hooks/session/useSessionLatestPreview.js +34 -4
- package/dist/hooks/user/useAuth.d.ts +1 -1
- package/dist/hooks/user/useAuth.d.ts.map +1 -1
- package/dist/hooks/user/useAuth.js +31 -15
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/locales/vi/boot.json +5 -1
- package/dist/locales/vi/common.json +34 -15
- package/dist/locales/vi/conversation-inbox.json +2 -1
- package/dist/screens/conversation-detail/index.d.ts.map +1 -1
- package/dist/screens/conversation-detail/index.js +6 -0
- package/dist/screens/desk-message/DeskBootCard.d.ts.map +1 -1
- package/dist/screens/desk-message/DeskBootCard.js +6 -4
- package/dist/store/boot.d.ts +5 -0
- package/dist/store/boot.d.ts.map +1 -1
- package/dist/store/boot.js +11 -1
- package/dist/store/conversation.d.ts.map +1 -1
- package/dist/store/conversation.js +5 -1
- package/dist/store/type.d.ts +3 -1
- package/dist/store/type.d.ts.map +1 -1
- package/dist/styles/global.css +1 -1
- package/dist/types/chat.d.ts +1 -1
- package/dist/types/chat.d.ts.map +1 -1
- package/dist/utils/common.d.ts.map +1 -1
- package/dist/utils/common.js +4 -1
- package/dist/utils/fileValidation.d.ts +7 -0
- package/dist/utils/fileValidation.d.ts.map +1 -1
- package/dist/utils/fileValidation.js +37 -13
- package/dist/utils/latestMessagePreviewable.d.ts +2 -0
- package/dist/utils/latestMessagePreviewable.d.ts.map +1 -0
- package/dist/utils/latestMessagePreviewable.js +18 -0
- package/dist/utils/mentionMembers.d.ts +3 -0
- package/dist/utils/mentionMembers.d.ts.map +1 -0
- package/dist/utils/mentionMembers.js +29 -0
- package/dist/utils/messageLog.d.ts +2 -2
- package/dist/utils/messageLog.d.ts.map +1 -1
- package/dist/utils/messageLog.js +129 -40
- package/dist/utils/notifiableMessage.d.ts +7 -0
- package/dist/utils/notifiableMessage.d.ts.map +1 -0
- package/dist/utils/notifiableMessage.js +26 -0
- package/dist/utils/withSdkTimeout.d.ts +11 -0
- package/dist/utils/withSdkTimeout.d.ts.map +1 -0
- package/dist/utils/withSdkTimeout.js +30 -0
- package/package.json +1 -1
package/dist/utils/messageLog.js
CHANGED
|
@@ -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
|
|
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
|
|
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} đã
|
|
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
|
-
|
|
185
|
+
const parseLogPayload = (message) => {
|
|
186
186
|
var _a;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
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(
|
|
202
|
-
return
|
|
191
|
+
const parsed = JSON.parse(raw);
|
|
192
|
+
return parsed && typeof parsed === "object" ? parsed : null;
|
|
203
193
|
}
|
|
204
|
-
catch (
|
|
205
|
-
return
|
|
194
|
+
catch (_b) {
|
|
195
|
+
return null;
|
|
206
196
|
}
|
|
207
197
|
};
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
|
|
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, "<")
|
|
232
|
+
.replace(/>/g, ">")
|
|
233
|
+
.replace(/"/g, """)
|
|
234
|
+
.replace(/'/g, "'");
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
230
|
-
|
|
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
|
+
});
|