@onyx-p/imlib-web 2.7.5 → 2.7.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
@@ -21904,6 +21904,28 @@ const transReferenceMessage2IReferenceMessage = (originalReferenceMessage, messa
21904
21904
  };
21905
21905
  };
21906
21906
 
21907
+ function getSafeMessageLog(message) {
21908
+ const safeMessage = {
21909
+ ...message
21910
+ };
21911
+ if ('content' in safeMessage) {
21912
+ delete safeMessage.content;
21913
+ }
21914
+ if ('quotedReply' in safeMessage) {
21915
+ delete safeMessage.quotedReply;
21916
+ }
21917
+ if ('msgPreContent' in safeMessage) {
21918
+ delete safeMessage.msgPreContent;
21919
+ }
21920
+ if ('msgPostContent' in safeMessage) {
21921
+ delete safeMessage.msgPostContent;
21922
+ }
21923
+ return safeMessage;
21924
+ }
21925
+ function getSafeMessagesLog(messages) {
21926
+ return messages.map(getSafeMessageLog);
21927
+ }
21928
+
21907
21929
  const STATUSMESSAGE_ALIVE_TIMEMS = 6000;
21908
21930
  function parse(orginalMsgs, referenceMsgs, callback) {
21909
21931
  const msgs = new Map();
@@ -22017,7 +22039,7 @@ const parseSingleDialogMessages = (dialogId, originalMessageList, aesKey, refere
22017
22039
  if (notEmptyString(receivedMessage.messageUId)) {
22018
22040
  contentList.push(receivedMessage);
22019
22041
  } else {
22020
- logger$1.error('message is invalid', item);
22042
+ logger$1.error('message is invalid', getSafeMessageLog(item));
22021
22043
  }
22022
22044
  }
22023
22045
  });
@@ -22495,7 +22517,7 @@ class MessageCache {
22495
22517
  resolve();
22496
22518
  };
22497
22519
  transaction.onerror = event => {
22498
- logger$1.error('Transaction failed in addMessages:', messages, transaction.error);
22520
+ logger$1.error('Transaction failed in addMessages:', getSafeMessagesLog(messages), transaction.error);
22499
22521
  if (isDef(isEnd)) {
22500
22522
  this.updateDialogState(dialogId, isEnd).catch(err => logger$1.error('Failed to update dialog state after transaction error:', err)).finally(() => resolve());
22501
22523
  } else {
@@ -22516,7 +22538,7 @@ class MessageCache {
22516
22538
  }
22517
22539
  store.put(messageToStore);
22518
22540
  } catch (err) {
22519
- logger$1.error('Error processing message:', message, err);
22541
+ logger$1.error('Error processing message:', getSafeMessageLog(message), err);
22520
22542
  }
22521
22543
  }
22522
22544
  } catch (err) {
@@ -23097,7 +23119,7 @@ class MessageLoader {
23097
23119
  RecallMessageStore.remove(m.content.messageUId);
23098
23120
  recallMessageUIds.push(m.content.messageUId);
23099
23121
  } else {
23100
- logger$1.error('recallMessages messageUId is undefined', m);
23122
+ logger$1.error('recallMessage\'s messageUId is undefined', getSafeMessageLog(m));
23101
23123
  }
23102
23124
  } else if (m.messageUId) {
23103
23125
  m.isOffLineMessage = isOffLineMessage;
@@ -23113,7 +23135,7 @@ class MessageLoader {
23113
23135
  this.handleBurnAfterReadingMessage(m);
23114
23136
  }
23115
23137
  } else {
23116
- logger$1.error('messages messageUId is undefined', m);
23138
+ logger$1.error('message\'s messageUId is undefined', getSafeMessageLog(m));
23117
23139
  }
23118
23140
  });
23119
23141
  let deletedMessageIndexes = [];
@@ -23284,7 +23306,7 @@ const GroupCloseBurnAfterReadingMessage = registerMessageType$1(NotiMessageTypes
23284
23306
 
23285
23307
  const RecallCommandMessage = registerMessageType$1(MessageTypes.RECALL, true, false, false);
23286
23308
 
23287
- const DEFAULT_SOCKET_URI = 'wss://imweb.mp.net:6443';
23309
+ const DEFAULT_SOCKET_URI = 'wss://test.mp.net';
23288
23310
  class LibLoader {
23289
23311
  options;
23290
23312
  connectionStatus = ConnectionStatus.DISCONNECTED;
@@ -23346,6 +23368,7 @@ class LibLoader {
23346
23368
  registerMessage(MessageTypes.GROUP_INVITATION, InvitationMessage);
23347
23369
  registerMessage(MessageTypes.REDPACKET, RedEnvelopeMessage);
23348
23370
  registerMessage(MessageTypes.TRANSFER, TransferMessage);
23371
+ registerMessage(MessageTypes.LINK, LinkMessage);
23349
23372
  registerMessage(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, GroupArrivalReceiptMessage);
23350
23373
  registerMessage(NotiMessageTypes.GROUP_READ_RECEIPT, GroupReadReceiptMessage);
23351
23374
  registerMessage(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, PrivateArrivalReceiptMessage);
@@ -31178,6 +31201,30 @@ class IMClient extends EventEmitter {
31178
31201
  return this.libLoader.getConnectionStatus();
31179
31202
  }
31180
31203
  getServerTime = getServerTime$1;
31204
+ async insertMessage(conversation, content, options) {
31205
+ if (!content.messageId || content.messageId > getCurrentMessageId()) {
31206
+ content.messageId = generateNewMessageId();
31207
+ }
31208
+ ConversationManager$1.get().setConversationCacheByMessage(content);
31209
+ try {
31210
+ const cache = MessageCache$1.get();
31211
+ if (content.isPersited && cache) {
31212
+ await cache.upsertMessage(content);
31213
+ const cachedLatestMessage = await cache.getLatestMessage(content);
31214
+ let latestMessage = content;
31215
+ if (cachedLatestMessage && Long.fromString(cachedLatestMessage.sentTime).greaterThan(Long.fromString(content.sentTime))) {
31216
+ latestMessage = cachedLatestMessage;
31217
+ }
31218
+ ConversationManager$1.get().updateLatestMessage(content, latestMessage);
31219
+ }
31220
+ } catch (error) {
31221
+ logger$1.error('insertMessage -> ', error);
31222
+ }
31223
+ return {
31224
+ code: ErrorCode.SUCCESS,
31225
+ data: content
31226
+ };
31227
+ }
31181
31228
  sendMessage = sendMessage$1;
31182
31229
  sendImageMessage = sendImageMessage$1;
31183
31230
  sendGIFMessage = sendGIFMessage$1;
@@ -32576,6 +32623,9 @@ const registerMessageType = (messageType, isPersited, isCounted, isStatusMessage
32576
32623
  registerMessage(messageType, messageConstructor);
32577
32624
  return messageConstructor;
32578
32625
  };
32626
+ const insertMessage = async (conversation, content, options) => {
32627
+ return imClient.insertMessage(conversation, content, options);
32628
+ };
32579
32629
  const sendMessage = async (conversation, message, options) => {
32580
32630
  if (message instanceof BaseMessage === false) {
32581
32631
  logger$1.warn('send message fail -> message parameter is not an instance of BaseMessage');
@@ -32781,4 +32831,4 @@ const getMessageByUId = async messageUId => {
32781
32831
  };
32782
32832
  };
32783
32833
 
32784
- export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LinkMessage, 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, encodeReceivedMessage2ChatRecordMsgDetail, 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 };
32834
+ export { ChatRecordMessage, ConnectionStatus, ContactMessage, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, GroupCloseBurnAfterReadingMessage, GroupOpenBurnAfterReadingMessage, VoiceMessage as HQVoiceMessage, ImageMessage, InvitationMessage, LinkMessage, 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, encodeReceivedMessage2ChatRecordMsgDetail, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getConversationState, getMessageById, getMessageByUId, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, insertMessage, 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
@@ -21910,6 +21910,28 @@
21910
21910
  };
21911
21911
  };
21912
21912
 
21913
+ function getSafeMessageLog(message) {
21914
+ const safeMessage = {
21915
+ ...message
21916
+ };
21917
+ if ('content' in safeMessage) {
21918
+ delete safeMessage.content;
21919
+ }
21920
+ if ('quotedReply' in safeMessage) {
21921
+ delete safeMessage.quotedReply;
21922
+ }
21923
+ if ('msgPreContent' in safeMessage) {
21924
+ delete safeMessage.msgPreContent;
21925
+ }
21926
+ if ('msgPostContent' in safeMessage) {
21927
+ delete safeMessage.msgPostContent;
21928
+ }
21929
+ return safeMessage;
21930
+ }
21931
+ function getSafeMessagesLog(messages) {
21932
+ return messages.map(getSafeMessageLog);
21933
+ }
21934
+
21913
21935
  const STATUSMESSAGE_ALIVE_TIMEMS = 6000;
21914
21936
  function parse(orginalMsgs, referenceMsgs, callback) {
21915
21937
  const msgs = new Map();
@@ -22023,7 +22045,7 @@
22023
22045
  if (notEmptyString(receivedMessage.messageUId)) {
22024
22046
  contentList.push(receivedMessage);
22025
22047
  } else {
22026
- logger$1.error('message is invalid', item);
22048
+ logger$1.error('message is invalid', getSafeMessageLog(item));
22027
22049
  }
22028
22050
  }
22029
22051
  });
@@ -22501,7 +22523,7 @@
22501
22523
  resolve();
22502
22524
  };
22503
22525
  transaction.onerror = event => {
22504
- logger$1.error('Transaction failed in addMessages:', messages, transaction.error);
22526
+ logger$1.error('Transaction failed in addMessages:', getSafeMessagesLog(messages), transaction.error);
22505
22527
  if (isDef(isEnd)) {
22506
22528
  this.updateDialogState(dialogId, isEnd).catch(err => logger$1.error('Failed to update dialog state after transaction error:', err)).finally(() => resolve());
22507
22529
  } else {
@@ -22522,7 +22544,7 @@
22522
22544
  }
22523
22545
  store.put(messageToStore);
22524
22546
  } catch (err) {
22525
- logger$1.error('Error processing message:', message, err);
22547
+ logger$1.error('Error processing message:', getSafeMessageLog(message), err);
22526
22548
  }
22527
22549
  }
22528
22550
  } catch (err) {
@@ -23103,7 +23125,7 @@
23103
23125
  RecallMessageStore.remove(m.content.messageUId);
23104
23126
  recallMessageUIds.push(m.content.messageUId);
23105
23127
  } else {
23106
- logger$1.error('recallMessages messageUId is undefined', m);
23128
+ logger$1.error('recallMessage\'s messageUId is undefined', getSafeMessageLog(m));
23107
23129
  }
23108
23130
  } else if (m.messageUId) {
23109
23131
  m.isOffLineMessage = isOffLineMessage;
@@ -23119,7 +23141,7 @@
23119
23141
  this.handleBurnAfterReadingMessage(m);
23120
23142
  }
23121
23143
  } else {
23122
- logger$1.error('messages messageUId is undefined', m);
23144
+ logger$1.error('message\'s messageUId is undefined', getSafeMessageLog(m));
23123
23145
  }
23124
23146
  });
23125
23147
  let deletedMessageIndexes = [];
@@ -23290,7 +23312,7 @@
23290
23312
 
23291
23313
  const RecallCommandMessage = registerMessageType$1(MessageTypes.RECALL, true, false, false);
23292
23314
 
23293
- const DEFAULT_SOCKET_URI = 'wss://imweb.mp.net:6443';
23315
+ const DEFAULT_SOCKET_URI = 'wss://test.mp.net';
23294
23316
  class LibLoader {
23295
23317
  options;
23296
23318
  connectionStatus = exports.ConnectionStatus.DISCONNECTED;
@@ -23352,6 +23374,7 @@
23352
23374
  registerMessage(MessageTypes.GROUP_INVITATION, InvitationMessage);
23353
23375
  registerMessage(MessageTypes.REDPACKET, RedEnvelopeMessage);
23354
23376
  registerMessage(MessageTypes.TRANSFER, TransferMessage);
23377
+ registerMessage(MessageTypes.LINK, LinkMessage);
23355
23378
  registerMessage(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, GroupArrivalReceiptMessage);
23356
23379
  registerMessage(NotiMessageTypes.GROUP_READ_RECEIPT, GroupReadReceiptMessage);
23357
23380
  registerMessage(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, PrivateArrivalReceiptMessage);
@@ -31184,6 +31207,30 @@
31184
31207
  return this.libLoader.getConnectionStatus();
31185
31208
  }
31186
31209
  getServerTime = getServerTime$1;
31210
+ async insertMessage(conversation, content, options) {
31211
+ if (!content.messageId || content.messageId > getCurrentMessageId()) {
31212
+ content.messageId = generateNewMessageId();
31213
+ }
31214
+ ConversationManager$1.get().setConversationCacheByMessage(content);
31215
+ try {
31216
+ const cache = MessageCache$1.get();
31217
+ if (content.isPersited && cache) {
31218
+ await cache.upsertMessage(content);
31219
+ const cachedLatestMessage = await cache.getLatestMessage(content);
31220
+ let latestMessage = content;
31221
+ if (cachedLatestMessage && Long.fromString(cachedLatestMessage.sentTime).greaterThan(Long.fromString(content.sentTime))) {
31222
+ latestMessage = cachedLatestMessage;
31223
+ }
31224
+ ConversationManager$1.get().updateLatestMessage(content, latestMessage);
31225
+ }
31226
+ } catch (error) {
31227
+ logger$1.error('insertMessage -> ', error);
31228
+ }
31229
+ return {
31230
+ code: exports.ErrorCode.SUCCESS,
31231
+ data: content
31232
+ };
31233
+ }
31187
31234
  sendMessage = sendMessage$1;
31188
31235
  sendImageMessage = sendImageMessage$1;
31189
31236
  sendGIFMessage = sendGIFMessage$1;
@@ -32582,6 +32629,9 @@
32582
32629
  registerMessage(messageType, messageConstructor);
32583
32630
  return messageConstructor;
32584
32631
  };
32632
+ const insertMessage = async (conversation, content, options) => {
32633
+ return imClient.insertMessage(conversation, content, options);
32634
+ };
32585
32635
  const sendMessage = async (conversation, message, options) => {
32586
32636
  if (message instanceof BaseMessage === false) {
32587
32637
  logger$1.warn('send message fail -> message parameter is not an instance of BaseMessage');
@@ -32837,6 +32887,7 @@
32837
32887
  exports.getUnreadCount = getUnreadCount;
32838
32888
  exports.getUnreadMentionedCount = getUnreadMentionedCount;
32839
32889
  exports.init = init;
32890
+ exports.insertMessage = insertMessage;
32840
32891
  exports.logOut = logOut;
32841
32892
  exports.mockLogin = mockLogin;
32842
32893
  exports.onceEventListener = onceEventListener;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "2.7.5",
3
+ "version": "2.7.7",
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
@@ -1,5 +1,5 @@
1
1
  import { ConnectionStatus, ConversationType, NotificationLevel, NotificationStatus } from './model/statusTypes';
2
- import { EventListeners, Events, GetHistoryMessageOption, GetHistoryMessageResult, IBaseConversationInfo, IConversationOption, IConversationState, IDeleteMessageOptions, IGetConversationListOptions, IImageMessageOption, IInitOption, IPromiseResult, IRecallMessageOptions, ISendBody, ISenderEnrichedMessage, ISendMessageOptions, IUploadHooks, IUploadMessageOption, ProfileInfo } from './types';
2
+ import { EventListeners, Events, GetHistoryMessageOption, GetHistoryMessageResult, IAsyncRes, IBaseConversationInfo, IConversationOption, IConversationState, IDeleteMessageOptions, IGetConversationListOptions, IImageMessageOption, IInitOption, IPromiseResult, IRecallMessageOptions, ISendBody, ISenderEnrichedMessage, ISendMessageOptions, IUploadHooks, IUploadMessageOption, ProfileInfo, IInsertOptions } from './types';
3
3
  import { BaseMessage, IBaseMessageBody } from './model/baseMessage';
4
4
  import { ITextMessageBody } from './model/messages/textMessage';
5
5
  import IReceivedMessage from './model/iReceivedMessage';
@@ -175,6 +175,7 @@ export declare const getTopConversationList: () => IPromiseResult<IBaseConversat
175
175
  * @param isStatusMessage 是否是状态消息
176
176
  */
177
177
  export declare const registerMessageType: <T extends IBaseMessageBody>(messageType: number, isPersited: boolean, isCounted: boolean, isStatusMessage?: boolean) => new (content: T) => BaseMessage<T>;
178
+ export declare const insertMessage: (conversation: IConversationOption, content: IReceivedMessage, options?: IInsertOptions) => Promise<IAsyncRes<IReceivedMessage>>;
178
179
  /**
179
180
  * 发送消息
180
181
  * @param options
package/types/types.d.ts CHANGED
@@ -202,6 +202,12 @@ export interface IUploadMessageOption extends ISendMessageOptions {
202
202
  export interface IImageMessageOption extends IUploadMessageOption {
203
203
  thumbnailConfig?: IThumbnailConfig;
204
204
  }
205
+ export interface IInsertOptions {
206
+ /**
207
+ * 插入消息是否计入未读数: true 计数 false 不计数, 默认不计数
208
+ */
209
+ isUnread?: boolean;
210
+ }
205
211
  /**
206
212
  * 缩略图配置
207
213
  */