@onyx-p/imlib-web 1.8.8 → 1.8.9
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 +84 -1
- package/index.umd.js +84 -0
- package/package.json +1 -1
- package/types/index.d.ts +6 -0
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 {
|
@@ -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*/
|
@@ -30065,5 +30135,18 @@ const _logSendError = (conversation, errorCode) => {
|
|
30065
30135
|
logger.warn('send message fail ->' + errorCode + ':' + ErrorDesc(errorCode) + ',' + paramsStr);
|
30066
30136
|
}
|
30067
30137
|
};
|
30138
|
+
const clearBurnAfterReadingExpiredMessages = conversation => {
|
30139
|
+
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
30140
|
+
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
30141
|
+
logger.debug('clear burn after reading expired messages ->' + paramsStr);
|
30142
|
+
const expiredMessageUIds = imClient.clearBurnAfterReadingExpiredMessages(conversation);
|
30143
|
+
if (expiredMessageUIds.length > 0) {
|
30144
|
+
logger.debug(`已清除会话 ${paramsStr} 中的 ${expiredMessageUIds.length} 条阅后即焚过期消息`);
|
30145
|
+
}
|
30146
|
+
return Promise.resolve({
|
30147
|
+
code: ErrorCode.SUCCESS,
|
30148
|
+
data: expiredMessageUIds
|
30149
|
+
});
|
30150
|
+
};
|
30068
30151
|
|
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, getHistoryMessages, 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 };
|
30152
|
+
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, getHistoryMessages, 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 {
|
@@ -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*/
|
@@ -30071,6 +30141,19 @@
|
|
30071
30141
|
logger.warn('send message fail ->' + errorCode + ':' + ErrorDesc(errorCode) + ',' + paramsStr);
|
30072
30142
|
}
|
30073
30143
|
};
|
30144
|
+
const clearBurnAfterReadingExpiredMessages = conversation => {
|
30145
|
+
assert('conversation', conversation, AssertRules.CONVERSATION, true);
|
30146
|
+
const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
|
30147
|
+
logger.debug('clear burn after reading expired messages ->' + paramsStr);
|
30148
|
+
const expiredMessageUIds = imClient.clearBurnAfterReadingExpiredMessages(conversation);
|
30149
|
+
if (expiredMessageUIds.length > 0) {
|
30150
|
+
logger.debug(`已清除会话 ${paramsStr} 中的 ${expiredMessageUIds.length} 条阅后即焚过期消息`);
|
30151
|
+
}
|
30152
|
+
return Promise.resolve({
|
30153
|
+
code: exports.ErrorCode.SUCCESS,
|
30154
|
+
data: expiredMessageUIds
|
30155
|
+
});
|
30156
|
+
};
|
30074
30157
|
|
30075
30158
|
exports.ChatRecordMessage = ChatRecordMessage;
|
30076
30159
|
exports.ContactMessage = ContactMessage;
|
@@ -30094,6 +30177,7 @@
|
|
30094
30177
|
exports.VideoMessage = VideoMessage;
|
30095
30178
|
exports.addEventListener = addEventListener;
|
30096
30179
|
exports.clearAllMessagesUnreadStatus = clearAllMessagesUnreadStatus;
|
30180
|
+
exports.clearBurnAfterReadingExpiredMessages = clearBurnAfterReadingExpiredMessages;
|
30097
30181
|
exports.clearHistoryMessages = clearHistoryMessages;
|
30098
30182
|
exports.clearMessagesUnreadStatus = clearMessagesUnreadStatus;
|
30099
30183
|
exports.clearTextMessageDraft = clearTextMessageDraft;
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
@@ -239,3 +239,9 @@ export declare const mockLogin: (config: {
|
|
239
239
|
phone: string;
|
240
240
|
password: string;
|
241
241
|
}) => CommonReqResult<import("./net/pbs/rpc.login").AuthSignIn2Resp>;
|
242
|
+
/**
|
243
|
+
* 清除指定会话中阅后即焚过期的消息
|
244
|
+
* @param conversation 会话信息
|
245
|
+
* @returns 被清除的消息ID列表
|
246
|
+
*/
|
247
|
+
export declare const clearBurnAfterReadingExpiredMessages: (conversation: IConversationOption) => IPromiseResult<string[]>;
|