@onyx-p/imlib-web 1.7.0 → 1.7.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.
- package/index.esm.js +36 -11
- package/index.umd.js +36 -11
- package/package.json +1 -1
- package/types/types.d.ts +3 -1
package/index.esm.js
CHANGED
@@ -134,6 +134,7 @@ var Events;
|
|
134
134
|
Events["PULL_OFFLINE_MESSAGE_FINISHED"] = "PULL_OFFLINE_MESSAGE_FINISHED";
|
135
135
|
Events["CONVERSATION"] = "CONVERSATION";
|
136
136
|
Events["PUSH"] = "PUSH";
|
137
|
+
Events["RECALL"] = "RECALL";
|
137
138
|
})(Events || (Events = {}));
|
138
139
|
|
139
140
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
@@ -19019,7 +19020,7 @@ class ConversationStore {
|
|
19019
19020
|
}
|
19020
19021
|
if (messageType === MessageTypes.RECALL && conversationType === ConversationType.GROUP) {
|
19021
19022
|
const recallContent = content;
|
19022
|
-
const index = localMentionedUIdList.indexOf(recallContent.
|
19023
|
+
const index = localMentionedUIdList.indexOf(recallContent.messageUId.toString());
|
19023
19024
|
if (index >= 0) {
|
19024
19025
|
localMentionedUIdList.splice(index, 1);
|
19025
19026
|
}
|
@@ -19644,7 +19645,6 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey) => {
|
|
19644
19645
|
return [];
|
19645
19646
|
}
|
19646
19647
|
const localConversation = ConversationManager$1.get().get(conversation);
|
19647
|
-
const recallMessageUIds = new Set();
|
19648
19648
|
let contentList = [];
|
19649
19649
|
originalMessageList.forEach(item => {
|
19650
19650
|
const dialogMessage = item;
|
@@ -19661,7 +19661,6 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey) => {
|
|
19661
19661
|
};
|
19662
19662
|
mediaConstructor = MessageTypes.RECALL;
|
19663
19663
|
mediaAttributeJson = recallContent;
|
19664
|
-
recallMessageUIds.add(msgId);
|
19665
19664
|
}
|
19666
19665
|
const messageInstance = decodeMessage(mediaConstructor, mediaAttributeJson);
|
19667
19666
|
if (isDef(messageInstance)) {
|
@@ -19690,9 +19689,6 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey) => {
|
|
19690
19689
|
contentList.push(receivedMessage);
|
19691
19690
|
}
|
19692
19691
|
});
|
19693
|
-
if (recallMessageUIds.size) {
|
19694
|
-
contentList = contentList.filter(e => !recallMessageUIds.has(e.messageUId));
|
19695
|
-
}
|
19696
19692
|
return contentList;
|
19697
19693
|
};
|
19698
19694
|
const decodeMessageContent = (dialogMessage, aesKey) => {
|
@@ -19718,11 +19714,12 @@ const decodeMessageContent = (dialogMessage, aesKey) => {
|
|
19718
19714
|
};
|
19719
19715
|
const parseMediaAttributeJson = (mediaConstructor, mediaAttribute, msgPostContent) => {
|
19720
19716
|
let mediaAttributeJson = {};
|
19721
|
-
if (mediaAttribute?.length) {
|
19722
|
-
mediaAttributeJson = JSON.parse(mediaAttribute);
|
19723
|
-
}
|
19724
19717
|
if (mediaConstructor == MessageTypes.TEXT && msgPostContent) {
|
19725
19718
|
mediaAttributeJson.content = msgPostContent;
|
19719
|
+
} else {
|
19720
|
+
if (mediaAttribute?.length) {
|
19721
|
+
mediaAttributeJson = JSON.parse(mediaAttribute);
|
19722
|
+
}
|
19726
19723
|
}
|
19727
19724
|
return mediaAttributeJson;
|
19728
19725
|
};
|
@@ -19861,9 +19858,10 @@ class MessageLoader {
|
|
19861
19858
|
await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
|
19862
19859
|
serverMessageParser.parse(msg, (done, outputMsgs) => {
|
19863
19860
|
const messages = [];
|
19861
|
+
const recallMessageIndexes = [];
|
19864
19862
|
const isOffLineMessage = !this.pullOfflineFinished;
|
19865
19863
|
outputMsgs.forEach((l, dialogId) => {
|
19866
|
-
|
19864
|
+
let messageList = [];
|
19867
19865
|
l.forEach(m => {
|
19868
19866
|
if (m.messageDirection === MessageDirection.SEND && m.messageId && SentMessageStore.has(m.messageId)) {
|
19869
19867
|
SentMessageStore.remove(m.messageId);
|
@@ -19873,12 +19871,33 @@ class MessageLoader {
|
|
19873
19871
|
m.isOffLineMessage = isOffLineMessage;
|
19874
19872
|
ConversationManager$1.get().setConversationCacheByMessage(m);
|
19875
19873
|
messageList.push(m);
|
19874
|
+
if (m.messageType === MessageTypes.RECALL) {
|
19875
|
+
recallMessageIndexes.push(messageList.length - 1);
|
19876
|
+
}
|
19876
19877
|
}
|
19877
19878
|
});
|
19879
|
+
let recallMessageUIds = [];
|
19880
|
+
let deletedMessageIndexes = [];
|
19881
|
+
for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
|
19882
|
+
const index = recallMessageIndexes[i];
|
19883
|
+
const recallMessage = messageList[index];
|
19884
|
+
const recallContent = recallMessage.content;
|
19885
|
+
const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
|
19886
|
+
if (messageIndex !== -1) {
|
19887
|
+
deletedMessageIndexes.push(messageIndex);
|
19888
|
+
} else {
|
19889
|
+
recallMessageUIds.push(recallContent.messageUId);
|
19890
|
+
deletedMessageIndexes.push(index);
|
19891
|
+
}
|
19892
|
+
}
|
19893
|
+
messageList = messageList.filter((m, index) => !deletedMessageIndexes.includes(index));
|
19878
19894
|
messages.push(...messageList);
|
19879
19895
|
if (this.isExistPersistedMessage(messageList)) {
|
19880
19896
|
splitFullDialog(dialogId);
|
19881
19897
|
}
|
19898
|
+
if (recallMessageUIds.length) {
|
19899
|
+
this.watcher.onRecall?.(recallMessageUIds);
|
19900
|
+
}
|
19882
19901
|
});
|
19883
19902
|
if (messages.length) {
|
19884
19903
|
this.watcher.batchMessage?.(messages);
|
@@ -19973,7 +19992,8 @@ class LibLoader {
|
|
19973
19992
|
pullFinished: undefined,
|
19974
19993
|
batchMessage: undefined,
|
19975
19994
|
conversationState: undefined,
|
19976
|
-
onPush: undefined
|
19995
|
+
onPush: undefined,
|
19996
|
+
onRecall: undefined
|
19977
19997
|
};
|
19978
19998
|
webSocketServer.setServerInfo(this.getWebSocketUrl());
|
19979
19999
|
webSocketServer.setCallback({
|
@@ -27438,6 +27458,11 @@ class IMClient extends EventEmitter {
|
|
27438
27458
|
cmdId,
|
27439
27459
|
body
|
27440
27460
|
});
|
27461
|
+
},
|
27462
|
+
onRecall: messageUids => {
|
27463
|
+
messageUids.forEach(messageUId => {
|
27464
|
+
this.emit(Events.RECALL, messageUId);
|
27465
|
+
});
|
27441
27466
|
}
|
27442
27467
|
});
|
27443
27468
|
}
|
package/index.umd.js
CHANGED
@@ -140,6 +140,7 @@
|
|
140
140
|
Events["PULL_OFFLINE_MESSAGE_FINISHED"] = "PULL_OFFLINE_MESSAGE_FINISHED";
|
141
141
|
Events["CONVERSATION"] = "CONVERSATION";
|
142
142
|
Events["PUSH"] = "PUSH";
|
143
|
+
Events["RECALL"] = "RECALL";
|
143
144
|
})(exports.Events || (exports.Events = {}));
|
144
145
|
|
145
146
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
@@ -19025,7 +19026,7 @@
|
|
19025
19026
|
}
|
19026
19027
|
if (messageType === MessageTypes.RECALL && conversationType === exports.ConversationType.GROUP) {
|
19027
19028
|
const recallContent = content;
|
19028
|
-
const index = localMentionedUIdList.indexOf(recallContent.
|
19029
|
+
const index = localMentionedUIdList.indexOf(recallContent.messageUId.toString());
|
19029
19030
|
if (index >= 0) {
|
19030
19031
|
localMentionedUIdList.splice(index, 1);
|
19031
19032
|
}
|
@@ -19650,7 +19651,6 @@
|
|
19650
19651
|
return [];
|
19651
19652
|
}
|
19652
19653
|
const localConversation = ConversationManager$1.get().get(conversation);
|
19653
|
-
const recallMessageUIds = new Set();
|
19654
19654
|
let contentList = [];
|
19655
19655
|
originalMessageList.forEach(item => {
|
19656
19656
|
const dialogMessage = item;
|
@@ -19667,7 +19667,6 @@
|
|
19667
19667
|
};
|
19668
19668
|
mediaConstructor = MessageTypes.RECALL;
|
19669
19669
|
mediaAttributeJson = recallContent;
|
19670
|
-
recallMessageUIds.add(msgId);
|
19671
19670
|
}
|
19672
19671
|
const messageInstance = decodeMessage(mediaConstructor, mediaAttributeJson);
|
19673
19672
|
if (isDef(messageInstance)) {
|
@@ -19696,9 +19695,6 @@
|
|
19696
19695
|
contentList.push(receivedMessage);
|
19697
19696
|
}
|
19698
19697
|
});
|
19699
|
-
if (recallMessageUIds.size) {
|
19700
|
-
contentList = contentList.filter(e => !recallMessageUIds.has(e.messageUId));
|
19701
|
-
}
|
19702
19698
|
return contentList;
|
19703
19699
|
};
|
19704
19700
|
const decodeMessageContent = (dialogMessage, aesKey) => {
|
@@ -19724,11 +19720,12 @@
|
|
19724
19720
|
};
|
19725
19721
|
const parseMediaAttributeJson = (mediaConstructor, mediaAttribute, msgPostContent) => {
|
19726
19722
|
let mediaAttributeJson = {};
|
19727
|
-
if (mediaAttribute?.length) {
|
19728
|
-
mediaAttributeJson = JSON.parse(mediaAttribute);
|
19729
|
-
}
|
19730
19723
|
if (mediaConstructor == MessageTypes.TEXT && msgPostContent) {
|
19731
19724
|
mediaAttributeJson.content = msgPostContent;
|
19725
|
+
} else {
|
19726
|
+
if (mediaAttribute?.length) {
|
19727
|
+
mediaAttributeJson = JSON.parse(mediaAttribute);
|
19728
|
+
}
|
19732
19729
|
}
|
19733
19730
|
return mediaAttributeJson;
|
19734
19731
|
};
|
@@ -19867,9 +19864,10 @@
|
|
19867
19864
|
await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
|
19868
19865
|
serverMessageParser.parse(msg, (done, outputMsgs) => {
|
19869
19866
|
const messages = [];
|
19867
|
+
const recallMessageIndexes = [];
|
19870
19868
|
const isOffLineMessage = !this.pullOfflineFinished;
|
19871
19869
|
outputMsgs.forEach((l, dialogId) => {
|
19872
|
-
|
19870
|
+
let messageList = [];
|
19873
19871
|
l.forEach(m => {
|
19874
19872
|
if (m.messageDirection === exports.MessageDirection.SEND && m.messageId && SentMessageStore.has(m.messageId)) {
|
19875
19873
|
SentMessageStore.remove(m.messageId);
|
@@ -19879,12 +19877,33 @@
|
|
19879
19877
|
m.isOffLineMessage = isOffLineMessage;
|
19880
19878
|
ConversationManager$1.get().setConversationCacheByMessage(m);
|
19881
19879
|
messageList.push(m);
|
19880
|
+
if (m.messageType === MessageTypes.RECALL) {
|
19881
|
+
recallMessageIndexes.push(messageList.length - 1);
|
19882
|
+
}
|
19882
19883
|
}
|
19883
19884
|
});
|
19885
|
+
let recallMessageUIds = [];
|
19886
|
+
let deletedMessageIndexes = [];
|
19887
|
+
for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
|
19888
|
+
const index = recallMessageIndexes[i];
|
19889
|
+
const recallMessage = messageList[index];
|
19890
|
+
const recallContent = recallMessage.content;
|
19891
|
+
const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
|
19892
|
+
if (messageIndex !== -1) {
|
19893
|
+
deletedMessageIndexes.push(messageIndex);
|
19894
|
+
} else {
|
19895
|
+
recallMessageUIds.push(recallContent.messageUId);
|
19896
|
+
deletedMessageIndexes.push(index);
|
19897
|
+
}
|
19898
|
+
}
|
19899
|
+
messageList = messageList.filter((m, index) => !deletedMessageIndexes.includes(index));
|
19884
19900
|
messages.push(...messageList);
|
19885
19901
|
if (this.isExistPersistedMessage(messageList)) {
|
19886
19902
|
splitFullDialog(dialogId);
|
19887
19903
|
}
|
19904
|
+
if (recallMessageUIds.length) {
|
19905
|
+
this.watcher.onRecall?.(recallMessageUIds);
|
19906
|
+
}
|
19888
19907
|
});
|
19889
19908
|
if (messages.length) {
|
19890
19909
|
this.watcher.batchMessage?.(messages);
|
@@ -19979,7 +19998,8 @@
|
|
19979
19998
|
pullFinished: undefined,
|
19980
19999
|
batchMessage: undefined,
|
19981
20000
|
conversationState: undefined,
|
19982
|
-
onPush: undefined
|
20001
|
+
onPush: undefined,
|
20002
|
+
onRecall: undefined
|
19983
20003
|
};
|
19984
20004
|
webSocketServer.setServerInfo(this.getWebSocketUrl());
|
19985
20005
|
webSocketServer.setCallback({
|
@@ -27444,6 +27464,11 @@
|
|
27444
27464
|
cmdId,
|
27445
27465
|
body
|
27446
27466
|
});
|
27467
|
+
},
|
27468
|
+
onRecall: messageUids => {
|
27469
|
+
messageUids.forEach(messageUId => {
|
27470
|
+
this.emit(exports.Events.RECALL, messageUId);
|
27471
|
+
});
|
27447
27472
|
}
|
27448
27473
|
});
|
27449
27474
|
}
|
package/package.json
CHANGED
package/types/types.d.ts
CHANGED
@@ -38,7 +38,8 @@ export declare enum Events {
|
|
38
38
|
MESSAGES = "MESSAGES",
|
39
39
|
PULL_OFFLINE_MESSAGE_FINISHED = "PULL_OFFLINE_MESSAGE_FINISHED",
|
40
40
|
CONVERSATION = "CONVERSATION",
|
41
|
-
PUSH = "PUSH"
|
41
|
+
PUSH = "PUSH",
|
42
|
+
RECALL = "RECALL"
|
42
43
|
}
|
43
44
|
export type EventListeners = {
|
44
45
|
[Events.CONNECTING]: () => void;
|
@@ -56,6 +57,7 @@ export type EventListeners = {
|
|
56
57
|
cmdId: number;
|
57
58
|
body: Uint8Array;
|
58
59
|
}) => void;
|
60
|
+
[Events.RECALL]: (messageUId: string) => void;
|
59
61
|
};
|
60
62
|
export interface IBaseConversationInfo {
|
61
63
|
conversationType: ConversationType;
|