@onyx-p/imlib-web 2.6.0 → 2.6.2

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
@@ -22273,6 +22273,28 @@ class MessageCache {
22273
22273
  return null;
22274
22274
  }
22275
22275
  }
22276
+ decryptMessage(message) {
22277
+ const decryptedMessage = {
22278
+ ...message
22279
+ };
22280
+ if (typeof decryptedMessage.content === 'string' && decryptedMessage.content) {
22281
+ try {
22282
+ decryptedMessage.content = this.decryptContent(decryptedMessage.content);
22283
+ } catch (error) {
22284
+ logger.error('解密消息内容失败', error);
22285
+ decryptedMessage.content = null;
22286
+ }
22287
+ }
22288
+ if (decryptedMessage.quotedReply && typeof decryptedMessage.quotedReply.content === 'string' && decryptedMessage.quotedReply.content) {
22289
+ try {
22290
+ decryptedMessage.quotedReply.content = this.decryptContent(decryptedMessage.quotedReply.content);
22291
+ } catch (error) {
22292
+ logger.error('解密引用消息内容失败', error);
22293
+ decryptedMessage.quotedReply.content = null;
22294
+ }
22295
+ }
22296
+ return decryptedMessage;
22297
+ }
22276
22298
  async addMessages(messages, toConversation, isEnd = undefined) {
22277
22299
  const dialogId = getFullDialogId(toConversation);
22278
22300
  if (isDef(isEnd)) {
@@ -22339,25 +22361,7 @@ class MessageCache {
22339
22361
  const cursor = event.target.result;
22340
22362
  if (cursor) {
22341
22363
  if (processedCount < count) {
22342
- const message = {
22343
- ...cursor.value
22344
- };
22345
- if (typeof message.content === 'string' && message.content) {
22346
- try {
22347
- message.content = this.decryptContent(message.content);
22348
- } catch (error) {
22349
- logger.error('Failed to decrypt message content', error);
22350
- message.content = null;
22351
- }
22352
- }
22353
- if (message.quotedReply && typeof message.quotedReply.content === 'string' && message.quotedReply.content) {
22354
- try {
22355
- message.quotedReply.content = this.decryptContent(message.quotedReply.content);
22356
- } catch (error) {
22357
- logger.error('Failed to decrypt reference message content', error);
22358
- message.quotedReply.content = null;
22359
- }
22360
- }
22364
+ const message = this.decryptMessage(cursor.value);
22361
22365
  messages.push(message);
22362
22366
  processedCount++;
22363
22367
  cursor.continue();
@@ -22566,17 +22570,7 @@ class MessageCache {
22566
22570
  cursorRequest.onsuccess = event => {
22567
22571
  const cursor = event.target.result;
22568
22572
  if (cursor) {
22569
- const message = {
22570
- ...cursor.value
22571
- };
22572
- if (typeof message.content === 'string' && message.content) {
22573
- try {
22574
- message.content = this.decryptContent(message.content);
22575
- } catch (error) {
22576
- logger.error('Failed to decrypt message content', error);
22577
- message.content = null;
22578
- }
22579
- }
22573
+ const message = this.decryptMessage(cursor.value);
22580
22574
  resolve(message);
22581
22575
  } else {
22582
22576
  resolve(null);
@@ -22602,17 +22596,7 @@ class MessageCache {
22602
22596
  request.onsuccess = () => {
22603
22597
  const message = request.result;
22604
22598
  if (message) {
22605
- const decryptedMessage = {
22606
- ...message
22607
- };
22608
- if (typeof decryptedMessage.content === 'string' && decryptedMessage.content) {
22609
- try {
22610
- decryptedMessage.content = this.decryptContent(decryptedMessage.content);
22611
- } catch (error) {
22612
- logger.error('解密消息内容失败', error);
22613
- decryptedMessage.content = null;
22614
- }
22615
- }
22599
+ const decryptedMessage = this.decryptMessage(message);
22616
22600
  resolve(decryptedMessage);
22617
22601
  } else {
22618
22602
  resolve(null);
@@ -22719,6 +22703,30 @@ class MessageCache {
22719
22703
  };
22720
22704
  });
22721
22705
  }
22706
+ async getMessageByUId(messageUId) {
22707
+ if (!this.db) {
22708
+ return null;
22709
+ }
22710
+ return new Promise((resolve, reject) => {
22711
+ const transaction = this.db.transaction(this.STORE_NAME, 'readonly');
22712
+ const store = transaction.objectStore(this.STORE_NAME);
22713
+ const index = store.index('messageUId');
22714
+ const request = index.get(messageUId);
22715
+ request.onsuccess = () => {
22716
+ const message = request.result;
22717
+ if (message) {
22718
+ const decryptedMessage = this.decryptMessage(message);
22719
+ resolve(decryptedMessage);
22720
+ } else {
22721
+ resolve(null);
22722
+ }
22723
+ };
22724
+ request.onerror = event => {
22725
+ logger.error('查询消息失败', event);
22726
+ resolve(null);
22727
+ };
22728
+ });
22729
+ }
22722
22730
  }
22723
22731
  let cache = null;
22724
22732
  var MessageCache$1 = {
@@ -30371,7 +30379,7 @@ const sendQuoteReplyMessage$1 = async (message, quoteReply, sendOptions) => {
30371
30379
  code: checkResult.code
30372
30380
  };
30373
30381
  }
30374
- let receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs);
30382
+ const receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs);
30375
30383
  receivedMessage.quotedReply = quoteReply;
30376
30384
  await saveSentMessage(receivedMessage, checkResult.sentArgs);
30377
30385
  const dialogId = getFullDialogId(quoteReply);
@@ -30451,18 +30459,19 @@ const sendQuoteReplyMessage$1 = async (message, quoteReply, sendOptions) => {
30451
30459
  };
30452
30460
  response = await sendQuotePrivateChatMessage(privateParams);
30453
30461
  }
30462
+ const finalMessage = deepClone(receivedMessage);
30454
30463
  if (response.code === ErrorCode.SUCCESS) {
30455
- receivedMessage.sentTime = response.data.msgSendTime.toString();
30456
- receivedMessage.messageUId = response.data.msgId.toString();
30457
- receivedMessage.sentStatus = SentStatus.SENT;
30458
- await saveSentMessage(receivedMessage, checkResult.sentArgs);
30464
+ finalMessage.sentTime = response.data.msgSendTime.toString();
30465
+ finalMessage.messageUId = response.data.msgId.toString();
30466
+ finalMessage.sentStatus = SentStatus.SENT;
30467
+ await saveSentMessage(finalMessage, checkResult.sentArgs);
30459
30468
  } else {
30460
- receivedMessage.sentStatus = SentStatus.FAILED;
30461
- await saveSentMessage(receivedMessage, checkResult.sentArgs);
30469
+ finalMessage.sentStatus = SentStatus.FAILED;
30470
+ await saveSentMessage(finalMessage, checkResult.sentArgs);
30462
30471
  }
30463
30472
  return {
30464
30473
  code: response.code,
30465
- data: receivedMessage
30474
+ data: finalMessage
30466
30475
  };
30467
30476
  };
30468
30477
  async function internal_sendMessage(conversation, message, options, uploadOptions) {
@@ -31026,6 +31035,12 @@ class IMClient extends EventEmitter {
31026
31035
  }
31027
31036
  return removedMsgUids;
31028
31037
  }
31038
+ async getMessageById(messageId) {
31039
+ return MessageCache$1.get()?.getMessageById(messageId);
31040
+ }
31041
+ async getMessageByUId(messageUId) {
31042
+ return MessageCache$1.get()?.getMessageByUId(messageUId);
31043
+ }
31029
31044
  }
31030
31045
 
31031
31046
  /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
@@ -32300,5 +32315,19 @@ const clearBurnAfterReadingExpiredMessages = async conversation => {
32300
32315
  const sendQuoteReplyMessage = async (message, quoteReply, options) => {
32301
32316
  return await imClient.sendQuoteReplyMessage(message, quoteReply, options);
32302
32317
  };
32318
+ const getMessageById = async messageId => {
32319
+ const message = await imClient.getMessageById(messageId);
32320
+ return {
32321
+ code: ErrorCode.SUCCESS,
32322
+ data: message
32323
+ };
32324
+ };
32325
+ const getMessageByUId = async messageUId => {
32326
+ const message = await imClient.getMessageByUId(messageUId);
32327
+ return {
32328
+ code: ErrorCode.SUCCESS,
32329
+ data: message
32330
+ };
32331
+ };
32303
32332
 
32304
- 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, sendQuoteReplyMessage, sendReadReceipts, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
32333
+ 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, getMessageById, getMessageByUId, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, logOut, mockLogin, onceEventListener, parseChatRecordMsgDetails, recallMessage, registerMessageType, removeConversation, removeEventListener, request, saveTextMessageDraft, sendFileMessage, sendGIFMessage, sendHQVoiceMessage, sendImageMessage, sendMessage, sendQuoteReplyMessage, sendReadReceipts, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
package/index.umd.js CHANGED
@@ -22279,6 +22279,28 @@
22279
22279
  return null;
22280
22280
  }
22281
22281
  }
22282
+ decryptMessage(message) {
22283
+ const decryptedMessage = {
22284
+ ...message
22285
+ };
22286
+ if (typeof decryptedMessage.content === 'string' && decryptedMessage.content) {
22287
+ try {
22288
+ decryptedMessage.content = this.decryptContent(decryptedMessage.content);
22289
+ } catch (error) {
22290
+ logger.error('解密消息内容失败', error);
22291
+ decryptedMessage.content = null;
22292
+ }
22293
+ }
22294
+ if (decryptedMessage.quotedReply && typeof decryptedMessage.quotedReply.content === 'string' && decryptedMessage.quotedReply.content) {
22295
+ try {
22296
+ decryptedMessage.quotedReply.content = this.decryptContent(decryptedMessage.quotedReply.content);
22297
+ } catch (error) {
22298
+ logger.error('解密引用消息内容失败', error);
22299
+ decryptedMessage.quotedReply.content = null;
22300
+ }
22301
+ }
22302
+ return decryptedMessage;
22303
+ }
22282
22304
  async addMessages(messages, toConversation, isEnd = undefined) {
22283
22305
  const dialogId = getFullDialogId(toConversation);
22284
22306
  if (isDef(isEnd)) {
@@ -22345,25 +22367,7 @@
22345
22367
  const cursor = event.target.result;
22346
22368
  if (cursor) {
22347
22369
  if (processedCount < count) {
22348
- const message = {
22349
- ...cursor.value
22350
- };
22351
- if (typeof message.content === 'string' && message.content) {
22352
- try {
22353
- message.content = this.decryptContent(message.content);
22354
- } catch (error) {
22355
- logger.error('Failed to decrypt message content', error);
22356
- message.content = null;
22357
- }
22358
- }
22359
- if (message.quotedReply && typeof message.quotedReply.content === 'string' && message.quotedReply.content) {
22360
- try {
22361
- message.quotedReply.content = this.decryptContent(message.quotedReply.content);
22362
- } catch (error) {
22363
- logger.error('Failed to decrypt reference message content', error);
22364
- message.quotedReply.content = null;
22365
- }
22366
- }
22370
+ const message = this.decryptMessage(cursor.value);
22367
22371
  messages.push(message);
22368
22372
  processedCount++;
22369
22373
  cursor.continue();
@@ -22572,17 +22576,7 @@
22572
22576
  cursorRequest.onsuccess = event => {
22573
22577
  const cursor = event.target.result;
22574
22578
  if (cursor) {
22575
- const message = {
22576
- ...cursor.value
22577
- };
22578
- if (typeof message.content === 'string' && message.content) {
22579
- try {
22580
- message.content = this.decryptContent(message.content);
22581
- } catch (error) {
22582
- logger.error('Failed to decrypt message content', error);
22583
- message.content = null;
22584
- }
22585
- }
22579
+ const message = this.decryptMessage(cursor.value);
22586
22580
  resolve(message);
22587
22581
  } else {
22588
22582
  resolve(null);
@@ -22608,17 +22602,7 @@
22608
22602
  request.onsuccess = () => {
22609
22603
  const message = request.result;
22610
22604
  if (message) {
22611
- const decryptedMessage = {
22612
- ...message
22613
- };
22614
- if (typeof decryptedMessage.content === 'string' && decryptedMessage.content) {
22615
- try {
22616
- decryptedMessage.content = this.decryptContent(decryptedMessage.content);
22617
- } catch (error) {
22618
- logger.error('解密消息内容失败', error);
22619
- decryptedMessage.content = null;
22620
- }
22621
- }
22605
+ const decryptedMessage = this.decryptMessage(message);
22622
22606
  resolve(decryptedMessage);
22623
22607
  } else {
22624
22608
  resolve(null);
@@ -22725,6 +22709,30 @@
22725
22709
  };
22726
22710
  });
22727
22711
  }
22712
+ async getMessageByUId(messageUId) {
22713
+ if (!this.db) {
22714
+ return null;
22715
+ }
22716
+ return new Promise((resolve, reject) => {
22717
+ const transaction = this.db.transaction(this.STORE_NAME, 'readonly');
22718
+ const store = transaction.objectStore(this.STORE_NAME);
22719
+ const index = store.index('messageUId');
22720
+ const request = index.get(messageUId);
22721
+ request.onsuccess = () => {
22722
+ const message = request.result;
22723
+ if (message) {
22724
+ const decryptedMessage = this.decryptMessage(message);
22725
+ resolve(decryptedMessage);
22726
+ } else {
22727
+ resolve(null);
22728
+ }
22729
+ };
22730
+ request.onerror = event => {
22731
+ logger.error('查询消息失败', event);
22732
+ resolve(null);
22733
+ };
22734
+ });
22735
+ }
22728
22736
  }
22729
22737
  let cache = null;
22730
22738
  var MessageCache$1 = {
@@ -30377,7 +30385,7 @@
30377
30385
  code: checkResult.code
30378
30386
  };
30379
30387
  }
30380
- let receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs);
30388
+ const receivedMessage = transSentAttrs2IReceivedMessage(checkResult.message, checkResult.sentArgs);
30381
30389
  receivedMessage.quotedReply = quoteReply;
30382
30390
  await saveSentMessage(receivedMessage, checkResult.sentArgs);
30383
30391
  const dialogId = getFullDialogId(quoteReply);
@@ -30457,18 +30465,19 @@
30457
30465
  };
30458
30466
  response = await sendQuotePrivateChatMessage(privateParams);
30459
30467
  }
30468
+ const finalMessage = deepClone(receivedMessage);
30460
30469
  if (response.code === exports.ErrorCode.SUCCESS) {
30461
- receivedMessage.sentTime = response.data.msgSendTime.toString();
30462
- receivedMessage.messageUId = response.data.msgId.toString();
30463
- receivedMessage.sentStatus = exports.SentStatus.SENT;
30464
- await saveSentMessage(receivedMessage, checkResult.sentArgs);
30470
+ finalMessage.sentTime = response.data.msgSendTime.toString();
30471
+ finalMessage.messageUId = response.data.msgId.toString();
30472
+ finalMessage.sentStatus = exports.SentStatus.SENT;
30473
+ await saveSentMessage(finalMessage, checkResult.sentArgs);
30465
30474
  } else {
30466
- receivedMessage.sentStatus = exports.SentStatus.FAILED;
30467
- await saveSentMessage(receivedMessage, checkResult.sentArgs);
30475
+ finalMessage.sentStatus = exports.SentStatus.FAILED;
30476
+ await saveSentMessage(finalMessage, checkResult.sentArgs);
30468
30477
  }
30469
30478
  return {
30470
30479
  code: response.code,
30471
- data: receivedMessage
30480
+ data: finalMessage
30472
30481
  };
30473
30482
  };
30474
30483
  async function internal_sendMessage(conversation, message, options, uploadOptions) {
@@ -31032,6 +31041,12 @@
31032
31041
  }
31033
31042
  return removedMsgUids;
31034
31043
  }
31044
+ async getMessageById(messageId) {
31045
+ return MessageCache$1.get()?.getMessageById(messageId);
31046
+ }
31047
+ async getMessageByUId(messageUId) {
31048
+ return MessageCache$1.get()?.getMessageByUId(messageUId);
31049
+ }
31035
31050
  }
31036
31051
 
31037
31052
  /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
@@ -32306,6 +32321,20 @@
32306
32321
  const sendQuoteReplyMessage = async (message, quoteReply, options) => {
32307
32322
  return await imClient.sendQuoteReplyMessage(message, quoteReply, options);
32308
32323
  };
32324
+ const getMessageById = async messageId => {
32325
+ const message = await imClient.getMessageById(messageId);
32326
+ return {
32327
+ code: exports.ErrorCode.SUCCESS,
32328
+ data: message
32329
+ };
32330
+ };
32331
+ const getMessageByUId = async messageUId => {
32332
+ const message = await imClient.getMessageByUId(messageUId);
32333
+ return {
32334
+ code: exports.ErrorCode.SUCCESS,
32335
+ data: message
32336
+ };
32337
+ };
32309
32338
 
32310
32339
  exports.ChatRecordMessage = ChatRecordMessage;
32311
32340
  exports.ContactMessage = ContactMessage;
@@ -32345,6 +32374,8 @@
32345
32374
  exports.getConversationNotificationLevel = getConversationNotificationLevel;
32346
32375
  exports.getConversationNotificationStatus = getConversationNotificationStatus;
32347
32376
  exports.getConversationState = getConversationState;
32377
+ exports.getMessageById = getMessageById;
32378
+ exports.getMessageByUId = getMessageByUId;
32348
32379
  exports.getRemoteHistoryMessages = getRemoteHistoryMessages;
32349
32380
  exports.getServerTime = getServerTime;
32350
32381
  exports.getTextMessageDraft = getTextMessageDraft;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "2.6.0",
3
+ "version": "2.6.2",
4
4
  "main": "index.umd.js",
5
5
  "module": "index.esm.js",
6
6
  "types": "types/index.d.ts",
package/types/index.d.ts CHANGED
@@ -241,4 +241,21 @@ export declare const mockLogin: (config: {
241
241
  * @returns 被清除的消息ID列表
242
242
  */
243
243
  export declare const clearBurnAfterReadingExpiredMessages: (conversation: IConversationOption) => IPromiseResult<string[]>;
244
+ /**
245
+ * 发送引用回复消息
246
+ * @param message 消息
247
+ * @param quoteReply 引用回复消息
248
+ * @param options 发送选项
249
+ * @returns 发送结果
250
+ */
244
251
  export declare const sendQuoteReplyMessage: (message: BaseMessage, quoteReply: IReceivedMessage, options?: ISendMessageOptions) => IPromiseResult<IReceivedMessage>;
252
+ /**
253
+ * 获取消息
254
+ * @param messageId 消息ID
255
+ * @returns 消息
256
+ */
257
+ export declare const getMessageById: (messageId: number) => IPromiseResult<IReceivedMessage | null | undefined>;
258
+ /**
259
+ * 获取消息
260
+ */
261
+ export declare const getMessageByUId: (messageUId: string) => IPromiseResult<IReceivedMessage | null | undefined>;