@onyx-p/imlib-web 1.8.5 → 1.8.7

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 CHANGED
@@ -20059,6 +20059,7 @@ class ConversationManager {
20059
20059
  };
20060
20060
  }
20061
20061
  if (isPersited) {
20062
+ updateConOptions.conversation.updateTime = parseInt(message.sentTime);
20062
20063
  updateConOptions.conversation.latestMessage = message;
20063
20064
  updateConOptions.updatedItems.latestMessage = {
20064
20065
  time: message.sentTime,
@@ -20498,16 +20499,26 @@ const UNREADMESSAGEUIDS_KEY = 'unreadMessageUids';
20498
20499
  class MessageReceiptManager {
20499
20500
  localStore;
20500
20501
  constructor(appkey, currentUserId) {
20501
- const suffix = `receipt-${appkey}-${currentUserId}`;
20502
+ const suffix = `receipt-v2-${appkey}-${currentUserId}`;
20502
20503
  this.localStore = new AppStorage(suffix);
20503
20504
  }
20504
20505
  storeUnreadMessageUids(messageList) {
20505
20506
  const validMessages = messageList.filter(m => m.isCounted && m.messageDirection !== MessageDirection.SEND);
20506
- const messageUids = validMessages.map(m => m.messageUId);
20507
- const existingUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20508
- const updatedUids = [...new Set([...existingUids, ...messageUids])];
20507
+ const messageUidsWithTimestamp = validMessages.map(m => ({
20508
+ uid: m.messageUId,
20509
+ timestamp: Date.now()
20510
+ }));
20511
+ const existingUidsWithTimestamp = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20512
+ const updatedUids = [...existingUidsWithTimestamp, ...messageUidsWithTimestamp];
20509
20513
  this.localStore.set(UNREADMESSAGEUIDS_KEY, updatedUids);
20510
20514
  }
20515
+ cleanExpiredMessages() {
20516
+ const storedMessages = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20517
+ const twoDaysInMs = 2 * 24 * 60 * 60 * 1000;
20518
+ const currentTime = Date.now();
20519
+ const filteredMessages = storedMessages.filter(item => currentTime - item.timestamp <= twoDaysInMs);
20520
+ this.localStore.set(UNREADMESSAGEUIDS_KEY, filteredMessages);
20521
+ }
20511
20522
  formatReceiptMessages(messages) {
20512
20523
  const privateMessages = [];
20513
20524
  const groupMessages = [];
@@ -20569,7 +20580,7 @@ class MessageReceiptManager {
20569
20580
  }
20570
20581
  async sendReadReceipts(messageList) {
20571
20582
  const storedUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20572
- const validMessages = this.filterValidMessages(messageList).filter(m => storedUnreadUids.includes(m.messageUId));
20583
+ const validMessages = this.filterValidMessages(messageList).filter(m => storedUnreadUids.some(item => item.uid === m.messageUId));
20573
20584
  try {
20574
20585
  const {
20575
20586
  privateReceiptMessages,
@@ -20587,7 +20598,7 @@ class MessageReceiptManager {
20587
20598
  }
20588
20599
  const latestUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20589
20600
  const sentMessageUids = validMessages.map(m => m.messageUId);
20590
- const remainingUids = latestUnreadUids.filter(uid => !sentMessageUids.includes(uid));
20601
+ const remainingUids = latestUnreadUids.filter(item => !sentMessageUids.includes(item.uid));
20591
20602
  this.localStore.set(UNREADMESSAGEUIDS_KEY, remainingUids);
20592
20603
  } catch (error) {
20593
20604
  console.error('发送已读回执失败:', error);
@@ -20599,6 +20610,7 @@ let manager;
20599
20610
  var MessageReceiptManager$1 = {
20600
20611
  create(appkey, currentUserId) {
20601
20612
  manager = new MessageReceiptManager(appkey, currentUserId);
20613
+ manager.cleanExpiredMessages();
20602
20614
  },
20603
20615
  get() {
20604
20616
  return manager;
@@ -28317,6 +28329,93 @@ function getMessageSentTime() {
28317
28329
  return UniqueSentTime;
28318
28330
  }
28319
28331
 
28332
+ class MessageCache {
28333
+ static instance;
28334
+ messageCache = new Map();
28335
+ maxCacheCount = 100;
28336
+ constructor() {}
28337
+ static get() {
28338
+ if (!MessageCache.instance) {
28339
+ MessageCache.instance = new MessageCache();
28340
+ }
28341
+ return MessageCache.instance;
28342
+ }
28343
+ setMaxCacheCount(count) {
28344
+ if (count > 0) {
28345
+ this.maxCacheCount = count;
28346
+ }
28347
+ }
28348
+ addMessages(messages) {
28349
+ if (!messages || messages.length === 0) {
28350
+ return;
28351
+ }
28352
+ const messagesByDialog = new Map();
28353
+ messages.forEach(message => {
28354
+ const dialogId = getFullDialogId({
28355
+ conversationType: message.conversationType,
28356
+ targetId: message.targetId
28357
+ });
28358
+ if (!messagesByDialog.has(dialogId)) {
28359
+ messagesByDialog.set(dialogId, []);
28360
+ }
28361
+ messagesByDialog.get(dialogId)?.push(message);
28362
+ });
28363
+ messagesByDialog.forEach((dialogMessages, dialogId) => {
28364
+ if (!this.messageCache.has(dialogId)) {
28365
+ this.messageCache.set(dialogId, []);
28366
+ }
28367
+ const cachedMessages = this.messageCache.get(dialogId) || [];
28368
+ const allMessages = [...cachedMessages, ...dialogMessages];
28369
+ if (allMessages.length > this.maxCacheCount) {
28370
+ allMessages.splice(0, allMessages.length - this.maxCacheCount);
28371
+ }
28372
+ this.messageCache.set(dialogId, allMessages);
28373
+ });
28374
+ }
28375
+ getPreviousMessages(conversation, timestamp = "0", count = 20) {
28376
+ const dialogId = getFullDialogId(conversation);
28377
+ const cachedMessages = this.messageCache.get(dialogId) || [];
28378
+ if (cachedMessages.length === 0) {
28379
+ return [];
28380
+ }
28381
+ if (timestamp === "0") {
28382
+ return cachedMessages.slice(-count);
28383
+ }
28384
+ const timestampLong = Long.fromString(timestamp);
28385
+ let endIndex = cachedMessages.length - 1;
28386
+ while (endIndex >= 0) {
28387
+ if (Long.fromString(cachedMessages[endIndex].sentTime).lessThanOrEqual(timestampLong)) {
28388
+ break;
28389
+ }
28390
+ endIndex--;
28391
+ }
28392
+ if (endIndex < 0) {
28393
+ return [];
28394
+ }
28395
+ const startIndex = Math.max(0, endIndex - count + 1);
28396
+ return cachedMessages.slice(startIndex, endIndex + 1);
28397
+ }
28398
+ clearConversationCache(conversation) {
28399
+ const dialogId = getFullDialogId(conversation);
28400
+ this.messageCache.delete(dialogId);
28401
+ }
28402
+ clearAllCache() {
28403
+ this.messageCache.clear();
28404
+ }
28405
+ removeMessagesByUId(messageUIds) {
28406
+ if (!messageUIds || messageUIds.length === 0) {
28407
+ return;
28408
+ }
28409
+ const messageUIdSet = new Set(messageUIds);
28410
+ this.messageCache.forEach((messages, dialogId) => {
28411
+ const filteredMessages = messages.filter(msg => !messageUIdSet.has(msg.messageUId));
28412
+ if (filteredMessages.length !== messages.length) {
28413
+ this.messageCache.set(dialogId, filteredMessages);
28414
+ }
28415
+ });
28416
+ }
28417
+ }
28418
+
28320
28419
  class IMClient extends EventEmitter {
28321
28420
  options;
28322
28421
  static imClient;
@@ -28364,6 +28463,7 @@ class IMClient extends EventEmitter {
28364
28463
  this.emit(Events.SUSPEND, this.libLoader.getConnectionStatus());
28365
28464
  },
28366
28465
  batchMessage: messages => {
28466
+ MessageCache.get().addMessages(messages);
28367
28467
  this.emit(Events.MESSAGES, {
28368
28468
  messages
28369
28469
  });
@@ -28383,6 +28483,7 @@ class IMClient extends EventEmitter {
28383
28483
  });
28384
28484
  },
28385
28485
  onRecall: messageUids => {
28486
+ MessageCache.get().removeMessagesByUId(messageUids);
28386
28487
  messageUids.forEach(messageUId => {
28387
28488
  this.emit(Events.RECALL, messageUId);
28388
28489
  });
@@ -28425,7 +28526,7 @@ class IMClient extends EventEmitter {
28425
28526
  const dialogId = getFullDialogId(conversation);
28426
28527
  return getRemoteMessages({
28427
28528
  dialogId,
28428
- offset: options.timestamp ?? "0",
28529
+ offset: options.timestamp ?? '0',
28429
28530
  count: options.count ?? 20,
28430
28531
  newToOld: options.order === 0
28431
28532
  }).then(({
@@ -28459,10 +28560,42 @@ class IMClient extends EventEmitter {
28459
28560
  });
28460
28561
  });
28461
28562
  }
28563
+ async getPreviousHistoryMessages(conversation, timestamp, count = 20) {
28564
+ const cachedMessages = MessageCache.get().getPreviousMessages(conversation, timestamp, count);
28565
+ if (!timestamp) {
28566
+ ConversationManager$1.get().refreshLatestMessage(conversation, cachedMessages[cachedMessages.length - 1]);
28567
+ }
28568
+ if (cachedMessages.length >= count) {
28569
+ return {
28570
+ code: ErrorCode.SUCCESS,
28571
+ data: {
28572
+ list: cachedMessages,
28573
+ hasMore: true
28574
+ }
28575
+ };
28576
+ }
28577
+ const remotesResult = await this.getRemoteHistoryMessages(conversation, {
28578
+ timestamp: cachedMessages[0].sentTime ?? timestamp,
28579
+ count: count - cachedMessages.length,
28580
+ order: 0
28581
+ });
28582
+ if (remotesResult.code !== ErrorCode.SUCCESS) {
28583
+ return remotesResult;
28584
+ }
28585
+ return {
28586
+ code: ErrorCode.SUCCESS,
28587
+ data: {
28588
+ list: [...remotesResult.data.list, ...cachedMessages],
28589
+ hasMore: remotesResult.data.hasMore
28590
+ }
28591
+ };
28592
+ }
28462
28593
  async deleteRemoteMessage(conversation, list) {
28594
+ MessageCache.get().removeMessagesByUId(list.map(e => e.messageUId));
28463
28595
  return deleteMessages$1(getFullDialogId(conversation), list.map(e => e.messageUId)).then(result => result.code);
28464
28596
  }
28465
28597
  async deleteRemoteMessageByTimestamp(conversation, timestamp) {
28598
+ MessageCache.get().clearConversationCache(conversation);
28466
28599
  ConversationManager$1.get().clearHistoryMessages(conversation);
28467
28600
  return clearHistoryMessage(getFullDialogId(conversation), timestamp === 0 ? Number.MAX_VALUE : timestamp).then(result => result.code);
28468
28601
  }
@@ -28492,6 +28625,11 @@ class IMClient extends EventEmitter {
28492
28625
  conversationType: conversationObj.conversationType,
28493
28626
  targetId: conversationObj.targetId
28494
28627
  };
28628
+ if (isDef(conversationObj.latestMessage)) {
28629
+ conversationObj.updateTime = parseInt(conversationObj.latestMessage.sentTime);
28630
+ } else {
28631
+ conversationObj.updateTime = (contentList[contentList.length - 1].updateTime ?? 0) + 1;
28632
+ }
28495
28633
  ConversationManager$1.get().addLocalConversation(conversationObj);
28496
28634
  const localConversation = ConversationManager$1.get().get(conOpt);
28497
28635
  Object.assign(conversationObj, localConversation);
@@ -28540,6 +28678,7 @@ class IMClient extends EventEmitter {
28540
28678
  const conversation = {
28541
28679
  ...conOpt,
28542
28680
  ...localConversation,
28681
+ updateTime: isDef(latestMessage?.sentTime) ? parseInt(latestMessage.sentTime) : undefined,
28543
28682
  latestMessage: latestMessage
28544
28683
  };
28545
28684
  return {
@@ -29842,7 +29981,12 @@ const getRemoteHistoryMessages = async (conversation, options) => {
29842
29981
  assert('conversation', conversation, AssertRules.CONVERSATION, true);
29843
29982
  const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
29844
29983
  logger.debug('get remote history message ->' + paramsStr);
29845
- const response = await imClient.getRemoteHistoryMessages(conversation, options);
29984
+ let response;
29985
+ if (options.order === 0) {
29986
+ response = await imClient.getPreviousHistoryMessages(conversation, options.timestamp, options.count);
29987
+ } else {
29988
+ response = await imClient.getRemoteHistoryMessages(conversation, options);
29989
+ }
29846
29990
  if (response.code !== ErrorCode.SUCCESS) {
29847
29991
  logger.warn('get remote history message fail ->' + response.code + ':' + ErrorDesc(response.code) + ',' + paramsStr);
29848
29992
  }
package/index.umd.js CHANGED
@@ -20065,6 +20065,7 @@
20065
20065
  };
20066
20066
  }
20067
20067
  if (isPersited) {
20068
+ updateConOptions.conversation.updateTime = parseInt(message.sentTime);
20068
20069
  updateConOptions.conversation.latestMessage = message;
20069
20070
  updateConOptions.updatedItems.latestMessage = {
20070
20071
  time: message.sentTime,
@@ -20504,16 +20505,26 @@
20504
20505
  class MessageReceiptManager {
20505
20506
  localStore;
20506
20507
  constructor(appkey, currentUserId) {
20507
- const suffix = `receipt-${appkey}-${currentUserId}`;
20508
+ const suffix = `receipt-v2-${appkey}-${currentUserId}`;
20508
20509
  this.localStore = new AppStorage(suffix);
20509
20510
  }
20510
20511
  storeUnreadMessageUids(messageList) {
20511
20512
  const validMessages = messageList.filter(m => m.isCounted && m.messageDirection !== exports.MessageDirection.SEND);
20512
- const messageUids = validMessages.map(m => m.messageUId);
20513
- const existingUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20514
- const updatedUids = [...new Set([...existingUids, ...messageUids])];
20513
+ const messageUidsWithTimestamp = validMessages.map(m => ({
20514
+ uid: m.messageUId,
20515
+ timestamp: Date.now()
20516
+ }));
20517
+ const existingUidsWithTimestamp = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20518
+ const updatedUids = [...existingUidsWithTimestamp, ...messageUidsWithTimestamp];
20515
20519
  this.localStore.set(UNREADMESSAGEUIDS_KEY, updatedUids);
20516
20520
  }
20521
+ cleanExpiredMessages() {
20522
+ const storedMessages = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20523
+ const twoDaysInMs = 2 * 24 * 60 * 60 * 1000;
20524
+ const currentTime = Date.now();
20525
+ const filteredMessages = storedMessages.filter(item => currentTime - item.timestamp <= twoDaysInMs);
20526
+ this.localStore.set(UNREADMESSAGEUIDS_KEY, filteredMessages);
20527
+ }
20517
20528
  formatReceiptMessages(messages) {
20518
20529
  const privateMessages = [];
20519
20530
  const groupMessages = [];
@@ -20575,7 +20586,7 @@
20575
20586
  }
20576
20587
  async sendReadReceipts(messageList) {
20577
20588
  const storedUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20578
- const validMessages = this.filterValidMessages(messageList).filter(m => storedUnreadUids.includes(m.messageUId));
20589
+ const validMessages = this.filterValidMessages(messageList).filter(m => storedUnreadUids.some(item => item.uid === m.messageUId));
20579
20590
  try {
20580
20591
  const {
20581
20592
  privateReceiptMessages,
@@ -20593,7 +20604,7 @@
20593
20604
  }
20594
20605
  const latestUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20595
20606
  const sentMessageUids = validMessages.map(m => m.messageUId);
20596
- const remainingUids = latestUnreadUids.filter(uid => !sentMessageUids.includes(uid));
20607
+ const remainingUids = latestUnreadUids.filter(item => !sentMessageUids.includes(item.uid));
20597
20608
  this.localStore.set(UNREADMESSAGEUIDS_KEY, remainingUids);
20598
20609
  } catch (error) {
20599
20610
  console.error('发送已读回执失败:', error);
@@ -20605,6 +20616,7 @@
20605
20616
  var MessageReceiptManager$1 = {
20606
20617
  create(appkey, currentUserId) {
20607
20618
  manager = new MessageReceiptManager(appkey, currentUserId);
20619
+ manager.cleanExpiredMessages();
20608
20620
  },
20609
20621
  get() {
20610
20622
  return manager;
@@ -28323,6 +28335,93 @@
28323
28335
  return UniqueSentTime;
28324
28336
  }
28325
28337
 
28338
+ class MessageCache {
28339
+ static instance;
28340
+ messageCache = new Map();
28341
+ maxCacheCount = 100;
28342
+ constructor() {}
28343
+ static get() {
28344
+ if (!MessageCache.instance) {
28345
+ MessageCache.instance = new MessageCache();
28346
+ }
28347
+ return MessageCache.instance;
28348
+ }
28349
+ setMaxCacheCount(count) {
28350
+ if (count > 0) {
28351
+ this.maxCacheCount = count;
28352
+ }
28353
+ }
28354
+ addMessages(messages) {
28355
+ if (!messages || messages.length === 0) {
28356
+ return;
28357
+ }
28358
+ const messagesByDialog = new Map();
28359
+ messages.forEach(message => {
28360
+ const dialogId = getFullDialogId({
28361
+ conversationType: message.conversationType,
28362
+ targetId: message.targetId
28363
+ });
28364
+ if (!messagesByDialog.has(dialogId)) {
28365
+ messagesByDialog.set(dialogId, []);
28366
+ }
28367
+ messagesByDialog.get(dialogId)?.push(message);
28368
+ });
28369
+ messagesByDialog.forEach((dialogMessages, dialogId) => {
28370
+ if (!this.messageCache.has(dialogId)) {
28371
+ this.messageCache.set(dialogId, []);
28372
+ }
28373
+ const cachedMessages = this.messageCache.get(dialogId) || [];
28374
+ const allMessages = [...cachedMessages, ...dialogMessages];
28375
+ if (allMessages.length > this.maxCacheCount) {
28376
+ allMessages.splice(0, allMessages.length - this.maxCacheCount);
28377
+ }
28378
+ this.messageCache.set(dialogId, allMessages);
28379
+ });
28380
+ }
28381
+ getPreviousMessages(conversation, timestamp = "0", count = 20) {
28382
+ const dialogId = getFullDialogId(conversation);
28383
+ const cachedMessages = this.messageCache.get(dialogId) || [];
28384
+ if (cachedMessages.length === 0) {
28385
+ return [];
28386
+ }
28387
+ if (timestamp === "0") {
28388
+ return cachedMessages.slice(-count);
28389
+ }
28390
+ const timestampLong = Long.fromString(timestamp);
28391
+ let endIndex = cachedMessages.length - 1;
28392
+ while (endIndex >= 0) {
28393
+ if (Long.fromString(cachedMessages[endIndex].sentTime).lessThanOrEqual(timestampLong)) {
28394
+ break;
28395
+ }
28396
+ endIndex--;
28397
+ }
28398
+ if (endIndex < 0) {
28399
+ return [];
28400
+ }
28401
+ const startIndex = Math.max(0, endIndex - count + 1);
28402
+ return cachedMessages.slice(startIndex, endIndex + 1);
28403
+ }
28404
+ clearConversationCache(conversation) {
28405
+ const dialogId = getFullDialogId(conversation);
28406
+ this.messageCache.delete(dialogId);
28407
+ }
28408
+ clearAllCache() {
28409
+ this.messageCache.clear();
28410
+ }
28411
+ removeMessagesByUId(messageUIds) {
28412
+ if (!messageUIds || messageUIds.length === 0) {
28413
+ return;
28414
+ }
28415
+ const messageUIdSet = new Set(messageUIds);
28416
+ this.messageCache.forEach((messages, dialogId) => {
28417
+ const filteredMessages = messages.filter(msg => !messageUIdSet.has(msg.messageUId));
28418
+ if (filteredMessages.length !== messages.length) {
28419
+ this.messageCache.set(dialogId, filteredMessages);
28420
+ }
28421
+ });
28422
+ }
28423
+ }
28424
+
28326
28425
  class IMClient extends EventEmitter {
28327
28426
  options;
28328
28427
  static imClient;
@@ -28370,6 +28469,7 @@
28370
28469
  this.emit(exports.Events.SUSPEND, this.libLoader.getConnectionStatus());
28371
28470
  },
28372
28471
  batchMessage: messages => {
28472
+ MessageCache.get().addMessages(messages);
28373
28473
  this.emit(exports.Events.MESSAGES, {
28374
28474
  messages
28375
28475
  });
@@ -28389,6 +28489,7 @@
28389
28489
  });
28390
28490
  },
28391
28491
  onRecall: messageUids => {
28492
+ MessageCache.get().removeMessagesByUId(messageUids);
28392
28493
  messageUids.forEach(messageUId => {
28393
28494
  this.emit(exports.Events.RECALL, messageUId);
28394
28495
  });
@@ -28431,7 +28532,7 @@
28431
28532
  const dialogId = getFullDialogId(conversation);
28432
28533
  return getRemoteMessages({
28433
28534
  dialogId,
28434
- offset: options.timestamp ?? "0",
28535
+ offset: options.timestamp ?? '0',
28435
28536
  count: options.count ?? 20,
28436
28537
  newToOld: options.order === 0
28437
28538
  }).then(({
@@ -28465,10 +28566,42 @@
28465
28566
  });
28466
28567
  });
28467
28568
  }
28569
+ async getPreviousHistoryMessages(conversation, timestamp, count = 20) {
28570
+ const cachedMessages = MessageCache.get().getPreviousMessages(conversation, timestamp, count);
28571
+ if (!timestamp) {
28572
+ ConversationManager$1.get().refreshLatestMessage(conversation, cachedMessages[cachedMessages.length - 1]);
28573
+ }
28574
+ if (cachedMessages.length >= count) {
28575
+ return {
28576
+ code: exports.ErrorCode.SUCCESS,
28577
+ data: {
28578
+ list: cachedMessages,
28579
+ hasMore: true
28580
+ }
28581
+ };
28582
+ }
28583
+ const remotesResult = await this.getRemoteHistoryMessages(conversation, {
28584
+ timestamp: cachedMessages[0].sentTime ?? timestamp,
28585
+ count: count - cachedMessages.length,
28586
+ order: 0
28587
+ });
28588
+ if (remotesResult.code !== exports.ErrorCode.SUCCESS) {
28589
+ return remotesResult;
28590
+ }
28591
+ return {
28592
+ code: exports.ErrorCode.SUCCESS,
28593
+ data: {
28594
+ list: [...remotesResult.data.list, ...cachedMessages],
28595
+ hasMore: remotesResult.data.hasMore
28596
+ }
28597
+ };
28598
+ }
28468
28599
  async deleteRemoteMessage(conversation, list) {
28600
+ MessageCache.get().removeMessagesByUId(list.map(e => e.messageUId));
28469
28601
  return deleteMessages$1(getFullDialogId(conversation), list.map(e => e.messageUId)).then(result => result.code);
28470
28602
  }
28471
28603
  async deleteRemoteMessageByTimestamp(conversation, timestamp) {
28604
+ MessageCache.get().clearConversationCache(conversation);
28472
28605
  ConversationManager$1.get().clearHistoryMessages(conversation);
28473
28606
  return clearHistoryMessage(getFullDialogId(conversation), timestamp === 0 ? Number.MAX_VALUE : timestamp).then(result => result.code);
28474
28607
  }
@@ -28498,6 +28631,11 @@
28498
28631
  conversationType: conversationObj.conversationType,
28499
28632
  targetId: conversationObj.targetId
28500
28633
  };
28634
+ if (isDef(conversationObj.latestMessage)) {
28635
+ conversationObj.updateTime = parseInt(conversationObj.latestMessage.sentTime);
28636
+ } else {
28637
+ conversationObj.updateTime = (contentList[contentList.length - 1].updateTime ?? 0) + 1;
28638
+ }
28501
28639
  ConversationManager$1.get().addLocalConversation(conversationObj);
28502
28640
  const localConversation = ConversationManager$1.get().get(conOpt);
28503
28641
  Object.assign(conversationObj, localConversation);
@@ -28546,6 +28684,7 @@
28546
28684
  const conversation = {
28547
28685
  ...conOpt,
28548
28686
  ...localConversation,
28687
+ updateTime: isDef(latestMessage?.sentTime) ? parseInt(latestMessage.sentTime) : undefined,
28549
28688
  latestMessage: latestMessage
28550
28689
  };
28551
28690
  return {
@@ -29848,7 +29987,12 @@
29848
29987
  assert('conversation', conversation, AssertRules.CONVERSATION, true);
29849
29988
  const paramsStr = 'conversationType:' + conversation.conversationType + ',targetId:' + conversation.targetId;
29850
29989
  logger.debug('get remote history message ->' + paramsStr);
29851
- const response = await imClient.getRemoteHistoryMessages(conversation, options);
29990
+ let response;
29991
+ if (options.order === 0) {
29992
+ response = await imClient.getPreviousHistoryMessages(conversation, options.timestamp, options.count);
29993
+ } else {
29994
+ response = await imClient.getRemoteHistoryMessages(conversation, options);
29995
+ }
29852
29996
  if (response.code !== exports.ErrorCode.SUCCESS) {
29853
29997
  logger.warn('get remote history message fail ->' + response.code + ':' + ErrorDesc(response.code) + ',' + paramsStr);
29854
29998
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "1.8.5",
3
+ "version": "1.8.7",
4
4
  "main": "index.umd.js",
5
5
  "module": "index.esm.js",
6
6
  "types": "types/index.d.ts",
@@ -63,4 +63,8 @@ export default interface IReceivedConversation {
63
63
  * 阅后即焚的时长
64
64
  */
65
65
  burnAfterReadingTime?: number | null;
66
+ /**
67
+ * 会话更新时间,根据这个排序
68
+ */
69
+ updateTime?: number | null;
66
70
  }