@onyx-p/imlib-web 1.5.3 → 1.5.4

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
@@ -18934,26 +18934,61 @@ const decodeMessageContent = (dialogMessage, aesKey) => {
18934
18934
  if (dialogMessage.mediaConstructor === 0x60010012 || dialogMessage.mediaConstructor === 0x60020021) {
18935
18935
  mediaAttribute = transMsgIdNum64ToString(mediaAttribute);
18936
18936
  }
18937
- let mediaAttributeJson = {};
18938
- if (mediaAttribute?.length) {
18939
- mediaAttributeJson = JSON.parse(mediaAttribute);
18940
- }
18941
- if (dialogMessage.mediaConstructor == MessageTypes.TEXT && msgPostContent) {
18942
- mediaAttributeJson.content = msgPostContent;
18943
- }
18944
- return mediaAttributeJson;
18937
+ return parseMediaAttributeJson(dialogMessage.mediaConstructor, mediaAttribute, msgPostContent);
18945
18938
  } catch (error) {
18946
18939
  logger.error('decode message content fail -> uid:', dialogMessage.msgId.toString());
18947
18940
  return null;
18948
18941
  }
18949
18942
  };
18943
+ const parseMediaAttributeJson = (mediaConstructor, mediaAttribute, msgPostContent) => {
18944
+ let mediaAttributeJson = {};
18945
+ if (mediaAttribute?.length) {
18946
+ mediaAttributeJson = JSON.parse(mediaAttribute);
18947
+ }
18948
+ if (mediaConstructor == MessageTypes.TEXT && msgPostContent) {
18949
+ mediaAttributeJson.content = msgPostContent;
18950
+ }
18951
+ return mediaAttributeJson;
18952
+ };
18953
+ const parseChatRecordMsgDetails$1 = (conversationOpt, msgDetails) => {
18954
+ let contentList = [];
18955
+ msgDetails.forEach(item => {
18956
+ const mediaAttributeJson = parseMediaAttributeJson(item.mediaConstructor, item.mediaAttribute, item.msgPostContent);
18957
+ if (!mediaAttributeJson) return;
18958
+ const messageInstance = decodeMessage(item.mediaConstructor, mediaAttributeJson);
18959
+ if (isDef(messageInstance)) {
18960
+ const receivedMessage = {
18961
+ ...conversationOpt,
18962
+ senderUserId: item.srcId.toString(),
18963
+ messageDirection: item.srcId == accountStore.uid ? MessageDirection.SEND : MessageDirection.RECEIVE,
18964
+ isCounted: messageInstance.isCounted,
18965
+ isMentioned: false,
18966
+ content: messageInstance.content,
18967
+ messageType: messageInstance.messageType,
18968
+ isOffLineMessage: false,
18969
+ isPersited: messageInstance.isPersited,
18970
+ messageId: item.msgId + '',
18971
+ messageUId: item.msgId + '',
18972
+ sentTime: item.msgSendTime + '',
18973
+ sentStatus: SentStatus.SENT,
18974
+ receivedTime: item.msgSendTime + '',
18975
+ isStatusMessage: messageInstance.isStatusMessage,
18976
+ receivedStatus: ReceivedStatus.READ,
18977
+ disableNotification: false
18978
+ };
18979
+ contentList.push(receivedMessage);
18980
+ }
18981
+ });
18982
+ return contentList;
18983
+ };
18950
18984
  const transMsgIdNum64ToString = jsonString => {
18951
18985
  const reg = /("msgId")\s*:\s*(\d+)/g;
18952
18986
  return jsonString.replace(reg, (r1, r2, r3) => `${r2}:"${r3}"`);
18953
18987
  };
18954
- var ServerMessageParser = {
18988
+ var serverMessageParser = {
18955
18989
  parse,
18956
- parseSingleDialogMessages
18990
+ parseSingleDialogMessages,
18991
+ parseChatRecordMsgDetails: parseChatRecordMsgDetails$1
18957
18992
  };
18958
18993
 
18959
18994
  function deepClone(obj) {
@@ -19564,6 +19599,31 @@ class ConversationManager {
19564
19599
  });
19565
19600
  return totalUnreadCount;
19566
19601
  }
19602
+ getConversationState(conOpt) {
19603
+ let val = this.get(conOpt);
19604
+ if (val) {
19605
+ let {
19606
+ unreadMessageCount,
19607
+ unreadMentionedCount,
19608
+ notificationLevel,
19609
+ notificationStatus,
19610
+ isTop,
19611
+ dialogTitle,
19612
+ smallAvatarUrl
19613
+ } = val;
19614
+ return {
19615
+ ...conOpt,
19616
+ unreadCount: unreadMessageCount,
19617
+ unreadMentionedCount: unreadMentionedCount ?? 0,
19618
+ notificationLevel,
19619
+ notificationStatus,
19620
+ isTop,
19621
+ dialogTitle,
19622
+ smallAvatarUrl
19623
+ };
19624
+ }
19625
+ return null;
19626
+ }
19567
19627
  getAllConversationState() {
19568
19628
  const localConversations = this.store.getAll();
19569
19629
  return localConversations.map(({
@@ -19629,6 +19689,9 @@ const nullConversationManager = {
19629
19689
  getAllUnreadMentionedCount: function () {
19630
19690
  return 0;
19631
19691
  },
19692
+ getConversationState(conOpt) {
19693
+ return null;
19694
+ },
19632
19695
  getAllConversationState: function () {
19633
19696
  return [];
19634
19697
  },
@@ -19741,7 +19804,7 @@ class MessageLoader {
19741
19804
  };
19742
19805
  });
19743
19806
  await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
19744
- ServerMessageParser.parse(msg, (done, outputMsgs) => {
19807
+ serverMessageParser.parse(msg, (done, outputMsgs) => {
19745
19808
  const messages = [];
19746
19809
  const conversations = [];
19747
19810
  const isOffLineMessage = !this.pullOfflineFinished;
@@ -27379,7 +27442,7 @@ class IMClient extends EventEmitter {
27379
27442
  });
27380
27443
  return;
27381
27444
  }
27382
- ServerMessageParser.parse({
27445
+ serverMessageParser.parse({
27383
27446
  [dialogId]: data.msg ?? {}
27384
27447
  }, (_, outputMsgs) => {
27385
27448
  const messageList = outputMsgs.get(dialogId) ?? [];
@@ -27493,6 +27556,9 @@ class IMClient extends EventEmitter {
27493
27556
  const totalUnreadCount = ConversationManager$1.get().getAllUnreadMentionedCount();
27494
27557
  return totalUnreadCount;
27495
27558
  }
27559
+ getConversationState(conOpt) {
27560
+ return ConversationManager$1.get().getConversationState(conOpt);
27561
+ }
27496
27562
  getAllConversationState() {
27497
27563
  return ConversationManager$1.get().getAllConversationState();
27498
27564
  }
@@ -27564,7 +27630,7 @@ class IMClient extends EventEmitter {
27564
27630
  return;
27565
27631
  }
27566
27632
  if (isDef(msg)) {
27567
- const latestMessage = ServerMessageParser.parseSingleDialogMessages(dialogId.toString(), [msg], aesKey)[0];
27633
+ const latestMessage = serverMessageParser.parseSingleDialogMessages(dialogId.toString(), [msg], aesKey)[0];
27568
27634
  conversationObj.latestMessage = latestMessage;
27569
27635
  }
27570
27636
  return conversationObj;
@@ -28547,6 +28613,19 @@ const getAllUnreadMentionedCount = () => {
28547
28613
  data: count
28548
28614
  });
28549
28615
  };
28616
+ const getConversationState = options => {
28617
+ logger.debug('getConversationState');
28618
+ const state = imClient.getConversationState(options);
28619
+ if (state) {
28620
+ return Promise.resolve({
28621
+ code: ErrorCode.SUCCESS,
28622
+ data: state
28623
+ });
28624
+ }
28625
+ return Promise.resolve({
28626
+ code: ErrorCode.UNKNOWN
28627
+ });
28628
+ };
28550
28629
  const getAllConversationState = () => {
28551
28630
  logger.debug('getAllConversationState');
28552
28631
  const states = imClient.getAllConversationState();
@@ -28816,6 +28895,9 @@ const clearHistoryMessages = async (conversation, timestamp) => {
28816
28895
  code: ErrorCode.SUCCESS
28817
28896
  };
28818
28897
  };
28898
+ const parseChatRecordMsgDetails = (conversation, detailItems) => {
28899
+ return serverMessageParser.parseChatRecordMsgDetails(conversation, detailItems);
28900
+ };
28819
28901
  const mockLogin = config => {
28820
28902
  return login(config);
28821
28903
  };
@@ -28830,4 +28912,4 @@ const _logSendError = (conversation, errorCode) => {
28830
28912
  }
28831
28913
  };
28832
28914
 
28833
- export { ConnectionStatus, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, VoiceMessage as HQVoiceMessage, ImageMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotificationLevel, NotificationStatus, ReceivedStatus, SentStatus, TextMessage, VideoMessage, addEventListener, clearAllMessagesUnreadStatus, clearHistoryMessages, clearMessagesUnreadStatus, clearTextMessageDraft, connect, deleteMessages, disconnect, getAllConversationState, getAllUnreadMentionedCount, getBlockedConversationList, getConnectionStatus, getConversation, getConversationList, getConversationNotificationLevel, getConversationNotificationStatus, getHistoryMessages, getRemoteHistoryMessages, getServerTime, getTextMessageDraft, getTopConversationList, getTotalUnreadCount, getUnreadCount, getUnreadMentionedCount, init, logOut, mockLogin, onceEventListener, recallMessage, registerMessageType, removeConversation, removeEventListener, request, saveTextMessageDraft, sendFileMessage, sendGIFMessage, sendHQVoiceMessage, sendImageMessage, sendMessage, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
28915
+ export { ConnectionStatus, ConversationType, ErrorCode, ErrorDesc, Events, FileMessage, GIFMessage, VoiceMessage as HQVoiceMessage, ImageMessage, LogLevel, MentionedType, MessageDirection, MessageTypes, NotificationLevel, NotificationStatus, ReceivedStatus, SentStatus, TextMessage, 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, sendSightMessage, sendTextMessage, setConversationNotificationStatus, setConversationToTop, setUserLogged };
package/index.umd.js CHANGED
@@ -18940,26 +18940,61 @@
18940
18940
  if (dialogMessage.mediaConstructor === 0x60010012 || dialogMessage.mediaConstructor === 0x60020021) {
18941
18941
  mediaAttribute = transMsgIdNum64ToString(mediaAttribute);
18942
18942
  }
18943
- let mediaAttributeJson = {};
18944
- if (mediaAttribute?.length) {
18945
- mediaAttributeJson = JSON.parse(mediaAttribute);
18946
- }
18947
- if (dialogMessage.mediaConstructor == MessageTypes.TEXT && msgPostContent) {
18948
- mediaAttributeJson.content = msgPostContent;
18949
- }
18950
- return mediaAttributeJson;
18943
+ return parseMediaAttributeJson(dialogMessage.mediaConstructor, mediaAttribute, msgPostContent);
18951
18944
  } catch (error) {
18952
18945
  logger.error('decode message content fail -> uid:', dialogMessage.msgId.toString());
18953
18946
  return null;
18954
18947
  }
18955
18948
  };
18949
+ const parseMediaAttributeJson = (mediaConstructor, mediaAttribute, msgPostContent) => {
18950
+ let mediaAttributeJson = {};
18951
+ if (mediaAttribute?.length) {
18952
+ mediaAttributeJson = JSON.parse(mediaAttribute);
18953
+ }
18954
+ if (mediaConstructor == MessageTypes.TEXT && msgPostContent) {
18955
+ mediaAttributeJson.content = msgPostContent;
18956
+ }
18957
+ return mediaAttributeJson;
18958
+ };
18959
+ const parseChatRecordMsgDetails$1 = (conversationOpt, msgDetails) => {
18960
+ let contentList = [];
18961
+ msgDetails.forEach(item => {
18962
+ const mediaAttributeJson = parseMediaAttributeJson(item.mediaConstructor, item.mediaAttribute, item.msgPostContent);
18963
+ if (!mediaAttributeJson) return;
18964
+ const messageInstance = decodeMessage(item.mediaConstructor, mediaAttributeJson);
18965
+ if (isDef(messageInstance)) {
18966
+ const receivedMessage = {
18967
+ ...conversationOpt,
18968
+ senderUserId: item.srcId.toString(),
18969
+ messageDirection: item.srcId == accountStore.uid ? exports.MessageDirection.SEND : exports.MessageDirection.RECEIVE,
18970
+ isCounted: messageInstance.isCounted,
18971
+ isMentioned: false,
18972
+ content: messageInstance.content,
18973
+ messageType: messageInstance.messageType,
18974
+ isOffLineMessage: false,
18975
+ isPersited: messageInstance.isPersited,
18976
+ messageId: item.msgId + '',
18977
+ messageUId: item.msgId + '',
18978
+ sentTime: item.msgSendTime + '',
18979
+ sentStatus: exports.SentStatus.SENT,
18980
+ receivedTime: item.msgSendTime + '',
18981
+ isStatusMessage: messageInstance.isStatusMessage,
18982
+ receivedStatus: exports.ReceivedStatus.READ,
18983
+ disableNotification: false
18984
+ };
18985
+ contentList.push(receivedMessage);
18986
+ }
18987
+ });
18988
+ return contentList;
18989
+ };
18956
18990
  const transMsgIdNum64ToString = jsonString => {
18957
18991
  const reg = /("msgId")\s*:\s*(\d+)/g;
18958
18992
  return jsonString.replace(reg, (r1, r2, r3) => `${r2}:"${r3}"`);
18959
18993
  };
18960
- var ServerMessageParser = {
18994
+ var serverMessageParser = {
18961
18995
  parse,
18962
- parseSingleDialogMessages
18996
+ parseSingleDialogMessages,
18997
+ parseChatRecordMsgDetails: parseChatRecordMsgDetails$1
18963
18998
  };
18964
18999
 
18965
19000
  function deepClone(obj) {
@@ -19570,6 +19605,31 @@
19570
19605
  });
19571
19606
  return totalUnreadCount;
19572
19607
  }
19608
+ getConversationState(conOpt) {
19609
+ let val = this.get(conOpt);
19610
+ if (val) {
19611
+ let {
19612
+ unreadMessageCount,
19613
+ unreadMentionedCount,
19614
+ notificationLevel,
19615
+ notificationStatus,
19616
+ isTop,
19617
+ dialogTitle,
19618
+ smallAvatarUrl
19619
+ } = val;
19620
+ return {
19621
+ ...conOpt,
19622
+ unreadCount: unreadMessageCount,
19623
+ unreadMentionedCount: unreadMentionedCount ?? 0,
19624
+ notificationLevel,
19625
+ notificationStatus,
19626
+ isTop,
19627
+ dialogTitle,
19628
+ smallAvatarUrl
19629
+ };
19630
+ }
19631
+ return null;
19632
+ }
19573
19633
  getAllConversationState() {
19574
19634
  const localConversations = this.store.getAll();
19575
19635
  return localConversations.map(({
@@ -19635,6 +19695,9 @@
19635
19695
  getAllUnreadMentionedCount: function () {
19636
19696
  return 0;
19637
19697
  },
19698
+ getConversationState(conOpt) {
19699
+ return null;
19700
+ },
19638
19701
  getAllConversationState: function () {
19639
19702
  return [];
19640
19703
  },
@@ -19747,7 +19810,7 @@
19747
19810
  };
19748
19811
  });
19749
19812
  await ConversationManager$1.get().loadConvsationsIfNotExist(cons);
19750
- ServerMessageParser.parse(msg, (done, outputMsgs) => {
19813
+ serverMessageParser.parse(msg, (done, outputMsgs) => {
19751
19814
  const messages = [];
19752
19815
  const conversations = [];
19753
19816
  const isOffLineMessage = !this.pullOfflineFinished;
@@ -27385,7 +27448,7 @@
27385
27448
  });
27386
27449
  return;
27387
27450
  }
27388
- ServerMessageParser.parse({
27451
+ serverMessageParser.parse({
27389
27452
  [dialogId]: data.msg ?? {}
27390
27453
  }, (_, outputMsgs) => {
27391
27454
  const messageList = outputMsgs.get(dialogId) ?? [];
@@ -27499,6 +27562,9 @@
27499
27562
  const totalUnreadCount = ConversationManager$1.get().getAllUnreadMentionedCount();
27500
27563
  return totalUnreadCount;
27501
27564
  }
27565
+ getConversationState(conOpt) {
27566
+ return ConversationManager$1.get().getConversationState(conOpt);
27567
+ }
27502
27568
  getAllConversationState() {
27503
27569
  return ConversationManager$1.get().getAllConversationState();
27504
27570
  }
@@ -27570,7 +27636,7 @@
27570
27636
  return;
27571
27637
  }
27572
27638
  if (isDef(msg)) {
27573
- const latestMessage = ServerMessageParser.parseSingleDialogMessages(dialogId.toString(), [msg], aesKey)[0];
27639
+ const latestMessage = serverMessageParser.parseSingleDialogMessages(dialogId.toString(), [msg], aesKey)[0];
27574
27640
  conversationObj.latestMessage = latestMessage;
27575
27641
  }
27576
27642
  return conversationObj;
@@ -28553,6 +28619,19 @@
28553
28619
  data: count
28554
28620
  });
28555
28621
  };
28622
+ const getConversationState = options => {
28623
+ logger.debug('getConversationState');
28624
+ const state = imClient.getConversationState(options);
28625
+ if (state) {
28626
+ return Promise.resolve({
28627
+ code: exports.ErrorCode.SUCCESS,
28628
+ data: state
28629
+ });
28630
+ }
28631
+ return Promise.resolve({
28632
+ code: exports.ErrorCode.UNKNOWN
28633
+ });
28634
+ };
28556
28635
  const getAllConversationState = () => {
28557
28636
  logger.debug('getAllConversationState');
28558
28637
  const states = imClient.getAllConversationState();
@@ -28822,6 +28901,9 @@
28822
28901
  code: exports.ErrorCode.SUCCESS
28823
28902
  };
28824
28903
  };
28904
+ const parseChatRecordMsgDetails = (conversation, detailItems) => {
28905
+ return serverMessageParser.parseChatRecordMsgDetails(conversation, detailItems);
28906
+ };
28825
28907
  const mockLogin = config => {
28826
28908
  return login(config);
28827
28909
  };
@@ -28860,6 +28942,7 @@
28860
28942
  exports.getConversationList = getConversationList;
28861
28943
  exports.getConversationNotificationLevel = getConversationNotificationLevel;
28862
28944
  exports.getConversationNotificationStatus = getConversationNotificationStatus;
28945
+ exports.getConversationState = getConversationState;
28863
28946
  exports.getHistoryMessages = getHistoryMessages;
28864
28947
  exports.getRemoteHistoryMessages = getRemoteHistoryMessages;
28865
28948
  exports.getServerTime = getServerTime;
@@ -28872,6 +28955,7 @@
28872
28955
  exports.logOut = logOut;
28873
28956
  exports.mockLogin = mockLogin;
28874
28957
  exports.onceEventListener = onceEventListener;
28958
+ exports.parseChatRecordMsgDetails = parseChatRecordMsgDetails;
28875
28959
  exports.recallMessage = recallMessage;
28876
28960
  exports.registerMessageType = registerMessageType;
28877
28961
  exports.removeConversation = removeConversation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onyx-p/imlib-web",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
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
@@ -6,6 +6,7 @@ import IReceivedMessage from './model/iReceivedMessage';
6
6
  import IReceivedConversation from './model/iReceivedConversation';
7
7
  import { CommonReqResult, PBCodec } from './net/connection/webSocketServer';
8
8
  import { BaseResp } from './net/pbs/rpc.base';
9
+ import { IChatRecordMsgDetail } from './model/messages/otherMediaMessages';
9
10
  export { TextMessage, ImageMessage, HQVoiceMessage, GIFMessage, FileMessage, VideoMessage } from './model/messages';
10
11
  export type { ITextMessageBody, IImageMessageBody, IGIFMessageBody, IFileMessageBody, IHQVoiceMessageBody, IRecallCommandMessageBody, IVideoMessageBody, ILocationMessageBody, IChatRecordMessageBody, IContactMessageBody, IInvitationMessageBody, IRedEnvelopeMessageBody, ITransferMessageBody } from './model/messages';
11
12
  export { MessageTypes } from './constants/messageTypes';
@@ -97,6 +98,10 @@ export declare const getUnreadMentionedCount: (options: IConversationOption) =>
97
98
  * 获取所有群会话 @ 消息未读数
98
99
  */
99
100
  export declare const getAllUnreadMentionedCount: () => IPromiseResult<number>;
101
+ /**
102
+ * 获取本地单个会话的状态
103
+ */
104
+ export declare const getConversationState: (options: IConversationOption) => IPromiseResult<IConversationState>;
100
105
  /**
101
106
  * 获取本地全部会话的状态
102
107
  * @description
@@ -222,6 +227,7 @@ export declare const deleteMessages: (conversation: IConversationOption, message
222
227
  * @param timestamp 清除时间点, 该时间之前的消息将被清除
223
228
  */
224
229
  export declare const clearHistoryMessages: (conversation: IConversationOption, timestamp: number) => IPromiseResult<void>;
230
+ export declare const parseChatRecordMsgDetails: (conversation: IConversationOption, detailItems: IChatRecordMsgDetail[]) => IReceivedMessage[];
225
231
  export declare const mockLogin: (config: {
226
232
  langCode: string;
227
233
  phone: string;
@@ -18,6 +18,18 @@ export interface IChatRecordMessageBody {
18
18
  }>;
19
19
  encryptKey?: string;
20
20
  }
21
+ export interface IChatRecordMsgDetail {
22
+ senderNickname: string;
23
+ senderAvatar?: string;
24
+ msgId: string;
25
+ srcId: string;
26
+ destId: string;
27
+ msgPreContent?: string;
28
+ msgPostContent?: string;
29
+ mediaConstructor: number;
30
+ mediaAttribute?: string;
31
+ msgSendTime: string;
32
+ }
21
33
  export interface IContactMessageBody {
22
34
  uid: string;
23
35
  nickname: string;