@onyx-p/imlib-web 2.4.2 → 2.4.6

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.
Files changed (3) hide show
  1. package/index.esm.js +130 -96
  2. package/index.umd.js +130 -96
  3. package/package.json +1 -1
package/index.esm.js CHANGED
@@ -19491,24 +19491,28 @@ class DialogSecretKey {
19491
19491
  if (!dialogIdList.length) {
19492
19492
  return new Map();
19493
19493
  }
19494
- const {
19495
- code,
19496
- data
19497
- } = await getDialogKey(dialogIdList.map(e => Long.fromString(e)));
19498
- if (code === ErrorCode.SUCCESS) {
19499
- const content = new Map();
19500
- for (const k in data.entry) {
19501
- const v = data.entry[k];
19502
- if (v.aesKey?.length && v.aesIV?.length) {
19503
- const keyItem = {
19504
- key: v.aesKey,
19505
- iv: v.aesIV
19506
- };
19507
- content.set(k, keyItem);
19508
- this.aesKeyRecord.set(k, keyItem);
19494
+ try {
19495
+ const {
19496
+ code,
19497
+ data
19498
+ } = await getDialogKey(dialogIdList.map(e => Long.fromString(e)));
19499
+ if (code === ErrorCode.SUCCESS) {
19500
+ const content = new Map();
19501
+ for (const k in data.entry) {
19502
+ const v = data.entry[k];
19503
+ if (v.aesKey?.length && v.aesIV?.length) {
19504
+ const keyItem = {
19505
+ key: v.aesKey,
19506
+ iv: v.aesIV
19507
+ };
19508
+ content.set(k, keyItem);
19509
+ this.aesKeyRecord.set(k, keyItem);
19510
+ }
19509
19511
  }
19512
+ return content;
19510
19513
  }
19511
- return content;
19514
+ } catch (error) {
19515
+ logger.error('getDialogAesKeyListFromRemote error', error);
19512
19516
  }
19513
19517
  return new Map();
19514
19518
  }
@@ -19739,7 +19743,7 @@ class ConversationStore {
19739
19743
  messageDirection,
19740
19744
  content
19741
19745
  } = message;
19742
- if (messageDirection === MessageDirection.SEND || !isMentioned && messageType !== MessageTypes.RECALL) {
19746
+ if (!messageUId || messageDirection === MessageDirection.SEND || !isMentioned && messageType !== MessageTypes.RECALL) {
19743
19747
  return;
19744
19748
  }
19745
19749
  const key = this.getStoreKey({
@@ -19756,7 +19760,7 @@ class ConversationStore {
19756
19760
  }
19757
19761
  if (messageType === MessageTypes.RECALL && conversationType === ConversationType.GROUP) {
19758
19762
  const recallContent = content;
19759
- const index = localMentionedUIdList.indexOf(recallContent.messageUId.toString());
19763
+ const index = localMentionedUIdList.indexOf(recallContent.messageUId?.toString() ?? '');
19760
19764
  if (index >= 0) {
19761
19765
  localMentionedUIdList.splice(index, 1);
19762
19766
  }
@@ -20435,15 +20439,22 @@ function parse(orginalMsgs, callback) {
20435
20439
  }
20436
20440
  const remainDialogIds = new Set([...msgs.keys()]);
20437
20441
  DialogSecretKey$1.getDialogAesKeyListInBatches([...msgs.keys()], (remote, aesKeys) => {
20438
- if (aesKeys.size) {
20439
- const dialogIds = [...aesKeys.keys()];
20440
- for (const k of dialogIds) {
20441
- remainDialogIds.delete(k);
20442
+ try {
20443
+ if (aesKeys.size) {
20444
+ const dialogIds = [...aesKeys.keys()];
20445
+ for (const k of dialogIds) {
20446
+ remainDialogIds.delete(k);
20447
+ }
20448
+ callback(!remainDialogIds.size, parseDialogsMessages(dialogIds, msgs, aesKeys));
20449
+ }
20450
+ if (remainDialogIds.size && remote) {
20451
+ callback(true, new Map());
20452
+ }
20453
+ } catch (error) {
20454
+ logger.error('parseDialogsMessages error', error);
20455
+ if (remainDialogIds.size && remote) {
20456
+ callback(true, new Map());
20442
20457
  }
20443
- callback(!remainDialogIds.size, parseDialogsMessages(dialogIds, msgs, aesKeys));
20444
- }
20445
- if (remainDialogIds.size && remote) {
20446
- callback(true, new Map());
20447
20458
  }
20448
20459
  });
20449
20460
  }
@@ -20506,7 +20517,11 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey) => {
20506
20517
  if (receivedMessage.isStatusMessage && Long.fromNumber(getServerTime$1()).subtract(receivedMessage.sentTime).greaterThan(STATUSMESSAGE_ALIVE_TIMEMS)) {
20507
20518
  return;
20508
20519
  }
20509
- contentList.push(receivedMessage);
20520
+ if (notEmptyString(receivedMessage.messageUId)) {
20521
+ contentList.push(receivedMessage);
20522
+ } else {
20523
+ logger.error('message is invalid', item);
20524
+ }
20510
20525
  }
20511
20526
  });
20512
20527
  return contentList;
@@ -21428,86 +21443,108 @@ class MessageLoader {
21428
21443
  });
21429
21444
  await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
21430
21445
  serverMessageParser.parse(msg, (done, outputMsgs) => {
21431
- const messages = [];
21432
- let recallMessageUIds = [];
21446
+ try {
21447
+ this.processMessages(outputMsgs, !this.pullOfflineFinished);
21448
+ } catch (error) {
21449
+ logger.error('processMessages error', error);
21450
+ }
21451
+ if (done) {
21452
+ try {
21453
+ let seqNo_long;
21454
+ if (seqno) {
21455
+ if (Long.isLong(seqno)) {
21456
+ seqNo_long = seqno;
21457
+ } else if (typeof seqno === 'string') {
21458
+ seqNo_long = Long.fromString(seqno);
21459
+ } else if (typeof seqno === 'number') {
21460
+ seqNo_long = Long.fromNumber(seqno);
21461
+ }
21462
+ }
21463
+ if (seqNo_long && Long.isLong(seqNo_long) && seqNo_long.ge(this.serverMsgSeqno)) {
21464
+ this.serverMsgSeqno = seqNo_long;
21465
+ }
21466
+ const isFinished = this.serverMsgSeqno.lessThanOrEqual(offset);
21467
+ logger.info(`pullMsg success -> syncTime: ${offset}, finished: ${isFinished}`);
21468
+ this.letterbox?.setInboxOffset(offset);
21469
+ this.pullingMsg = false;
21470
+ if (isFinished && !this.pullOfflineFinished) {
21471
+ this.pullOfflineFinished = true;
21472
+ this.watcher.pullFinished && this.watcher.pullFinished();
21473
+ }
21474
+ if (!isFinished) {
21475
+ this.pullMsg();
21476
+ }
21477
+ } catch (error) {
21478
+ logger.error('setPullMsgDone error', error);
21479
+ this.pullingMsg = false;
21480
+ }
21481
+ }
21482
+ });
21483
+ }
21484
+ processMessages(outputMsgs, isOffLineMessage) {
21485
+ const messages = [];
21486
+ let recallMessageUIds = [];
21487
+ outputMsgs.forEach((l, dialogId) => {
21488
+ let messageList = [];
21433
21489
  const recallMessageIndexes = [];
21434
- const isOffLineMessage = !this.pullOfflineFinished;
21435
- outputMsgs.forEach((l, dialogId) => {
21436
- let messageList = [];
21437
- l.forEach(m => {
21438
- if (m.messageType === MessageTypes.RECALL && RecallMessageStore.has(m.content.messageUId)) {
21490
+ l.forEach(m => {
21491
+ if (m.messageType === MessageTypes.RECALL && RecallMessageStore.has(m.content.messageUId)) {
21492
+ if (m.content.messageUId) {
21439
21493
  RecallMessageStore.remove(m.content.messageUId);
21440
21494
  recallMessageUIds.push(m.content.messageUId);
21441
21495
  } else {
21442
- m.isOffLineMessage = isOffLineMessage;
21443
- if (!m.messageId || m.messageId > getCurrentMessageId()) {
21444
- m.messageId = generateNewMessageId();
21445
- }
21446
- ConversationManager$1.get().setConversationCacheByMessage(m);
21447
- messageList.push(m);
21448
- if (m.messageType === MessageTypes.RECALL) {
21449
- recallMessageIndexes.push(messageList.length - 1);
21450
- }
21496
+ logger.error('recallMessage’s messageUId is undefined', m);
21497
+ }
21498
+ } else if (m.messageUId) {
21499
+ m.isOffLineMessage = isOffLineMessage;
21500
+ if (!m.messageId || m.messageId > getCurrentMessageId()) {
21501
+ m.messageId = generateNewMessageId();
21502
+ }
21503
+ ConversationManager$1.get().setConversationCacheByMessage(m);
21504
+ messageList.push(m);
21505
+ if (m.messageType === MessageTypes.RECALL) {
21506
+ recallMessageIndexes.push(messageList.length - 1);
21451
21507
  }
21452
21508
  if ([NotiMessageTypes.PRIVATE_OPEN_BURNAFTERREADING, NotiMessageTypes.GROUP_OPEN_BURNAFTERREADING, NotiMessageTypes.PRIVATE_CLOSE_BURNAFTERREADING, NotiMessageTypes.GROUP_CLOSE_BURNAFTERREADING].includes(m.messageType)) {
21453
21509
  this.handleBurnAfterReadingMessage(m);
21454
21510
  }
21455
- });
21456
- let deletedMessageIndexes = [];
21457
- for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
21458
- const index = recallMessageIndexes[i];
21459
- const recallMessage = messageList[index];
21460
- const recallContent = recallMessage.content;
21461
- const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
21462
- if (messageIndex !== -1) {
21463
- deletedMessageIndexes.push(messageIndex);
21464
- } else {
21465
- recallMessageUIds.push(recallContent.messageUId);
21466
- deletedMessageIndexes.push(index);
21467
- }
21468
- }
21469
- messageList = messageList.filter((m, index) => !deletedMessageIndexes.includes(index));
21470
- messages.push(...messageList);
21471
- if (this.isExistPersistedMessage(messageList)) {
21472
- splitFullDialog(dialogId);
21511
+ } else {
21512
+ logger.error('message‘s messageUId is undefined', m);
21473
21513
  }
21474
21514
  });
21475
- let normalMessages = this.handleReceiptMessages(messages);
21476
- if (normalMessages.length) {
21477
- this.handleBatchMessages(normalMessages);
21478
- MessageReceiptManager$1.get()?.sendArrivalReceipts(normalMessages);
21479
- }
21480
- if (recallMessageUIds.length) {
21481
- MessageCache$1.get()?.convertToRecallMessages(recallMessageUIds);
21482
- this.watcher.onRecall?.(recallMessageUIds);
21515
+ let deletedMessageIndexes = [];
21516
+ for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
21517
+ const index = recallMessageIndexes[i];
21518
+ const recallMessage = messageList[index];
21519
+ const recallContent = recallMessage.content;
21520
+ const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
21521
+ if (messageIndex !== -1) {
21522
+ deletedMessageIndexes.push(messageIndex);
21523
+ } else {
21524
+ recallMessageUIds.push(recallContent.messageUId);
21525
+ deletedMessageIndexes.push(index);
21526
+ }
21483
21527
  }
21484
- if (done) {
21485
- let seqNo_long;
21486
- if (seqno) {
21487
- if (Long.isLong(seqno)) {
21488
- seqNo_long = seqno;
21489
- } else if (typeof seqno === 'string') {
21490
- seqNo_long = Long.fromString(seqno);
21491
- } else if (typeof seqno === 'number') {
21492
- seqNo_long = Long.fromNumber(seqno);
21528
+ if (deletedMessageIndexes.length) {
21529
+ let messageList_tmp = [];
21530
+ messageList.forEach((m, index) => {
21531
+ if (!deletedMessageIndexes.includes(index)) {
21532
+ messageList_tmp.push(m);
21493
21533
  }
21494
- }
21495
- if (seqNo_long && Long.isLong(seqNo_long) && seqNo_long.ge(this.serverMsgSeqno)) {
21496
- this.serverMsgSeqno = seqNo_long;
21497
- }
21498
- const isFinished = this.serverMsgSeqno.lessThanOrEqual(offset);
21499
- logger.info(`pullMsg success -> syncTime: ${offset}, finished: ${isFinished}`);
21500
- this.letterbox?.setInboxOffset(offset);
21501
- this.pullingMsg = false;
21502
- if (isFinished && !this.pullOfflineFinished) {
21503
- this.pullOfflineFinished = true;
21504
- this.watcher.pullFinished && this.watcher.pullFinished();
21505
- }
21506
- if (!isFinished) {
21507
- this.pullMsg();
21508
- }
21534
+ });
21535
+ messageList = messageList_tmp;
21509
21536
  }
21537
+ messages.push(...messageList);
21510
21538
  });
21539
+ let normalMessages = this.handleReceiptMessages(messages);
21540
+ if (normalMessages.length) {
21541
+ this.handleBatchMessages(normalMessages);
21542
+ MessageReceiptManager$1.get()?.sendArrivalReceipts(normalMessages);
21543
+ }
21544
+ if (recallMessageUIds.length) {
21545
+ MessageCache$1.get()?.convertToRecallMessages(recallMessageUIds);
21546
+ this.watcher.onRecall?.(recallMessageUIds);
21547
+ }
21511
21548
  }
21512
21549
  handleBurnAfterReadingMessage(message) {
21513
21550
  const content = message.content;
@@ -21591,9 +21628,6 @@ class MessageLoader {
21591
21628
  this.watcher.batchMessage?.(filteredMessages);
21592
21629
  }
21593
21630
  }
21594
- isExistPersistedMessage(messageList) {
21595
- return messageList.some(m => m.isPersited);
21596
- }
21597
21631
  }
21598
21632
 
21599
21633
  class BaseMessage {
package/index.umd.js CHANGED
@@ -19497,24 +19497,28 @@
19497
19497
  if (!dialogIdList.length) {
19498
19498
  return new Map();
19499
19499
  }
19500
- const {
19501
- code,
19502
- data
19503
- } = await getDialogKey(dialogIdList.map(e => Long.fromString(e)));
19504
- if (code === exports.ErrorCode.SUCCESS) {
19505
- const content = new Map();
19506
- for (const k in data.entry) {
19507
- const v = data.entry[k];
19508
- if (v.aesKey?.length && v.aesIV?.length) {
19509
- const keyItem = {
19510
- key: v.aesKey,
19511
- iv: v.aesIV
19512
- };
19513
- content.set(k, keyItem);
19514
- this.aesKeyRecord.set(k, keyItem);
19500
+ try {
19501
+ const {
19502
+ code,
19503
+ data
19504
+ } = await getDialogKey(dialogIdList.map(e => Long.fromString(e)));
19505
+ if (code === exports.ErrorCode.SUCCESS) {
19506
+ const content = new Map();
19507
+ for (const k in data.entry) {
19508
+ const v = data.entry[k];
19509
+ if (v.aesKey?.length && v.aesIV?.length) {
19510
+ const keyItem = {
19511
+ key: v.aesKey,
19512
+ iv: v.aesIV
19513
+ };
19514
+ content.set(k, keyItem);
19515
+ this.aesKeyRecord.set(k, keyItem);
19516
+ }
19515
19517
  }
19518
+ return content;
19516
19519
  }
19517
- return content;
19520
+ } catch (error) {
19521
+ logger.error('getDialogAesKeyListFromRemote error', error);
19518
19522
  }
19519
19523
  return new Map();
19520
19524
  }
@@ -19745,7 +19749,7 @@
19745
19749
  messageDirection,
19746
19750
  content
19747
19751
  } = message;
19748
- if (messageDirection === exports.MessageDirection.SEND || !isMentioned && messageType !== MessageTypes.RECALL) {
19752
+ if (!messageUId || messageDirection === exports.MessageDirection.SEND || !isMentioned && messageType !== MessageTypes.RECALL) {
19749
19753
  return;
19750
19754
  }
19751
19755
  const key = this.getStoreKey({
@@ -19762,7 +19766,7 @@
19762
19766
  }
19763
19767
  if (messageType === MessageTypes.RECALL && conversationType === exports.ConversationType.GROUP) {
19764
19768
  const recallContent = content;
19765
- const index = localMentionedUIdList.indexOf(recallContent.messageUId.toString());
19769
+ const index = localMentionedUIdList.indexOf(recallContent.messageUId?.toString() ?? '');
19766
19770
  if (index >= 0) {
19767
19771
  localMentionedUIdList.splice(index, 1);
19768
19772
  }
@@ -20441,15 +20445,22 @@
20441
20445
  }
20442
20446
  const remainDialogIds = new Set([...msgs.keys()]);
20443
20447
  DialogSecretKey$1.getDialogAesKeyListInBatches([...msgs.keys()], (remote, aesKeys) => {
20444
- if (aesKeys.size) {
20445
- const dialogIds = [...aesKeys.keys()];
20446
- for (const k of dialogIds) {
20447
- remainDialogIds.delete(k);
20448
+ try {
20449
+ if (aesKeys.size) {
20450
+ const dialogIds = [...aesKeys.keys()];
20451
+ for (const k of dialogIds) {
20452
+ remainDialogIds.delete(k);
20453
+ }
20454
+ callback(!remainDialogIds.size, parseDialogsMessages(dialogIds, msgs, aesKeys));
20455
+ }
20456
+ if (remainDialogIds.size && remote) {
20457
+ callback(true, new Map());
20458
+ }
20459
+ } catch (error) {
20460
+ logger.error('parseDialogsMessages error', error);
20461
+ if (remainDialogIds.size && remote) {
20462
+ callback(true, new Map());
20448
20463
  }
20449
- callback(!remainDialogIds.size, parseDialogsMessages(dialogIds, msgs, aesKeys));
20450
- }
20451
- if (remainDialogIds.size && remote) {
20452
- callback(true, new Map());
20453
20464
  }
20454
20465
  });
20455
20466
  }
@@ -20512,7 +20523,11 @@
20512
20523
  if (receivedMessage.isStatusMessage && Long.fromNumber(getServerTime$1()).subtract(receivedMessage.sentTime).greaterThan(STATUSMESSAGE_ALIVE_TIMEMS)) {
20513
20524
  return;
20514
20525
  }
20515
- contentList.push(receivedMessage);
20526
+ if (notEmptyString(receivedMessage.messageUId)) {
20527
+ contentList.push(receivedMessage);
20528
+ } else {
20529
+ logger.error('message is invalid', item);
20530
+ }
20516
20531
  }
20517
20532
  });
20518
20533
  return contentList;
@@ -21434,86 +21449,108 @@
21434
21449
  });
21435
21450
  await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
21436
21451
  serverMessageParser.parse(msg, (done, outputMsgs) => {
21437
- const messages = [];
21438
- let recallMessageUIds = [];
21452
+ try {
21453
+ this.processMessages(outputMsgs, !this.pullOfflineFinished);
21454
+ } catch (error) {
21455
+ logger.error('processMessages error', error);
21456
+ }
21457
+ if (done) {
21458
+ try {
21459
+ let seqNo_long;
21460
+ if (seqno) {
21461
+ if (Long.isLong(seqno)) {
21462
+ seqNo_long = seqno;
21463
+ } else if (typeof seqno === 'string') {
21464
+ seqNo_long = Long.fromString(seqno);
21465
+ } else if (typeof seqno === 'number') {
21466
+ seqNo_long = Long.fromNumber(seqno);
21467
+ }
21468
+ }
21469
+ if (seqNo_long && Long.isLong(seqNo_long) && seqNo_long.ge(this.serverMsgSeqno)) {
21470
+ this.serverMsgSeqno = seqNo_long;
21471
+ }
21472
+ const isFinished = this.serverMsgSeqno.lessThanOrEqual(offset);
21473
+ logger.info(`pullMsg success -> syncTime: ${offset}, finished: ${isFinished}`);
21474
+ this.letterbox?.setInboxOffset(offset);
21475
+ this.pullingMsg = false;
21476
+ if (isFinished && !this.pullOfflineFinished) {
21477
+ this.pullOfflineFinished = true;
21478
+ this.watcher.pullFinished && this.watcher.pullFinished();
21479
+ }
21480
+ if (!isFinished) {
21481
+ this.pullMsg();
21482
+ }
21483
+ } catch (error) {
21484
+ logger.error('setPullMsgDone error', error);
21485
+ this.pullingMsg = false;
21486
+ }
21487
+ }
21488
+ });
21489
+ }
21490
+ processMessages(outputMsgs, isOffLineMessage) {
21491
+ const messages = [];
21492
+ let recallMessageUIds = [];
21493
+ outputMsgs.forEach((l, dialogId) => {
21494
+ let messageList = [];
21439
21495
  const recallMessageIndexes = [];
21440
- const isOffLineMessage = !this.pullOfflineFinished;
21441
- outputMsgs.forEach((l, dialogId) => {
21442
- let messageList = [];
21443
- l.forEach(m => {
21444
- if (m.messageType === MessageTypes.RECALL && RecallMessageStore.has(m.content.messageUId)) {
21496
+ l.forEach(m => {
21497
+ if (m.messageType === MessageTypes.RECALL && RecallMessageStore.has(m.content.messageUId)) {
21498
+ if (m.content.messageUId) {
21445
21499
  RecallMessageStore.remove(m.content.messageUId);
21446
21500
  recallMessageUIds.push(m.content.messageUId);
21447
21501
  } else {
21448
- m.isOffLineMessage = isOffLineMessage;
21449
- if (!m.messageId || m.messageId > getCurrentMessageId()) {
21450
- m.messageId = generateNewMessageId();
21451
- }
21452
- ConversationManager$1.get().setConversationCacheByMessage(m);
21453
- messageList.push(m);
21454
- if (m.messageType === MessageTypes.RECALL) {
21455
- recallMessageIndexes.push(messageList.length - 1);
21456
- }
21502
+ logger.error('recallMessage’s messageUId is undefined', m);
21503
+ }
21504
+ } else if (m.messageUId) {
21505
+ m.isOffLineMessage = isOffLineMessage;
21506
+ if (!m.messageId || m.messageId > getCurrentMessageId()) {
21507
+ m.messageId = generateNewMessageId();
21508
+ }
21509
+ ConversationManager$1.get().setConversationCacheByMessage(m);
21510
+ messageList.push(m);
21511
+ if (m.messageType === MessageTypes.RECALL) {
21512
+ recallMessageIndexes.push(messageList.length - 1);
21457
21513
  }
21458
21514
  if ([NotiMessageTypes.PRIVATE_OPEN_BURNAFTERREADING, NotiMessageTypes.GROUP_OPEN_BURNAFTERREADING, NotiMessageTypes.PRIVATE_CLOSE_BURNAFTERREADING, NotiMessageTypes.GROUP_CLOSE_BURNAFTERREADING].includes(m.messageType)) {
21459
21515
  this.handleBurnAfterReadingMessage(m);
21460
21516
  }
21461
- });
21462
- let deletedMessageIndexes = [];
21463
- for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
21464
- const index = recallMessageIndexes[i];
21465
- const recallMessage = messageList[index];
21466
- const recallContent = recallMessage.content;
21467
- const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
21468
- if (messageIndex !== -1) {
21469
- deletedMessageIndexes.push(messageIndex);
21470
- } else {
21471
- recallMessageUIds.push(recallContent.messageUId);
21472
- deletedMessageIndexes.push(index);
21473
- }
21474
- }
21475
- messageList = messageList.filter((m, index) => !deletedMessageIndexes.includes(index));
21476
- messages.push(...messageList);
21477
- if (this.isExistPersistedMessage(messageList)) {
21478
- splitFullDialog(dialogId);
21517
+ } else {
21518
+ logger.error('message‘s messageUId is undefined', m);
21479
21519
  }
21480
21520
  });
21481
- let normalMessages = this.handleReceiptMessages(messages);
21482
- if (normalMessages.length) {
21483
- this.handleBatchMessages(normalMessages);
21484
- MessageReceiptManager$1.get()?.sendArrivalReceipts(normalMessages);
21485
- }
21486
- if (recallMessageUIds.length) {
21487
- MessageCache$1.get()?.convertToRecallMessages(recallMessageUIds);
21488
- this.watcher.onRecall?.(recallMessageUIds);
21521
+ let deletedMessageIndexes = [];
21522
+ for (let i = recallMessageIndexes.length - 1; i >= 0; i--) {
21523
+ const index = recallMessageIndexes[i];
21524
+ const recallMessage = messageList[index];
21525
+ const recallContent = recallMessage.content;
21526
+ const messageIndex = messageList.findIndex(m => m.messageUId === recallContent.messageUId);
21527
+ if (messageIndex !== -1) {
21528
+ deletedMessageIndexes.push(messageIndex);
21529
+ } else {
21530
+ recallMessageUIds.push(recallContent.messageUId);
21531
+ deletedMessageIndexes.push(index);
21532
+ }
21489
21533
  }
21490
- if (done) {
21491
- let seqNo_long;
21492
- if (seqno) {
21493
- if (Long.isLong(seqno)) {
21494
- seqNo_long = seqno;
21495
- } else if (typeof seqno === 'string') {
21496
- seqNo_long = Long.fromString(seqno);
21497
- } else if (typeof seqno === 'number') {
21498
- seqNo_long = Long.fromNumber(seqno);
21534
+ if (deletedMessageIndexes.length) {
21535
+ let messageList_tmp = [];
21536
+ messageList.forEach((m, index) => {
21537
+ if (!deletedMessageIndexes.includes(index)) {
21538
+ messageList_tmp.push(m);
21499
21539
  }
21500
- }
21501
- if (seqNo_long && Long.isLong(seqNo_long) && seqNo_long.ge(this.serverMsgSeqno)) {
21502
- this.serverMsgSeqno = seqNo_long;
21503
- }
21504
- const isFinished = this.serverMsgSeqno.lessThanOrEqual(offset);
21505
- logger.info(`pullMsg success -> syncTime: ${offset}, finished: ${isFinished}`);
21506
- this.letterbox?.setInboxOffset(offset);
21507
- this.pullingMsg = false;
21508
- if (isFinished && !this.pullOfflineFinished) {
21509
- this.pullOfflineFinished = true;
21510
- this.watcher.pullFinished && this.watcher.pullFinished();
21511
- }
21512
- if (!isFinished) {
21513
- this.pullMsg();
21514
- }
21540
+ });
21541
+ messageList = messageList_tmp;
21515
21542
  }
21543
+ messages.push(...messageList);
21516
21544
  });
21545
+ let normalMessages = this.handleReceiptMessages(messages);
21546
+ if (normalMessages.length) {
21547
+ this.handleBatchMessages(normalMessages);
21548
+ MessageReceiptManager$1.get()?.sendArrivalReceipts(normalMessages);
21549
+ }
21550
+ if (recallMessageUIds.length) {
21551
+ MessageCache$1.get()?.convertToRecallMessages(recallMessageUIds);
21552
+ this.watcher.onRecall?.(recallMessageUIds);
21553
+ }
21517
21554
  }
21518
21555
  handleBurnAfterReadingMessage(message) {
21519
21556
  const content = message.content;
@@ -21597,9 +21634,6 @@
21597
21634
  this.watcher.batchMessage?.(filteredMessages);
21598
21635
  }
21599
21636
  }
21600
- isExistPersistedMessage(messageList) {
21601
- return messageList.some(m => m.isPersited);
21602
- }
21603
21637
  }
21604
21638
 
21605
21639
  class BaseMessage {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "2.4.2",
3
+ "version": "2.4.6",
4
4
  "main": "index.umd.js",
5
5
  "module": "index.esm.js",
6
6
  "types": "types/index.d.ts",