@onyx-p/imlib-web 1.7.1 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.esm.js +33 -10
- package/index.umd.js +33 -10
- 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 : {};
|
@@ -18868,7 +18869,7 @@ const MessageTypes = {
|
|
18868
18869
|
TEXT: 0x00000000,
|
18869
18870
|
IMAGE: 0x30001000,
|
18870
18871
|
GIF: 0x3000100B,
|
18871
|
-
FILE:
|
18872
|
+
FILE: 0x3000101A,
|
18872
18873
|
AUDIO: 0x30001011,
|
18873
18874
|
VIDEO: 0x30001006,
|
18874
18875
|
RECALL: 0x6001001d,
|
@@ -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,14 +19689,10 @@ 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) => {
|
19699
19695
|
try {
|
19700
|
-
debugger;
|
19701
19696
|
let mediaAttribute;
|
19702
19697
|
if (dialogMessage.mediaAttribute?.length) {
|
19703
19698
|
mediaAttribute = aes256Decrypt(dialogMessage.mediaAttribute, aesKey);
|
@@ -19863,9 +19858,10 @@ class MessageLoader {
|
|
19863
19858
|
await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
|
19864
19859
|
serverMessageParser.parse(msg, (done, outputMsgs) => {
|
19865
19860
|
const messages = [];
|
19861
|
+
const recallMessageIndexes = [];
|
19866
19862
|
const isOffLineMessage = !this.pullOfflineFinished;
|
19867
19863
|
outputMsgs.forEach((l, dialogId) => {
|
19868
|
-
|
19864
|
+
let messageList = [];
|
19869
19865
|
l.forEach(m => {
|
19870
19866
|
if (m.messageDirection === MessageDirection.SEND && m.messageId && SentMessageStore.has(m.messageId)) {
|
19871
19867
|
SentMessageStore.remove(m.messageId);
|
@@ -19875,12 +19871,33 @@ class MessageLoader {
|
|
19875
19871
|
m.isOffLineMessage = isOffLineMessage;
|
19876
19872
|
ConversationManager$1.get().setConversationCacheByMessage(m);
|
19877
19873
|
messageList.push(m);
|
19874
|
+
if (m.messageType === MessageTypes.RECALL) {
|
19875
|
+
recallMessageIndexes.push(messageList.length - 1);
|
19876
|
+
}
|
19878
19877
|
}
|
19879
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));
|
19880
19894
|
messages.push(...messageList);
|
19881
19895
|
if (this.isExistPersistedMessage(messageList)) {
|
19882
19896
|
splitFullDialog(dialogId);
|
19883
19897
|
}
|
19898
|
+
if (recallMessageUIds.length) {
|
19899
|
+
this.watcher.onRecall?.(recallMessageUIds);
|
19900
|
+
}
|
19884
19901
|
});
|
19885
19902
|
if (messages.length) {
|
19886
19903
|
this.watcher.batchMessage?.(messages);
|
@@ -19975,7 +19992,8 @@ class LibLoader {
|
|
19975
19992
|
pullFinished: undefined,
|
19976
19993
|
batchMessage: undefined,
|
19977
19994
|
conversationState: undefined,
|
19978
|
-
onPush: undefined
|
19995
|
+
onPush: undefined,
|
19996
|
+
onRecall: undefined
|
19979
19997
|
};
|
19980
19998
|
webSocketServer.setServerInfo(this.getWebSocketUrl());
|
19981
19999
|
webSocketServer.setCallback({
|
@@ -27440,6 +27458,11 @@ class IMClient extends EventEmitter {
|
|
27440
27458
|
cmdId,
|
27441
27459
|
body
|
27442
27460
|
});
|
27461
|
+
},
|
27462
|
+
onRecall: messageUids => {
|
27463
|
+
messageUids.forEach(messageUId => {
|
27464
|
+
this.emit(Events.RECALL, messageUId);
|
27465
|
+
});
|
27443
27466
|
}
|
27444
27467
|
});
|
27445
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 : {};
|
@@ -18874,7 +18875,7 @@
|
|
18874
18875
|
TEXT: 0x00000000,
|
18875
18876
|
IMAGE: 0x30001000,
|
18876
18877
|
GIF: 0x3000100B,
|
18877
|
-
FILE:
|
18878
|
+
FILE: 0x3000101A,
|
18878
18879
|
AUDIO: 0x30001011,
|
18879
18880
|
VIDEO: 0x30001006,
|
18880
18881
|
RECALL: 0x6001001d,
|
@@ -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,14 +19695,10 @@
|
|
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) => {
|
19705
19701
|
try {
|
19706
|
-
debugger;
|
19707
19702
|
let mediaAttribute;
|
19708
19703
|
if (dialogMessage.mediaAttribute?.length) {
|
19709
19704
|
mediaAttribute = aes256Decrypt(dialogMessage.mediaAttribute, aesKey);
|
@@ -19869,9 +19864,10 @@
|
|
19869
19864
|
await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
|
19870
19865
|
serverMessageParser.parse(msg, (done, outputMsgs) => {
|
19871
19866
|
const messages = [];
|
19867
|
+
const recallMessageIndexes = [];
|
19872
19868
|
const isOffLineMessage = !this.pullOfflineFinished;
|
19873
19869
|
outputMsgs.forEach((l, dialogId) => {
|
19874
|
-
|
19870
|
+
let messageList = [];
|
19875
19871
|
l.forEach(m => {
|
19876
19872
|
if (m.messageDirection === exports.MessageDirection.SEND && m.messageId && SentMessageStore.has(m.messageId)) {
|
19877
19873
|
SentMessageStore.remove(m.messageId);
|
@@ -19881,12 +19877,33 @@
|
|
19881
19877
|
m.isOffLineMessage = isOffLineMessage;
|
19882
19878
|
ConversationManager$1.get().setConversationCacheByMessage(m);
|
19883
19879
|
messageList.push(m);
|
19880
|
+
if (m.messageType === MessageTypes.RECALL) {
|
19881
|
+
recallMessageIndexes.push(messageList.length - 1);
|
19882
|
+
}
|
19884
19883
|
}
|
19885
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));
|
19886
19900
|
messages.push(...messageList);
|
19887
19901
|
if (this.isExistPersistedMessage(messageList)) {
|
19888
19902
|
splitFullDialog(dialogId);
|
19889
19903
|
}
|
19904
|
+
if (recallMessageUIds.length) {
|
19905
|
+
this.watcher.onRecall?.(recallMessageUIds);
|
19906
|
+
}
|
19890
19907
|
});
|
19891
19908
|
if (messages.length) {
|
19892
19909
|
this.watcher.batchMessage?.(messages);
|
@@ -19981,7 +19998,8 @@
|
|
19981
19998
|
pullFinished: undefined,
|
19982
19999
|
batchMessage: undefined,
|
19983
20000
|
conversationState: undefined,
|
19984
|
-
onPush: undefined
|
20001
|
+
onPush: undefined,
|
20002
|
+
onRecall: undefined
|
19985
20003
|
};
|
19986
20004
|
webSocketServer.setServerInfo(this.getWebSocketUrl());
|
19987
20005
|
webSocketServer.setCallback({
|
@@ -27446,6 +27464,11 @@
|
|
27446
27464
|
cmdId,
|
27447
27465
|
body
|
27448
27466
|
});
|
27467
|
+
},
|
27468
|
+
onRecall: messageUids => {
|
27469
|
+
messageUids.forEach(messageUId => {
|
27470
|
+
this.emit(exports.Events.RECALL, messageUId);
|
27471
|
+
});
|
27449
27472
|
}
|
27450
27473
|
});
|
27451
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;
|