@onyx-p/imlib-web 1.7.6 → 1.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.umd.js CHANGED
@@ -105,11 +105,10 @@
105
105
  })(exports.SentStatus || (exports.SentStatus = {}));
106
106
  exports.ReceivedStatus = void 0;
107
107
  (function (ReceivedStatus) {
108
- ReceivedStatus[ReceivedStatus["READ"] = 1] = "READ";
109
- ReceivedStatus[ReceivedStatus["LISTENED"] = 2] = "LISTENED";
110
- ReceivedStatus[ReceivedStatus["DOWNLOADED"] = 4] = "DOWNLOADED";
111
- ReceivedStatus[ReceivedStatus["RETRIEVED"] = 8] = "RETRIEVED";
112
- ReceivedStatus[ReceivedStatus["UNREAD"] = 0] = "UNREAD";
108
+ ReceivedStatus[ReceivedStatus["IDLE"] = 0] = "IDLE";
109
+ ReceivedStatus[ReceivedStatus["RECEIVED"] = 1] = "RECEIVED";
110
+ ReceivedStatus[ReceivedStatus["READ"] = 2] = "READ";
111
+ ReceivedStatus[ReceivedStatus["LISTENED"] = 3] = "LISTENED";
113
112
  })(exports.ReceivedStatus || (exports.ReceivedStatus = {}));
114
113
  exports.NotificationLevel = void 0;
115
114
  (function (NotificationLevel) {
@@ -141,6 +140,8 @@
141
140
  Events["CONVERSATION"] = "CONVERSATION";
142
141
  Events["PUSH"] = "PUSH";
143
142
  Events["RECALL"] = "RECALL";
143
+ Events["ARRIVAL_RECEIPT_RECEIVED"] = "ARRIVAL_RECEIPT_RECEIVED";
144
+ Events["READ_RECEIPT_RECEIVED"] = "READ_RECEIPT_RECEIVED";
144
145
  })(exports.Events || (exports.Events = {}));
145
146
 
146
147
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -9493,6 +9494,10 @@
9493
9494
  CmdIds[CmdIds["DeletePrivateDialog"] = 1610682372] = "DeletePrivateDialog";
9494
9495
  CmdIds[CmdIds["DeleteGroupDialog"] = 1610747908] = "DeleteGroupDialog";
9495
9496
  CmdIds[CmdIds["GetDialogChangedStatus"] = 1610711094] = "GetDialogChangedStatus";
9497
+ CmdIds[CmdIds["SendGroupChatArrivalAck"] = 1610747952] = "SendGroupChatArrivalAck";
9498
+ CmdIds[CmdIds["SendGroupChatReadAck"] = 1610747953] = "SendGroupChatReadAck";
9499
+ CmdIds[CmdIds["SendPrivateChatArrivalAck"] = 1610682403] = "SendPrivateChatArrivalAck";
9500
+ CmdIds[CmdIds["SendPrivateChatReadAck"] = 1610682404] = "SendPrivateChatReadAck";
9496
9501
  CmdIds[CmdIds["HeartbeanResp"] = 268468225] = "HeartbeanResp";
9497
9502
  CmdIds[CmdIds["NewMessagePush"] = 1610711040] = "NewMessagePush";
9498
9503
  CmdIds[CmdIds["DialogChangedPush"] = 1610711096] = "DialogChangedPush";
@@ -14510,6 +14515,8 @@
14510
14515
  * @property {Long|null} [seqno] DialogMessage seqno
14511
14516
  * @property {string|null} [replyMarkup] DialogMessage replyMarkup
14512
14517
  * @property {string|null} [extra] DialogMessage extra
14518
+ * @property {boolean|null} [msgArrival] DialogMessage msgArrival
14519
+ * @property {boolean|null} [msgRead] DialogMessage msgRead
14513
14520
  */
14514
14521
 
14515
14522
  /**
@@ -14724,6 +14731,22 @@
14724
14731
  */
14725
14732
  DialogMessage.prototype.extra = "";
14726
14733
 
14734
+ /**
14735
+ * DialogMessage msgArrival.
14736
+ * @member {boolean} msgArrival
14737
+ * @memberof DialogMessage
14738
+ * @instance
14739
+ */
14740
+ DialogMessage.prototype.msgArrival = false;
14741
+
14742
+ /**
14743
+ * DialogMessage msgRead.
14744
+ * @member {boolean} msgRead
14745
+ * @memberof DialogMessage
14746
+ * @instance
14747
+ */
14748
+ DialogMessage.prototype.msgRead = false;
14749
+
14727
14750
  /**
14728
14751
  * Encodes the specified DialogMessage message. Does not implicitly {@link DialogMessage.verify|verify} messages.
14729
14752
  * @function encode
@@ -14760,6 +14783,8 @@
14760
14783
  if (message.seqno != null && Object.hasOwnProperty.call(message, "seqno")) writer.uint32(/* id 23, wireType 0 =*/184).int64(message.seqno);
14761
14784
  if (message.replyMarkup != null && Object.hasOwnProperty.call(message, "replyMarkup")) writer.uint32(/* id 24, wireType 2 =*/194).string(message.replyMarkup);
14762
14785
  if (message.extra != null && Object.hasOwnProperty.call(message, "extra")) writer.uint32(/* id 25, wireType 2 =*/202).string(message.extra);
14786
+ if (message.msgArrival != null && Object.hasOwnProperty.call(message, "msgArrival")) writer.uint32(/* id 26, wireType 0 =*/208).bool(message.msgArrival);
14787
+ if (message.msgRead != null && Object.hasOwnProperty.call(message, "msgRead")) writer.uint32(/* id 27, wireType 0 =*/216).bool(message.msgRead);
14763
14788
  return writer;
14764
14789
  };
14765
14790
 
@@ -14906,6 +14931,16 @@
14906
14931
  message.extra = reader.string();
14907
14932
  break;
14908
14933
  }
14934
+ case 26:
14935
+ {
14936
+ message.msgArrival = reader.bool();
14937
+ break;
14938
+ }
14939
+ case 27:
14940
+ {
14941
+ message.msgRead = reader.bool();
14942
+ break;
14943
+ }
14909
14944
  default:
14910
14945
  reader.skipType(tag & 7);
14911
14946
  break;
@@ -17601,6 +17636,304 @@
17601
17636
  };
17602
17637
  return NewMessageNotificationResp;
17603
17638
  })();
17639
+ $root$1.ChatMessage = (() => {
17640
+ /**
17641
+ * Properties of a ChatMessage.
17642
+ * @exports IChatMessage
17643
+ * @interface IChatMessage
17644
+ * @property {Long|null} [destId] ChatMessage destId
17645
+ * @property {Array.<Long>|null} [msgId] ChatMessage msgId
17646
+ */
17647
+
17648
+ /**
17649
+ * Constructs a new ChatMessage.
17650
+ * @exports ChatMessage
17651
+ * @classdesc Represents a ChatMessage.
17652
+ * @implements IChatMessage
17653
+ * @constructor
17654
+ * @param {IChatMessage=} [properties] Properties to set
17655
+ */
17656
+ function ChatMessage(properties) {
17657
+ this.msgId = [];
17658
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
17659
+ }
17660
+
17661
+ /**
17662
+ * ChatMessage destId.
17663
+ * @member {Long} destId
17664
+ * @memberof ChatMessage
17665
+ * @instance
17666
+ */
17667
+ ChatMessage.prototype.destId = $util$1.Long ? $util$1.Long.fromBits(0, 0, false) : 0;
17668
+
17669
+ /**
17670
+ * ChatMessage msgId.
17671
+ * @member {Array.<Long>} msgId
17672
+ * @memberof ChatMessage
17673
+ * @instance
17674
+ */
17675
+ ChatMessage.prototype.msgId = $util$1.emptyArray;
17676
+
17677
+ /**
17678
+ * Encodes the specified ChatMessage message. Does not implicitly {@link ChatMessage.verify|verify} messages.
17679
+ * @function encode
17680
+ * @memberof ChatMessage
17681
+ * @static
17682
+ * @param {IChatMessage} message ChatMessage message or plain object to encode
17683
+ * @param {$protobuf.Writer} [writer] Writer to encode to
17684
+ * @returns {$protobuf.Writer} Writer
17685
+ */
17686
+ ChatMessage.encode = function encode(message, writer) {
17687
+ if (!writer) writer = $Writer$1.create();
17688
+ if (message.destId != null && Object.hasOwnProperty.call(message, "destId")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.destId);
17689
+ if (message.msgId != null && message.msgId.length) {
17690
+ writer.uint32(/* id 2, wireType 2 =*/18).fork();
17691
+ for (let i = 0; i < message.msgId.length; ++i) writer.int64(message.msgId[i]);
17692
+ writer.ldelim();
17693
+ }
17694
+ return writer;
17695
+ };
17696
+
17697
+ /**
17698
+ * Decodes a ChatMessage message from the specified reader or buffer.
17699
+ * @function decode
17700
+ * @memberof ChatMessage
17701
+ * @static
17702
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
17703
+ * @param {number} [length] Message length if known beforehand
17704
+ * @returns {ChatMessage} ChatMessage
17705
+ * @throws {Error} If the payload is not a reader or valid buffer
17706
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
17707
+ */
17708
+ ChatMessage.decode = function decode(reader, length) {
17709
+ if (!(reader instanceof $Reader$1)) reader = $Reader$1.create(reader);
17710
+ let end = length === undefined ? reader.len : reader.pos + length,
17711
+ message = new $root$1.ChatMessage();
17712
+ while (reader.pos < end) {
17713
+ let tag = reader.uint32();
17714
+ switch (tag >>> 3) {
17715
+ case 1:
17716
+ {
17717
+ message.destId = reader.int64();
17718
+ break;
17719
+ }
17720
+ case 2:
17721
+ {
17722
+ if (!(message.msgId && message.msgId.length)) message.msgId = [];
17723
+ if ((tag & 7) === 2) {
17724
+ let end2 = reader.uint32() + reader.pos;
17725
+ while (reader.pos < end2) message.msgId.push(reader.int64());
17726
+ } else message.msgId.push(reader.int64());
17727
+ break;
17728
+ }
17729
+ default:
17730
+ reader.skipType(tag & 7);
17731
+ break;
17732
+ }
17733
+ }
17734
+ return message;
17735
+ };
17736
+
17737
+ /**
17738
+ * Gets the default type url for ChatMessage
17739
+ * @function getTypeUrl
17740
+ * @memberof ChatMessage
17741
+ * @static
17742
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
17743
+ * @returns {string} The default type url
17744
+ */
17745
+ ChatMessage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
17746
+ if (typeUrlPrefix === undefined) {
17747
+ typeUrlPrefix = "type.googleapis.com";
17748
+ }
17749
+ return typeUrlPrefix + "/ChatMessage";
17750
+ };
17751
+ return ChatMessage;
17752
+ })();
17753
+ const SendPrivateChatArrivalAckReq = $root$1.SendPrivateChatArrivalAckReq = (() => {
17754
+ /**
17755
+ * Properties of a SendPrivateChatArrivalAckReq.
17756
+ * @exports ISendPrivateChatArrivalAckReq
17757
+ * @interface ISendPrivateChatArrivalAckReq
17758
+ * @property {Array.<IChatMessage>|null} [chatMessage] SendPrivateChatArrivalAckReq chatMessage
17759
+ */
17760
+
17761
+ /**
17762
+ * Constructs a new SendPrivateChatArrivalAckReq.
17763
+ * @exports SendPrivateChatArrivalAckReq
17764
+ * @classdesc Represents a SendPrivateChatArrivalAckReq.
17765
+ * @implements ISendPrivateChatArrivalAckReq
17766
+ * @constructor
17767
+ * @param {ISendPrivateChatArrivalAckReq=} [properties] Properties to set
17768
+ */
17769
+ function SendPrivateChatArrivalAckReq(properties) {
17770
+ this.chatMessage = [];
17771
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
17772
+ }
17773
+
17774
+ /**
17775
+ * SendPrivateChatArrivalAckReq chatMessage.
17776
+ * @member {Array.<IChatMessage>} chatMessage
17777
+ * @memberof SendPrivateChatArrivalAckReq
17778
+ * @instance
17779
+ */
17780
+ SendPrivateChatArrivalAckReq.prototype.chatMessage = $util$1.emptyArray;
17781
+
17782
+ /**
17783
+ * Encodes the specified SendPrivateChatArrivalAckReq message. Does not implicitly {@link SendPrivateChatArrivalAckReq.verify|verify} messages.
17784
+ * @function encode
17785
+ * @memberof SendPrivateChatArrivalAckReq
17786
+ * @static
17787
+ * @param {ISendPrivateChatArrivalAckReq} message SendPrivateChatArrivalAckReq message or plain object to encode
17788
+ * @param {$protobuf.Writer} [writer] Writer to encode to
17789
+ * @returns {$protobuf.Writer} Writer
17790
+ */
17791
+ SendPrivateChatArrivalAckReq.encode = function encode(message, writer) {
17792
+ if (!writer) writer = $Writer$1.create();
17793
+ if (message.chatMessage != null && message.chatMessage.length) for (let i = 0; i < message.chatMessage.length; ++i) $root$1.ChatMessage.encode(message.chatMessage[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
17794
+ return writer;
17795
+ };
17796
+
17797
+ /**
17798
+ * Decodes a SendPrivateChatArrivalAckReq message from the specified reader or buffer.
17799
+ * @function decode
17800
+ * @memberof SendPrivateChatArrivalAckReq
17801
+ * @static
17802
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
17803
+ * @param {number} [length] Message length if known beforehand
17804
+ * @returns {SendPrivateChatArrivalAckReq} SendPrivateChatArrivalAckReq
17805
+ * @throws {Error} If the payload is not a reader or valid buffer
17806
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
17807
+ */
17808
+ SendPrivateChatArrivalAckReq.decode = function decode(reader, length) {
17809
+ if (!(reader instanceof $Reader$1)) reader = $Reader$1.create(reader);
17810
+ let end = length === undefined ? reader.len : reader.pos + length,
17811
+ message = new $root$1.SendPrivateChatArrivalAckReq();
17812
+ while (reader.pos < end) {
17813
+ let tag = reader.uint32();
17814
+ switch (tag >>> 3) {
17815
+ case 1:
17816
+ {
17817
+ if (!(message.chatMessage && message.chatMessage.length)) message.chatMessage = [];
17818
+ message.chatMessage.push($root$1.ChatMessage.decode(reader, reader.uint32()));
17819
+ break;
17820
+ }
17821
+ default:
17822
+ reader.skipType(tag & 7);
17823
+ break;
17824
+ }
17825
+ }
17826
+ return message;
17827
+ };
17828
+
17829
+ /**
17830
+ * Gets the default type url for SendPrivateChatArrivalAckReq
17831
+ * @function getTypeUrl
17832
+ * @memberof SendPrivateChatArrivalAckReq
17833
+ * @static
17834
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
17835
+ * @returns {string} The default type url
17836
+ */
17837
+ SendPrivateChatArrivalAckReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
17838
+ if (typeUrlPrefix === undefined) {
17839
+ typeUrlPrefix = "type.googleapis.com";
17840
+ }
17841
+ return typeUrlPrefix + "/SendPrivateChatArrivalAckReq";
17842
+ };
17843
+ return SendPrivateChatArrivalAckReq;
17844
+ })();
17845
+ const SendPrivateChatReadAckReq = $root$1.SendPrivateChatReadAckReq = (() => {
17846
+ /**
17847
+ * Properties of a SendPrivateChatReadAckReq.
17848
+ * @exports ISendPrivateChatReadAckReq
17849
+ * @interface ISendPrivateChatReadAckReq
17850
+ * @property {Array.<IChatMessage>|null} [chatMessage] SendPrivateChatReadAckReq chatMessage
17851
+ */
17852
+
17853
+ /**
17854
+ * Constructs a new SendPrivateChatReadAckReq.
17855
+ * @exports SendPrivateChatReadAckReq
17856
+ * @classdesc Represents a SendPrivateChatReadAckReq.
17857
+ * @implements ISendPrivateChatReadAckReq
17858
+ * @constructor
17859
+ * @param {ISendPrivateChatReadAckReq=} [properties] Properties to set
17860
+ */
17861
+ function SendPrivateChatReadAckReq(properties) {
17862
+ this.chatMessage = [];
17863
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
17864
+ }
17865
+
17866
+ /**
17867
+ * SendPrivateChatReadAckReq chatMessage.
17868
+ * @member {Array.<IChatMessage>} chatMessage
17869
+ * @memberof SendPrivateChatReadAckReq
17870
+ * @instance
17871
+ */
17872
+ SendPrivateChatReadAckReq.prototype.chatMessage = $util$1.emptyArray;
17873
+
17874
+ /**
17875
+ * Encodes the specified SendPrivateChatReadAckReq message. Does not implicitly {@link SendPrivateChatReadAckReq.verify|verify} messages.
17876
+ * @function encode
17877
+ * @memberof SendPrivateChatReadAckReq
17878
+ * @static
17879
+ * @param {ISendPrivateChatReadAckReq} message SendPrivateChatReadAckReq message or plain object to encode
17880
+ * @param {$protobuf.Writer} [writer] Writer to encode to
17881
+ * @returns {$protobuf.Writer} Writer
17882
+ */
17883
+ SendPrivateChatReadAckReq.encode = function encode(message, writer) {
17884
+ if (!writer) writer = $Writer$1.create();
17885
+ if (message.chatMessage != null && message.chatMessage.length) for (let i = 0; i < message.chatMessage.length; ++i) $root$1.ChatMessage.encode(message.chatMessage[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
17886
+ return writer;
17887
+ };
17888
+
17889
+ /**
17890
+ * Decodes a SendPrivateChatReadAckReq message from the specified reader or buffer.
17891
+ * @function decode
17892
+ * @memberof SendPrivateChatReadAckReq
17893
+ * @static
17894
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
17895
+ * @param {number} [length] Message length if known beforehand
17896
+ * @returns {SendPrivateChatReadAckReq} SendPrivateChatReadAckReq
17897
+ * @throws {Error} If the payload is not a reader or valid buffer
17898
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
17899
+ */
17900
+ SendPrivateChatReadAckReq.decode = function decode(reader, length) {
17901
+ if (!(reader instanceof $Reader$1)) reader = $Reader$1.create(reader);
17902
+ let end = length === undefined ? reader.len : reader.pos + length,
17903
+ message = new $root$1.SendPrivateChatReadAckReq();
17904
+ while (reader.pos < end) {
17905
+ let tag = reader.uint32();
17906
+ switch (tag >>> 3) {
17907
+ case 1:
17908
+ {
17909
+ if (!(message.chatMessage && message.chatMessage.length)) message.chatMessage = [];
17910
+ message.chatMessage.push($root$1.ChatMessage.decode(reader, reader.uint32()));
17911
+ break;
17912
+ }
17913
+ default:
17914
+ reader.skipType(tag & 7);
17915
+ break;
17916
+ }
17917
+ }
17918
+ return message;
17919
+ };
17920
+
17921
+ /**
17922
+ * Gets the default type url for SendPrivateChatReadAckReq
17923
+ * @function getTypeUrl
17924
+ * @memberof SendPrivateChatReadAckReq
17925
+ * @static
17926
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
17927
+ * @returns {string} The default type url
17928
+ */
17929
+ SendPrivateChatReadAckReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
17930
+ if (typeUrlPrefix === undefined) {
17931
+ typeUrlPrefix = "type.googleapis.com";
17932
+ }
17933
+ return typeUrlPrefix + "/SendPrivateChatReadAckReq";
17934
+ };
17935
+ return SendPrivateChatReadAckReq;
17936
+ })();
17604
17937
 
17605
17938
  /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
17606
17939
 
@@ -18385,7 +18718,7 @@
18385
18718
  };
18386
18719
  return RecallGroupChatMessageReq;
18387
18720
  })();
18388
- const DeleteGroupChatDialogReq = $root.DeleteGroupChatDialogReq = (() => {
18721
+ $root.DeleteGroupChatDialogReq = (() => {
18389
18722
  /**
18390
18723
  * Properties of a DeleteGroupChatDialogReq.
18391
18724
  * @exports IDeleteGroupChatDialogReq
@@ -18475,6 +18808,319 @@
18475
18808
  };
18476
18809
  return DeleteGroupChatDialogReq;
18477
18810
  })();
18811
+ $root.GroupChatMessage = (() => {
18812
+ /**
18813
+ * Properties of a GroupChatMessage.
18814
+ * @exports IGroupChatMessage
18815
+ * @interface IGroupChatMessage
18816
+ * @property {Long|null} [groupId] GroupChatMessage groupId
18817
+ * @property {Long|null} [userId] GroupChatMessage userId
18818
+ * @property {Array.<Long>|null} [msgId] GroupChatMessage msgId
18819
+ */
18820
+
18821
+ /**
18822
+ * Constructs a new GroupChatMessage.
18823
+ * @exports GroupChatMessage
18824
+ * @classdesc Represents a GroupChatMessage.
18825
+ * @implements IGroupChatMessage
18826
+ * @constructor
18827
+ * @param {IGroupChatMessage=} [properties] Properties to set
18828
+ */
18829
+ function GroupChatMessage(properties) {
18830
+ this.msgId = [];
18831
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
18832
+ }
18833
+
18834
+ /**
18835
+ * GroupChatMessage groupId.
18836
+ * @member {Long} groupId
18837
+ * @memberof GroupChatMessage
18838
+ * @instance
18839
+ */
18840
+ GroupChatMessage.prototype.groupId = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;
18841
+
18842
+ /**
18843
+ * GroupChatMessage userId.
18844
+ * @member {Long} userId
18845
+ * @memberof GroupChatMessage
18846
+ * @instance
18847
+ */
18848
+ GroupChatMessage.prototype.userId = $util.Long ? $util.Long.fromBits(0, 0, false) : 0;
18849
+
18850
+ /**
18851
+ * GroupChatMessage msgId.
18852
+ * @member {Array.<Long>} msgId
18853
+ * @memberof GroupChatMessage
18854
+ * @instance
18855
+ */
18856
+ GroupChatMessage.prototype.msgId = $util.emptyArray;
18857
+
18858
+ /**
18859
+ * Encodes the specified GroupChatMessage message. Does not implicitly {@link GroupChatMessage.verify|verify} messages.
18860
+ * @function encode
18861
+ * @memberof GroupChatMessage
18862
+ * @static
18863
+ * @param {IGroupChatMessage} message GroupChatMessage message or plain object to encode
18864
+ * @param {$protobuf.Writer} [writer] Writer to encode to
18865
+ * @returns {$protobuf.Writer} Writer
18866
+ */
18867
+ GroupChatMessage.encode = function encode(message, writer) {
18868
+ if (!writer) writer = $Writer.create();
18869
+ if (message.groupId != null && Object.hasOwnProperty.call(message, "groupId")) writer.uint32(/* id 1, wireType 0 =*/8).int64(message.groupId);
18870
+ if (message.userId != null && Object.hasOwnProperty.call(message, "userId")) writer.uint32(/* id 2, wireType 0 =*/16).int64(message.userId);
18871
+ if (message.msgId != null && message.msgId.length) {
18872
+ writer.uint32(/* id 3, wireType 2 =*/26).fork();
18873
+ for (let i = 0; i < message.msgId.length; ++i) writer.int64(message.msgId[i]);
18874
+ writer.ldelim();
18875
+ }
18876
+ return writer;
18877
+ };
18878
+
18879
+ /**
18880
+ * Decodes a GroupChatMessage message from the specified reader or buffer.
18881
+ * @function decode
18882
+ * @memberof GroupChatMessage
18883
+ * @static
18884
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
18885
+ * @param {number} [length] Message length if known beforehand
18886
+ * @returns {GroupChatMessage} GroupChatMessage
18887
+ * @throws {Error} If the payload is not a reader or valid buffer
18888
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
18889
+ */
18890
+ GroupChatMessage.decode = function decode(reader, length) {
18891
+ if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
18892
+ let end = length === undefined ? reader.len : reader.pos + length,
18893
+ message = new $root.GroupChatMessage();
18894
+ while (reader.pos < end) {
18895
+ let tag = reader.uint32();
18896
+ switch (tag >>> 3) {
18897
+ case 1:
18898
+ {
18899
+ message.groupId = reader.int64();
18900
+ break;
18901
+ }
18902
+ case 2:
18903
+ {
18904
+ message.userId = reader.int64();
18905
+ break;
18906
+ }
18907
+ case 3:
18908
+ {
18909
+ if (!(message.msgId && message.msgId.length)) message.msgId = [];
18910
+ if ((tag & 7) === 2) {
18911
+ let end2 = reader.uint32() + reader.pos;
18912
+ while (reader.pos < end2) message.msgId.push(reader.int64());
18913
+ } else message.msgId.push(reader.int64());
18914
+ break;
18915
+ }
18916
+ default:
18917
+ reader.skipType(tag & 7);
18918
+ break;
18919
+ }
18920
+ }
18921
+ return message;
18922
+ };
18923
+
18924
+ /**
18925
+ * Gets the default type url for GroupChatMessage
18926
+ * @function getTypeUrl
18927
+ * @memberof GroupChatMessage
18928
+ * @static
18929
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
18930
+ * @returns {string} The default type url
18931
+ */
18932
+ GroupChatMessage.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
18933
+ if (typeUrlPrefix === undefined) {
18934
+ typeUrlPrefix = "type.googleapis.com";
18935
+ }
18936
+ return typeUrlPrefix + "/GroupChatMessage";
18937
+ };
18938
+ return GroupChatMessage;
18939
+ })();
18940
+ const SendGroupChatArrivalAckReq = $root.SendGroupChatArrivalAckReq = (() => {
18941
+ /**
18942
+ * Properties of a SendGroupChatArrivalAckReq.
18943
+ * @exports ISendGroupChatArrivalAckReq
18944
+ * @interface ISendGroupChatArrivalAckReq
18945
+ * @property {Array.<IGroupChatMessage>|null} [groupChatMessage] SendGroupChatArrivalAckReq groupChatMessage
18946
+ */
18947
+
18948
+ /**
18949
+ * Constructs a new SendGroupChatArrivalAckReq.
18950
+ * @exports SendGroupChatArrivalAckReq
18951
+ * @classdesc Represents a SendGroupChatArrivalAckReq.
18952
+ * @implements ISendGroupChatArrivalAckReq
18953
+ * @constructor
18954
+ * @param {ISendGroupChatArrivalAckReq=} [properties] Properties to set
18955
+ */
18956
+ function SendGroupChatArrivalAckReq(properties) {
18957
+ this.groupChatMessage = [];
18958
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
18959
+ }
18960
+
18961
+ /**
18962
+ * SendGroupChatArrivalAckReq groupChatMessage.
18963
+ * @member {Array.<IGroupChatMessage>} groupChatMessage
18964
+ * @memberof SendGroupChatArrivalAckReq
18965
+ * @instance
18966
+ */
18967
+ SendGroupChatArrivalAckReq.prototype.groupChatMessage = $util.emptyArray;
18968
+
18969
+ /**
18970
+ * Encodes the specified SendGroupChatArrivalAckReq message. Does not implicitly {@link SendGroupChatArrivalAckReq.verify|verify} messages.
18971
+ * @function encode
18972
+ * @memberof SendGroupChatArrivalAckReq
18973
+ * @static
18974
+ * @param {ISendGroupChatArrivalAckReq} message SendGroupChatArrivalAckReq message or plain object to encode
18975
+ * @param {$protobuf.Writer} [writer] Writer to encode to
18976
+ * @returns {$protobuf.Writer} Writer
18977
+ */
18978
+ SendGroupChatArrivalAckReq.encode = function encode(message, writer) {
18979
+ if (!writer) writer = $Writer.create();
18980
+ if (message.groupChatMessage != null && message.groupChatMessage.length) for (let i = 0; i < message.groupChatMessage.length; ++i) $root.GroupChatMessage.encode(message.groupChatMessage[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
18981
+ return writer;
18982
+ };
18983
+
18984
+ /**
18985
+ * Decodes a SendGroupChatArrivalAckReq message from the specified reader or buffer.
18986
+ * @function decode
18987
+ * @memberof SendGroupChatArrivalAckReq
18988
+ * @static
18989
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
18990
+ * @param {number} [length] Message length if known beforehand
18991
+ * @returns {SendGroupChatArrivalAckReq} SendGroupChatArrivalAckReq
18992
+ * @throws {Error} If the payload is not a reader or valid buffer
18993
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
18994
+ */
18995
+ SendGroupChatArrivalAckReq.decode = function decode(reader, length) {
18996
+ if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
18997
+ let end = length === undefined ? reader.len : reader.pos + length,
18998
+ message = new $root.SendGroupChatArrivalAckReq();
18999
+ while (reader.pos < end) {
19000
+ let tag = reader.uint32();
19001
+ switch (tag >>> 3) {
19002
+ case 1:
19003
+ {
19004
+ if (!(message.groupChatMessage && message.groupChatMessage.length)) message.groupChatMessage = [];
19005
+ message.groupChatMessage.push($root.GroupChatMessage.decode(reader, reader.uint32()));
19006
+ break;
19007
+ }
19008
+ default:
19009
+ reader.skipType(tag & 7);
19010
+ break;
19011
+ }
19012
+ }
19013
+ return message;
19014
+ };
19015
+
19016
+ /**
19017
+ * Gets the default type url for SendGroupChatArrivalAckReq
19018
+ * @function getTypeUrl
19019
+ * @memberof SendGroupChatArrivalAckReq
19020
+ * @static
19021
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
19022
+ * @returns {string} The default type url
19023
+ */
19024
+ SendGroupChatArrivalAckReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
19025
+ if (typeUrlPrefix === undefined) {
19026
+ typeUrlPrefix = "type.googleapis.com";
19027
+ }
19028
+ return typeUrlPrefix + "/SendGroupChatArrivalAckReq";
19029
+ };
19030
+ return SendGroupChatArrivalAckReq;
19031
+ })();
19032
+ const SendGroupChatReadAckReq = $root.SendGroupChatReadAckReq = (() => {
19033
+ /**
19034
+ * Properties of a SendGroupChatReadAckReq.
19035
+ * @exports ISendGroupChatReadAckReq
19036
+ * @interface ISendGroupChatReadAckReq
19037
+ * @property {Array.<IGroupChatMessage>|null} [groupChatMessage] SendGroupChatReadAckReq groupChatMessage
19038
+ */
19039
+
19040
+ /**
19041
+ * Constructs a new SendGroupChatReadAckReq.
19042
+ * @exports SendGroupChatReadAckReq
19043
+ * @classdesc Represents a SendGroupChatReadAckReq.
19044
+ * @implements ISendGroupChatReadAckReq
19045
+ * @constructor
19046
+ * @param {ISendGroupChatReadAckReq=} [properties] Properties to set
19047
+ */
19048
+ function SendGroupChatReadAckReq(properties) {
19049
+ this.groupChatMessage = [];
19050
+ if (properties) for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i) if (properties[keys[i]] != null) this[keys[i]] = properties[keys[i]];
19051
+ }
19052
+
19053
+ /**
19054
+ * SendGroupChatReadAckReq groupChatMessage.
19055
+ * @member {Array.<IGroupChatMessage>} groupChatMessage
19056
+ * @memberof SendGroupChatReadAckReq
19057
+ * @instance
19058
+ */
19059
+ SendGroupChatReadAckReq.prototype.groupChatMessage = $util.emptyArray;
19060
+
19061
+ /**
19062
+ * Encodes the specified SendGroupChatReadAckReq message. Does not implicitly {@link SendGroupChatReadAckReq.verify|verify} messages.
19063
+ * @function encode
19064
+ * @memberof SendGroupChatReadAckReq
19065
+ * @static
19066
+ * @param {ISendGroupChatReadAckReq} message SendGroupChatReadAckReq message or plain object to encode
19067
+ * @param {$protobuf.Writer} [writer] Writer to encode to
19068
+ * @returns {$protobuf.Writer} Writer
19069
+ */
19070
+ SendGroupChatReadAckReq.encode = function encode(message, writer) {
19071
+ if (!writer) writer = $Writer.create();
19072
+ if (message.groupChatMessage != null && message.groupChatMessage.length) for (let i = 0; i < message.groupChatMessage.length; ++i) $root.GroupChatMessage.encode(message.groupChatMessage[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
19073
+ return writer;
19074
+ };
19075
+
19076
+ /**
19077
+ * Decodes a SendGroupChatReadAckReq message from the specified reader or buffer.
19078
+ * @function decode
19079
+ * @memberof SendGroupChatReadAckReq
19080
+ * @static
19081
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
19082
+ * @param {number} [length] Message length if known beforehand
19083
+ * @returns {SendGroupChatReadAckReq} SendGroupChatReadAckReq
19084
+ * @throws {Error} If the payload is not a reader or valid buffer
19085
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
19086
+ */
19087
+ SendGroupChatReadAckReq.decode = function decode(reader, length) {
19088
+ if (!(reader instanceof $Reader)) reader = $Reader.create(reader);
19089
+ let end = length === undefined ? reader.len : reader.pos + length,
19090
+ message = new $root.SendGroupChatReadAckReq();
19091
+ while (reader.pos < end) {
19092
+ let tag = reader.uint32();
19093
+ switch (tag >>> 3) {
19094
+ case 1:
19095
+ {
19096
+ if (!(message.groupChatMessage && message.groupChatMessage.length)) message.groupChatMessage = [];
19097
+ message.groupChatMessage.push($root.GroupChatMessage.decode(reader, reader.uint32()));
19098
+ break;
19099
+ }
19100
+ default:
19101
+ reader.skipType(tag & 7);
19102
+ break;
19103
+ }
19104
+ }
19105
+ return message;
19106
+ };
19107
+
19108
+ /**
19109
+ * Gets the default type url for SendGroupChatReadAckReq
19110
+ * @function getTypeUrl
19111
+ * @memberof SendGroupChatReadAckReq
19112
+ * @static
19113
+ * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default "type.googleapis.com")
19114
+ * @returns {string} The default type url
19115
+ */
19116
+ SendGroupChatReadAckReq.getTypeUrl = function getTypeUrl(typeUrlPrefix) {
19117
+ if (typeUrlPrefix === undefined) {
19118
+ typeUrlPrefix = "type.googleapis.com";
19119
+ }
19120
+ return typeUrlPrefix + "/SendGroupChatReadAckReq";
19121
+ };
19122
+ return SendGroupChatReadAckReq;
19123
+ })();
18478
19124
 
18479
19125
  function extractConversationType(destId) {
18480
19126
  const longId = isString(destId) ? Long.fromString(destId) : destId;
@@ -18634,22 +19280,12 @@
18634
19280
  return reqPromise;
18635
19281
  };
18636
19282
  const deleteDialog = dialogId => {
18637
- let reqPromise;
18638
- if (extractConversationType(dialogId) == exports.ConversationType.GROUP) {
18639
- reqPromise = webSocketServer.send(CmdIds$1.DeleteGroupDialog, {
18640
- groupId: Long.fromString(dialogId)
18641
- }, {
18642
- encoder: DeleteGroupChatDialogReq,
18643
- decoder: BaseResp
18644
- });
18645
- } else {
18646
- reqPromise = webSocketServer.send(CmdIds$1.DeletePrivateDialog, {
18647
- destId: Long.fromString(dialogId)
18648
- }, {
18649
- encoder: DeletePrivateChatDialogReq,
18650
- decoder: BaseResp
18651
- });
18652
- }
19283
+ let reqPromise = webSocketServer.send(CmdIds$1.DeletePrivateDialog, {
19284
+ destId: Long.fromString(dialogId)
19285
+ }, {
19286
+ encoder: DeletePrivateChatDialogReq,
19287
+ decoder: BaseResp
19288
+ });
18653
19289
  return reqPromise;
18654
19290
  };
18655
19291
  const getDialogChangedStatus = offset => webSocketServer.send(CmdIds$1.GetDialogChangedStatus, {
@@ -18658,6 +19294,22 @@
18658
19294
  encoder: GetNewSettingDialogListReq,
18659
19295
  decoder: GetNewSettingDialogListResp
18660
19296
  });
19297
+ const sendGroupChatArrivalAck = params => webSocketServer.send(CmdIds$1.SendGroupChatArrivalAck, params, {
19298
+ encoder: SendGroupChatArrivalAckReq,
19299
+ decoder: BaseResp
19300
+ });
19301
+ const sendGroupChatReadAck = params => webSocketServer.send(CmdIds$1.SendGroupChatReadAck, params, {
19302
+ encoder: SendGroupChatReadAckReq,
19303
+ decoder: BaseResp
19304
+ });
19305
+ const sendPrivateChatArrivalAck = params => webSocketServer.send(CmdIds$1.SendPrivateChatArrivalAck, params, {
19306
+ encoder: SendPrivateChatArrivalAckReq,
19307
+ decoder: BaseResp
19308
+ });
19309
+ const sendPrivateChatReadAck = params => webSocketServer.send(CmdIds$1.SendPrivateChatReadAck, params, {
19310
+ encoder: SendPrivateChatReadAckReq,
19311
+ decoder: BaseResp
19312
+ });
18661
19313
 
18662
19314
  let milliDelta__ = 0;
18663
19315
  const synchronizeServerTime = async () => {
@@ -18889,6 +19541,12 @@
18889
19541
  REDPACKET: 0x10001040,
18890
19542
  TRANSFER: 0x10001030
18891
19543
  };
19544
+ const NotiMessageTypes = {
19545
+ GROUP_ARRIVAL_RECEIPT: 0x60020024,
19546
+ GROUP_READ_RECEIPT: 0x60020025,
19547
+ PRIVATE_ARRIVAL_RECEIPT: 0x6001000C,
19548
+ PRIVATE_READ_RECEIPT: 0x6001000D
19549
+ };
18892
19550
 
18893
19551
  function deepClone(obj) {
18894
19552
  if (!isDef(obj)) {
@@ -19601,13 +20259,13 @@
19601
20259
  destroyed() {},
19602
20260
  syncConversationStatus: function () {}
19603
20261
  };
19604
- let manager;
20262
+ let manager$1;
19605
20263
  var ConversationManager$1 = {
19606
20264
  create(appkey, currentUserId, updatedConversationFunc) {
19607
- manager = new ConversationManager(appkey, currentUserId, updatedConversationFunc);
20265
+ manager$1 = new ConversationManager(appkey, currentUserId, updatedConversationFunc);
19608
20266
  },
19609
20267
  get() {
19610
- return manager ?? nullConversationManager;
20268
+ return manager$1 ?? nullConversationManager;
19611
20269
  }
19612
20270
  };
19613
20271
 
@@ -19689,7 +20347,7 @@
19689
20347
  sentStatus: exports.SentStatus.SENT,
19690
20348
  receivedTime: getServerTime$1().toString(),
19691
20349
  isStatusMessage: messageInstance.isStatusMessage,
19692
- receivedStatus: exports.ReceivedStatus.READ,
20350
+ receivedStatus: dialogMessage.msgRead ? exports.ReceivedStatus.READ : dialogMessage.msgArrival ? exports.ReceivedStatus.RECEIVED : exports.ReceivedStatus.IDLE,
19693
20351
  disableNotification: localConversation?.notificationStatus === exports.NotificationStatus.OPEN || dialogMessage.srcId.toString() == accountStore.uid
19694
20352
  };
19695
20353
  if (receivedMessage.isStatusMessage && Long.fromNumber(getServerTime$1()).subtract(receivedMessage.sentTime).greaterThan(STATUSMESSAGE_ALIVE_TIMEMS)) {
@@ -19773,6 +20431,117 @@
19773
20431
  parseChatRecordMsgDetails: parseChatRecordMsgDetails$1
19774
20432
  };
19775
20433
 
20434
+ const UNREADMESSAGEUIDS_KEY = 'unreadMessageUids';
20435
+ class MessageReceiptManager {
20436
+ localStore;
20437
+ constructor(appkey, currentUserId) {
20438
+ const suffix = `receipt-${appkey}-${currentUserId}`;
20439
+ this.localStore = new AppStorage(suffix);
20440
+ }
20441
+ storeUnreadMessageUids(messageList) {
20442
+ const validMessages = messageList.filter(m => m.isCounted && m.messageDirection !== exports.MessageDirection.SEND);
20443
+ const messageUids = validMessages.map(m => m.messageUId);
20444
+ const existingUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20445
+ const updatedUids = [...new Set([...existingUids, ...messageUids])];
20446
+ this.localStore.set(UNREADMESSAGEUIDS_KEY, updatedUids);
20447
+ }
20448
+ formatReceiptMessages(messages) {
20449
+ const privateMessages = [];
20450
+ const groupMessages = [];
20451
+ messages.forEach(m => {
20452
+ if (m.conversationType === exports.ConversationType.PRIVATE) {
20453
+ privateMessages.push(m);
20454
+ } else {
20455
+ groupMessages.push(m);
20456
+ }
20457
+ });
20458
+ const privateReceiptMessages = Object.entries(privateMessages.reduce((acc, msg) => {
20459
+ if (!acc[msg.targetId]) {
20460
+ acc[msg.targetId] = [];
20461
+ }
20462
+ acc[msg.targetId].push(msg.messageUId);
20463
+ return acc;
20464
+ }, {})).map(([conversationId, messageIds]) => ({
20465
+ destId: Long.fromString(conversationId),
20466
+ msgIds: messageIds
20467
+ }));
20468
+ const groupReceiptMessages = groupMessages.reduce((acc, msg) => {
20469
+ const existingGroup = acc.find(g => g.groupId.equals(Long.fromString(msg.targetId)) && g.userId.equals(Long.fromString(msg.senderUserId)));
20470
+ if (existingGroup) {
20471
+ existingGroup.msgIds.push(msg.messageUId);
20472
+ } else {
20473
+ acc.push({
20474
+ groupId: Long.fromString(msg.targetId),
20475
+ userId: Long.fromString(msg.senderUserId),
20476
+ msgIds: [msg.messageUId]
20477
+ });
20478
+ }
20479
+ return acc;
20480
+ }, []);
20481
+ return {
20482
+ privateReceiptMessages,
20483
+ groupReceiptMessages
20484
+ };
20485
+ }
20486
+ filterValidMessages(messageList) {
20487
+ return messageList.filter(m => m.isCounted && m.messageDirection !== exports.MessageDirection.SEND);
20488
+ }
20489
+ async sendArrivalReceipts(messageList) {
20490
+ this.storeUnreadMessageUids(messageList);
20491
+ const validMessages = this.filterValidMessages(messageList);
20492
+ const {
20493
+ privateReceiptMessages,
20494
+ groupReceiptMessages
20495
+ } = this.formatReceiptMessages(validMessages);
20496
+ if (privateReceiptMessages.length) {
20497
+ await sendPrivateChatArrivalAck({
20498
+ chatMessage: privateReceiptMessages
20499
+ });
20500
+ }
20501
+ if (groupReceiptMessages.length) {
20502
+ await sendGroupChatReadAck({
20503
+ groupChatMessage: groupReceiptMessages
20504
+ });
20505
+ }
20506
+ }
20507
+ async sendReadReceipts(messageList) {
20508
+ const storedUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20509
+ const validMessages = this.filterValidMessages(messageList).filter(m => storedUnreadUids.includes(m.messageUId));
20510
+ try {
20511
+ const {
20512
+ privateReceiptMessages,
20513
+ groupReceiptMessages
20514
+ } = this.formatReceiptMessages(validMessages);
20515
+ if (privateReceiptMessages.length) {
20516
+ await sendPrivateChatReadAck({
20517
+ chatMessage: privateReceiptMessages
20518
+ });
20519
+ }
20520
+ if (groupReceiptMessages.length) {
20521
+ await sendGroupChatArrivalAck({
20522
+ groupChatMessage: groupReceiptMessages
20523
+ });
20524
+ }
20525
+ const latestUnreadUids = this.localStore.get(UNREADMESSAGEUIDS_KEY) || [];
20526
+ const sentMessageUids = validMessages.map(m => m.messageUId);
20527
+ const remainingUids = latestUnreadUids.filter(uid => !sentMessageUids.includes(uid));
20528
+ this.localStore.set(UNREADMESSAGEUIDS_KEY, remainingUids);
20529
+ } catch (error) {
20530
+ console.error('发送已读回执失败:', error);
20531
+ throw error;
20532
+ }
20533
+ }
20534
+ }
20535
+ let manager;
20536
+ var MessageReceiptManager$1 = {
20537
+ create(appkey, currentUserId) {
20538
+ manager = new MessageReceiptManager(appkey, currentUserId);
20539
+ },
20540
+ get() {
20541
+ return manager;
20542
+ }
20543
+ };
20544
+
19776
20545
  class MessageLoader {
19777
20546
  watcher;
19778
20547
  pullingMsg = false;
@@ -19909,8 +20678,10 @@
19909
20678
  }
19910
20679
  });
19911
20680
  if (messages.length) {
19912
- this.watcher.batchMessage?.(messages);
20681
+ let normalMessages = this.handleReceiptMessages(messages);
20682
+ this.watcher.batchMessage?.(normalMessages);
19913
20683
  }
20684
+ MessageReceiptManager$1.get()?.sendArrivalReceipts(messages);
19914
20685
  if (done) {
19915
20686
  if (seqno.ge(this.serverMsgSeqno)) {
19916
20687
  this.serverMsgSeqno = seqno;
@@ -19929,6 +20700,39 @@
19929
20700
  }
19930
20701
  });
19931
20702
  }
20703
+ handleReceiptMessages(messages) {
20704
+ const normalMessages = [];
20705
+ const receiptnotificationMessages = [];
20706
+ messages.forEach(msg => {
20707
+ if (msg.messageType === NotiMessageTypes.GROUP_ARRIVAL_RECEIPT || msg.messageType === NotiMessageTypes.GROUP_READ_RECEIPT || msg.messageType === NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT || msg.messageType === NotiMessageTypes.PRIVATE_READ_RECEIPT) {
20708
+ receiptnotificationMessages.push(msg);
20709
+ } else {
20710
+ normalMessages.push(msg);
20711
+ }
20712
+ });
20713
+ const sentMessages = normalMessages.filter(m => m.messageDirection === exports.MessageDirection.SEND);
20714
+ receiptnotificationMessages.forEach(notiMsg => {
20715
+ const notiContent = notiMsg.content;
20716
+ const isArrivalReceipt = notiMsg.messageType === NotiMessageTypes.GROUP_ARRIVAL_RECEIPT || notiMsg.messageType === NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT;
20717
+ sentMessages.forEach(msg => {
20718
+ if (notiContent.msgIdList.includes(msg.messageUId)) {
20719
+ if (isArrivalReceipt) {
20720
+ msg.receivedStatus = exports.ReceivedStatus.RECEIVED;
20721
+ } else {
20722
+ msg.receivedStatus = exports.ReceivedStatus.READ;
20723
+ }
20724
+ }
20725
+ });
20726
+ this.watcher.onReceiptReceived?.({
20727
+ conversation: {
20728
+ conversationType: notiMsg.conversationType,
20729
+ targetId: notiMsg.targetId
20730
+ },
20731
+ messageUIdList: notiContent.msgIdList
20732
+ }, notiMsg.messageType === NotiMessageTypes.GROUP_ARRIVAL_RECEIPT || notiMsg.messageType === NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT ? 0 : 1);
20733
+ });
20734
+ return normalMessages;
20735
+ }
19932
20736
  isExistPersistedMessage(messageList) {
19933
20737
  return messageList.some(m => m.isPersited);
19934
20738
  }
@@ -19981,6 +20785,11 @@
19981
20785
 
19982
20786
  const RecallCommandMessage = registerMessageType$1(MessageTypes.RECALL, true, false, false);
19983
20787
 
20788
+ const GroupArrivalReceiptMessage = registerMessageType$1(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, false, false, true);
20789
+ const GroupReadReceiptMessage = registerMessageType$1(NotiMessageTypes.GROUP_READ_RECEIPT, false, false, true);
20790
+ const PrivateArrivalReceiptMessage = registerMessageType$1(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, false, false, true);
20791
+ const PrivateReadReceiptMessage = registerMessageType$1(NotiMessageTypes.PRIVATE_READ_RECEIPT, false, false, true);
20792
+
19984
20793
  const DEFAULT_SOCKET_URI = 'wss://imweb.mp.net:6443';
19985
20794
  class LibLoader {
19986
20795
  options;
@@ -20009,7 +20818,8 @@
20009
20818
  batchMessage: undefined,
20010
20819
  conversationState: undefined,
20011
20820
  onPush: undefined,
20012
- onRecall: undefined
20821
+ onRecall: undefined,
20822
+ onReceiptReceived: undefined
20013
20823
  };
20014
20824
  webSocketServer.setServerInfo(this.getWebSocketUrl());
20015
20825
  webSocketServer.setCallback({
@@ -20042,6 +20852,10 @@
20042
20852
  registerMessage(MessageTypes.GROUP_INVITATION, InvitationMessage);
20043
20853
  registerMessage(MessageTypes.REDPACKET, RedEnvelopeMessage);
20044
20854
  registerMessage(MessageTypes.TRANSFER, TransferMessage);
20855
+ registerMessage(NotiMessageTypes.GROUP_ARRIVAL_RECEIPT, GroupArrivalReceiptMessage);
20856
+ registerMessage(NotiMessageTypes.GROUP_READ_RECEIPT, GroupReadReceiptMessage);
20857
+ registerMessage(NotiMessageTypes.PRIVATE_ARRIVAL_RECEIPT, PrivateArrivalReceiptMessage);
20858
+ registerMessage(NotiMessageTypes.PRIVATE_READ_RECEIPT, PrivateReadReceiptMessage);
20045
20859
  }
20046
20860
  async connect() {
20047
20861
  if (this.connectionStatus === exports.ConnectionStatus.CONNECTED) {
@@ -20059,6 +20873,7 @@
20059
20873
  this.isInternalConnected = true;
20060
20874
  ConversationManager$1.get().destroyed();
20061
20875
  ConversationManager$1.create(this.options.appkey, accountStore.uid.toString(), this.watcher.conversationState);
20876
+ MessageReceiptManager$1.create(this.options.appkey, accountStore.uid.toString());
20062
20877
  this.messageLoader?.stop();
20063
20878
  this.messageLoader = new MessageLoader(this.watcher, this.options);
20064
20879
  synchronizeServerTime();
@@ -26739,7 +27554,7 @@
26739
27554
  sentStatus,
26740
27555
  receivedTime: '0',
26741
27556
  isStatusMessage: message.isStatusMessage,
26742
- receivedStatus: exports.ReceivedStatus.UNREAD,
27557
+ receivedStatus: exports.ReceivedStatus.IDLE,
26743
27558
  disableNotification: true
26744
27559
  });
26745
27560
 
@@ -27472,6 +28287,13 @@
27472
28287
  messageUids.forEach(messageUId => {
27473
28288
  this.emit(exports.Events.RECALL, messageUId);
27474
28289
  });
28290
+ },
28291
+ onReceiptReceived: (event, type) => {
28292
+ if (type === 0) {
28293
+ this.emit(exports.Events.ARRIVAL_RECEIPT_RECEIVED, event);
28294
+ } else {
28295
+ this.emit(exports.Events.READ_RECEIPT_RECEIVED, event);
28296
+ }
27475
28297
  }
27476
28298
  });
27477
28299
  }
@@ -27689,6 +28511,9 @@
27689
28511
  clearConversationMessageDraft(conversation) {
27690
28512
  ConversationManager$1.get().clearDraft(conversation);
27691
28513
  }
28514
+ async sendReadReceipts(messages) {
28515
+ await MessageReceiptManager$1.get()?.sendReadReceipts(messages);
28516
+ }
27692
28517
  formatConversation(serverConversationData) {
27693
28518
  const {
27694
28519
  dialog,
@@ -28965,6 +29790,18 @@
28965
29790
  const parseChatRecordMsgDetails = (conversation, detailItems) => {
28966
29791
  return serverMessageParser.parseChatRecordMsgDetails(conversation, detailItems);
28967
29792
  };
29793
+ const sendReadReceipts = async messages => {
29794
+ try {
29795
+ await imClient.sendReadReceipts(messages);
29796
+ return {
29797
+ code: exports.ErrorCode.SUCCESS
29798
+ };
29799
+ } catch (error) {
29800
+ return {
29801
+ code: exports.ErrorCode.UNKNOWN
29802
+ };
29803
+ }
29804
+ };
28968
29805
  const mockLogin = config => {
28969
29806
  return login(config);
28970
29807
  };
@@ -29035,6 +29872,7 @@
29035
29872
  exports.sendHQVoiceMessage = sendHQVoiceMessage;
29036
29873
  exports.sendImageMessage = sendImageMessage;
29037
29874
  exports.sendMessage = sendMessage;
29875
+ exports.sendReadReceipts = sendReadReceipts;
29038
29876
  exports.sendSightMessage = sendSightMessage;
29039
29877
  exports.sendTextMessage = sendTextMessage;
29040
29878
  exports.setConversationNotificationStatus = setConversationNotificationStatus;