@onyx-p/imlib-web 1.8.8 → 1.9.0
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 +85 -17
- package/index.umd.js +85 -17
- package/package.json +1 -1
- package/types/index.d.ts +6 -4
package/index.esm.js
CHANGED
@@ -28414,6 +28414,72 @@ class MessageCache {
|
|
28414
28414
|
}
|
28415
28415
|
});
|
28416
28416
|
}
|
28417
|
+
updateMessageReceiptStatus(event, type) {
|
28418
|
+
if (!event || !event.messageUIdList || event.messageUIdList.length === 0) {
|
28419
|
+
return;
|
28420
|
+
}
|
28421
|
+
const {
|
28422
|
+
conversation
|
28423
|
+
} = event;
|
28424
|
+
const dialogId = getFullDialogId(conversation);
|
28425
|
+
const cachedMessages = this.messageCache.get(dialogId);
|
28426
|
+
if (!cachedMessages || cachedMessages.length === 0) {
|
28427
|
+
return;
|
28428
|
+
}
|
28429
|
+
const messageUIdSet = new Set(event.messageUIdList);
|
28430
|
+
let updated = false;
|
28431
|
+
for (let i = 0; i < cachedMessages.length; i++) {
|
28432
|
+
const message = cachedMessages[i];
|
28433
|
+
if (messageUIdSet.has(message.messageUId)) {
|
28434
|
+
if (type === 0) {
|
28435
|
+
if (message.receivedStatus < ReceivedStatus.RECEIVED) {
|
28436
|
+
message.receivedStatus = ReceivedStatus.RECEIVED;
|
28437
|
+
updated = true;
|
28438
|
+
}
|
28439
|
+
} else {
|
28440
|
+
if (message.receivedStatus < ReceivedStatus.READ) {
|
28441
|
+
message.receivedStatus = ReceivedStatus.READ;
|
28442
|
+
updated = true;
|
28443
|
+
}
|
28444
|
+
}
|
28445
|
+
}
|
28446
|
+
}
|
28447
|
+
if (updated) {
|
28448
|
+
this.messageCache.set(dialogId, cachedMessages);
|
28449
|
+
}
|
28450
|
+
}
|
28451
|
+
clearBurnAfterReadingExpiredMessages(conversation) {
|
28452
|
+
const dialogId = getFullDialogId(conversation);
|
28453
|
+
const cachedMessages = this.messageCache.get(dialogId);
|
28454
|
+
if (!cachedMessages || cachedMessages.length === 0) {
|
28455
|
+
return [];
|
28456
|
+
}
|
28457
|
+
const currentTime = Date.now();
|
28458
|
+
const expiredMessageUIds = [];
|
28459
|
+
const remainingMessages = cachedMessages.filter(message => {
|
28460
|
+
if (!message.burnAfterReadingFlag) {
|
28461
|
+
return true;
|
28462
|
+
}
|
28463
|
+
const burnTime = message.burnAfterReadingTime || 0;
|
28464
|
+
if (burnTime === 0) {
|
28465
|
+
expiredMessageUIds.push(message.messageUId);
|
28466
|
+
return false;
|
28467
|
+
}
|
28468
|
+
const sentTimeLong = Long.fromString(message.sentTime);
|
28469
|
+
const currentTimeLong = Long.fromNumber(currentTime);
|
28470
|
+
const burnTimeLong = Long.fromNumber(burnTime);
|
28471
|
+
const expirationTime = sentTimeLong.add(burnTimeLong);
|
28472
|
+
if (currentTimeLong.greaterThan(expirationTime)) {
|
28473
|
+
expiredMessageUIds.push(message.messageUId);
|
28474
|
+
return false;
|
28475
|
+
}
|
28476
|
+
return true;
|
28477
|
+
});
|
28478
|
+
if (remainingMessages.length < cachedMessages.length) {
|
28479
|
+
this.messageCache.set(dialogId, remainingMessages);
|
28480
|
+
}
|
28481
|
+
return expiredMessageUIds;
|
28482
|
+
}
|
28417
28483
|
}
|
28418
28484
|
|
28419
28485
|
class IMClient extends EventEmitter {
|
@@ -28489,6 +28555,7 @@ class IMClient extends EventEmitter {
|
|
28489
28555
|
});
|
28490
28556
|
},
|
28491
28557
|
onReceiptReceived: (event, type) => {
|
28558
|
+
MessageCache.get().updateMessageReceiptStatus(event, type);
|
28492
28559
|
if (type === 0) {
|
28493
28560
|
this.emit(Events.ARRIVAL_RECEIPT_RECEIVED, event);
|
28494
28561
|
} else {
|
@@ -28575,7 +28642,7 @@ class IMClient extends EventEmitter {
|
|
28575
28642
|
};
|
28576
28643
|
}
|
28577
28644
|
const remotesResult = await this.getRemoteHistoryMessages(conversation, {
|
28578
|
-
timestamp: cachedMessages[0]
|
28645
|
+
timestamp: cachedMessages[0]?.sentTime ?? timestamp,
|
28579
28646
|
count: count - cachedMessages.length,
|
28580
28647
|
order: 0
|
28581
28648
|
});
|
@@ -28780,6 +28847,9 @@ class IMClient extends EventEmitter {
|
|
28780
28847
|
}
|
28781
28848
|
return conversationObj;
|
28782
28849
|
}
|
28850
|
+
clearBurnAfterReadingExpiredMessages(conversation) {
|
28851
|
+
return MessageCache.get().clearBurnAfterReadingExpiredMessages(conversation);
|
28852
|
+
}
|
28783
28853
|
}
|
28784
28854
|
|
28785
28855
|
/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
|
@@ -29957,21 +30027,6 @@ const recallMessage = async (conversation, options) => {
|
|
29957
30027
|
}
|
29958
30028
|
return response;
|
29959
30029
|
};
|
29960
|
-
const getHistoryMessages = async (conversation, options) => {
|
29961
|
-
assert('options.timestamp', options.timestamp ?? '0', AssertRules.ONLY_STRING);
|
29962
|
-
assert('options.count', options.count ?? 0, AssertRules.NUMBER);
|
29963
|
-
assert('options.order', options.order ?? 0, value => {
|
29964
|
-
return value === 0 || value === 1;
|
29965
|
-
});
|
29966
|
-
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
29967
|
-
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
29968
|
-
logger.debug('get history message ->' + paramsStr);
|
29969
|
-
const response = await imClient.getRemoteHistoryMessages(conversation, options);
|
29970
|
-
if (response.code !== ErrorCode.SUCCESS) {
|
29971
|
-
logger.warn('get history message fail ->' + response.code + ':' + ErrorDesc(response.code) + ',' + paramsStr);
|
29972
|
-
}
|
29973
|
-
return response;
|
29974
|
-
};
|
29975
30030
|
const getRemoteHistoryMessages = async (conversation, options) => {
|
29976
30031
|
assert('options.count', options.count ?? 0, AssertRules.NUMBER);
|
29977
30032
|
assert('options.order', options.order ?? 0, value => {
|
@@ -30065,5 +30120,18 @@ const _logSendError = (conversation, errorCode) => {
|
|
30065
30120
|
logger.warn('send message fail ->' + errorCode + ':' + ErrorDesc(errorCode) + ',' + paramsStr);
|
30066
30121
|
}
|
30067
30122
|
};
|
30123
|
+
const clearBurnAfterReadingExpiredMessages = conversation => {
|
30124
|
+
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
30125
|
+
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
30126
|
+
logger.debug('clear burn after reading expired messages ->' + paramsStr);
|
30127
|
+
const expiredMessageUIds = imClient.clearBurnAfterReadingExpiredMessages(conversation);
|
30128
|
+
if (expiredMessageUIds.length > 0) {
|
30129
|
+
logger.debug(`已清除会话 ${paramsStr} 中的 ${expiredMessageUIds.length} 条阅后即焚过期消息`);
|
30130
|
+
}
|
30131
|
+
return Promise.resolve({
|
30132
|
+
code: ErrorCode.SUCCESS,
|
30133
|
+
data: expiredMessageUIds
|
30134
|
+
});
|
30135
|
+
};
|
30068
30136
|
|
30069
|
-
export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LocationMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotiMessageTypes, NotificationLevel, NotificationStatus, PrivateCloseBurnAfterReadingMessage, PrivateOpenBurnAfterReadingMessage, RecallCommandMessage, ReceivedStatus, RedEnvelopeMessage, SentStatus, TextMessage, TransferMessage, VideoMessage, addEventListener, clearAllMessagesUnreadStatus, clearHistoryMessages, clearMessagesUnreadStatus, clearTextMessageDraft, connect, deleteMessages, disconnect, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getConversationState,
|
30137
|
+
export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LocationMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotiMessageTypes, NotificationLevel, NotificationStatus, PrivateCloseBurnAfterReadingMessage, PrivateOpenBurnAfterReadingMessage, RecallCommandMessage, ReceivedStatus, RedEnvelopeMessage, SentStatus, TextMessage, TransferMessage, VideoMessage, addEventListener, clearAllMessagesUnreadStatus, clearBurnAfterReadingExpiredMessages, clearHistoryMessages, clearMessagesUnreadStatus, clearTextMessageDraft, connect, deleteMessages, disconnect, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getConversationState, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, logOut, mockLogin, onceEventListener, parseChatRecordMsgDetails, recallMessage, registerMessageType, removeConversation, removeEventListener, request, saveTextMessageDraft, sendFileMessage, sendGIFMessage, sendHQVoiceMessage, sendImageMessage, sendMessage, sendReadReceipts, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
|
package/index.umd.js
CHANGED
@@ -28420,6 +28420,72 @@
|
|
28420
28420
|
}
|
28421
28421
|
});
|
28422
28422
|
}
|
28423
|
+
updateMessageReceiptStatus(event, type) {
|
28424
|
+
if (!event || !event.messageUIdList || event.messageUIdList.length === 0) {
|
28425
|
+
return;
|
28426
|
+
}
|
28427
|
+
const {
|
28428
|
+
conversation
|
28429
|
+
} = event;
|
28430
|
+
const dialogId = getFullDialogId(conversation);
|
28431
|
+
const cachedMessages = this.messageCache.get(dialogId);
|
28432
|
+
if (!cachedMessages || cachedMessages.length === 0) {
|
28433
|
+
return;
|
28434
|
+
}
|
28435
|
+
const messageUIdSet = new Set(event.messageUIdList);
|
28436
|
+
let updated = false;
|
28437
|
+
for (let i = 0; i < cachedMessages.length; i++) {
|
28438
|
+
const message = cachedMessages[i];
|
28439
|
+
if (messageUIdSet.has(message.messageUId)) {
|
28440
|
+
if (type === 0) {
|
28441
|
+
if (message.receivedStatus < exports.ReceivedStatus.RECEIVED) {
|
28442
|
+
message.receivedStatus = exports.ReceivedStatus.RECEIVED;
|
28443
|
+
updated = true;
|
28444
|
+
}
|
28445
|
+
} else {
|
28446
|
+
if (message.receivedStatus < exports.ReceivedStatus.READ) {
|
28447
|
+
message.receivedStatus = exports.ReceivedStatus.READ;
|
28448
|
+
updated = true;
|
28449
|
+
}
|
28450
|
+
}
|
28451
|
+
}
|
28452
|
+
}
|
28453
|
+
if (updated) {
|
28454
|
+
this.messageCache.set(dialogId, cachedMessages);
|
28455
|
+
}
|
28456
|
+
}
|
28457
|
+
clearBurnAfterReadingExpiredMessages(conversation) {
|
28458
|
+
const dialogId = getFullDialogId(conversation);
|
28459
|
+
const cachedMessages = this.messageCache.get(dialogId);
|
28460
|
+
if (!cachedMessages || cachedMessages.length === 0) {
|
28461
|
+
return [];
|
28462
|
+
}
|
28463
|
+
const currentTime = Date.now();
|
28464
|
+
const expiredMessageUIds = [];
|
28465
|
+
const remainingMessages = cachedMessages.filter(message => {
|
28466
|
+
if (!message.burnAfterReadingFlag) {
|
28467
|
+
return true;
|
28468
|
+
}
|
28469
|
+
const burnTime = message.burnAfterReadingTime || 0;
|
28470
|
+
if (burnTime === 0) {
|
28471
|
+
expiredMessageUIds.push(message.messageUId);
|
28472
|
+
return false;
|
28473
|
+
}
|
28474
|
+
const sentTimeLong = Long.fromString(message.sentTime);
|
28475
|
+
const currentTimeLong = Long.fromNumber(currentTime);
|
28476
|
+
const burnTimeLong = Long.fromNumber(burnTime);
|
28477
|
+
const expirationTime = sentTimeLong.add(burnTimeLong);
|
28478
|
+
if (currentTimeLong.greaterThan(expirationTime)) {
|
28479
|
+
expiredMessageUIds.push(message.messageUId);
|
28480
|
+
return false;
|
28481
|
+
}
|
28482
|
+
return true;
|
28483
|
+
});
|
28484
|
+
if (remainingMessages.length < cachedMessages.length) {
|
28485
|
+
this.messageCache.set(dialogId, remainingMessages);
|
28486
|
+
}
|
28487
|
+
return expiredMessageUIds;
|
28488
|
+
}
|
28423
28489
|
}
|
28424
28490
|
|
28425
28491
|
class IMClient extends EventEmitter {
|
@@ -28495,6 +28561,7 @@
|
|
28495
28561
|
});
|
28496
28562
|
},
|
28497
28563
|
onReceiptReceived: (event, type) => {
|
28564
|
+
MessageCache.get().updateMessageReceiptStatus(event, type);
|
28498
28565
|
if (type === 0) {
|
28499
28566
|
this.emit(exports.Events.ARRIVAL_RECEIPT_RECEIVED, event);
|
28500
28567
|
} else {
|
@@ -28581,7 +28648,7 @@
|
|
28581
28648
|
};
|
28582
28649
|
}
|
28583
28650
|
const remotesResult = await this.getRemoteHistoryMessages(conversation, {
|
28584
|
-
timestamp: cachedMessages[0]
|
28651
|
+
timestamp: cachedMessages[0]?.sentTime ?? timestamp,
|
28585
28652
|
count: count - cachedMessages.length,
|
28586
28653
|
order: 0
|
28587
28654
|
});
|
@@ -28786,6 +28853,9 @@
|
|
28786
28853
|
}
|
28787
28854
|
return conversationObj;
|
28788
28855
|
}
|
28856
|
+
clearBurnAfterReadingExpiredMessages(conversation) {
|
28857
|
+
return MessageCache.get().clearBurnAfterReadingExpiredMessages(conversation);
|
28858
|
+
}
|
28789
28859
|
}
|
28790
28860
|
|
28791
28861
|
/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
|
@@ -29963,21 +30033,6 @@
|
|
29963
30033
|
}
|
29964
30034
|
return response;
|
29965
30035
|
};
|
29966
|
-
const getHistoryMessages = async (conversation, options) => {
|
29967
|
-
assert('options.timestamp', options.timestamp ?? '0', AssertRules.ONLY_STRING);
|
29968
|
-
assert('options.count', options.count ?? 0, AssertRules.NUMBER);
|
29969
|
-
assert('options.order', options.order ?? 0, value => {
|
29970
|
-
return value === 0 || value === 1;
|
29971
|
-
});
|
29972
|
-
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
29973
|
-
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
29974
|
-
logger.debug('get history message ->' + paramsStr);
|
29975
|
-
const response = await imClient.getRemoteHistoryMessages(conversation, options);
|
29976
|
-
if (response.code !== exports.ErrorCode.SUCCESS) {
|
29977
|
-
logger.warn('get history message fail ->' + response.code + ':' + ErrorDesc(response.code) + ',' + paramsStr);
|
29978
|
-
}
|
29979
|
-
return response;
|
29980
|
-
};
|
29981
30036
|
const getRemoteHistoryMessages = async (conversation, options) => {
|
29982
30037
|
assert('options.count', options.count ?? 0, AssertRules.NUMBER);
|
29983
30038
|
assert('options.order', options.order ?? 0, value => {
|
@@ -30071,6 +30126,19 @@
|
|
30071
30126
|
logger.warn('send message fail ->' + errorCode + ':' + ErrorDesc(errorCode) + ',' + paramsStr);
|
30072
30127
|
}
|
30073
30128
|
};
|
30129
|
+
const clearBurnAfterReadingExpiredMessages = conversation => {
|
30130
|
+
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
30131
|
+
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
30132
|
+
logger.debug('clear burn after reading expired messages ->' + paramsStr);
|
30133
|
+
const expiredMessageUIds = imClient.clearBurnAfterReadingExpiredMessages(conversation);
|
30134
|
+
if (expiredMessageUIds.length > 0) {
|
30135
|
+
logger.debug(`已清除会话 ${paramsStr} 中的 ${expiredMessageUIds.length} 条阅后即焚过期消息`);
|
30136
|
+
}
|
30137
|
+
return Promise.resolve({
|
30138
|
+
code: exports.ErrorCode.SUCCESS,
|
30139
|
+
data: expiredMessageUIds
|
30140
|
+
});
|
30141
|
+
};
|
30074
30142
|
|
30075
30143
|
exports.ChatRecordMessage = ChatRecordMessage;
|
30076
30144
|
exports.ContactMessage = ContactMessage;
|
@@ -30094,6 +30162,7 @@
|
|
30094
30162
|
exports.VideoMessage = VideoMessage;
|
30095
30163
|
exports.addEventListener = addEventListener;
|
30096
30164
|
exports.clearAllMessagesUnreadStatus = clearAllMessagesUnreadStatus;
|
30165
|
+
exports.clearBurnAfterReadingExpiredMessages = clearBurnAfterReadingExpiredMessages;
|
30097
30166
|
exports.clearHistoryMessages = clearHistoryMessages;
|
30098
30167
|
exports.clearMessagesUnreadStatus = clearMessagesUnreadStatus;
|
30099
30168
|
exports.clearTextMessageDraft = clearTextMessageDraft;
|
@@ -30109,7 +30178,6 @@
|
|
30109
30178
|
exports.getConversationNotificationLevel = getConversationNotificationLevel;
|
30110
30179
|
exports.getConversationNotificationStatus = getConversationNotificationStatus;
|
30111
30180
|
exports.getConversationState = getConversationState;
|
30112
|
-
exports.getHistoryMessages = getHistoryMessages;
|
30113
30181
|
exports.getRemoteHistoryMessages = getRemoteHistoryMessages;
|
30114
30182
|
exports.getServerTime = getServerTime;
|
30115
30183
|
exports.getTextMessageDraft = getTextMessageDraft;
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
@@ -209,10 +209,6 @@ export declare const sendSightMessage: (conversation: IConversationOption, msgBo
|
|
209
209
|
* @param options
|
210
210
|
*/
|
211
211
|
export declare const recallMessage: (conversation: IConversationOption, options: IRecallMessageOptions) => IPromiseResult<IReceivedMessage>;
|
212
|
-
/**
|
213
|
-
* 获取历史消息
|
214
|
-
*/
|
215
|
-
export declare const getHistoryMessages: (conversation: IConversationOption, options: GetHistoryMessageOption) => IPromiseResult<GetHistoryMessageResult>;
|
216
212
|
/**
|
217
213
|
* 获取远程历史消息
|
218
214
|
*/
|
@@ -239,3 +235,9 @@ export declare const mockLogin: (config: {
|
|
239
235
|
phone: string;
|
240
236
|
password: string;
|
241
237
|
}) => CommonReqResult<import("./net/pbs/rpc.login").AuthSignIn2Resp>;
|
238
|
+
/**
|
239
|
+
* 清除指定会话中阅后即焚过期的消息
|
240
|
+
* @param conversation 会话信息
|
241
|
+
* @returns 被清除的消息ID列表
|
242
|
+
*/
|
243
|
+
export declare const clearBurnAfterReadingExpiredMessages: (conversation: IConversationOption) => IPromiseResult<string[]>;
|