stream-chat 6.1.0 → 6.4.0

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/dist/index.es.js CHANGED
@@ -103,6 +103,13 @@ var ChannelState = /*#__PURE__*/function () {
103
103
  * When false, any new message (received by websocket event - message.new) will not
104
104
  * be pushed on to message list.
105
105
  */
106
+
107
+ /**
108
+ * Disjoint lists of messages
109
+ * Users can jump in the message list (with searching) and this can result in disjoint lists of messages
110
+ * The state manages these lists and merges them when lists overlap
111
+ * The messages array contains the currently active set
112
+ */
106
113
  function ChannelState(channel) {
107
114
  var _this = this,
108
115
  _channel$state;
@@ -117,8 +124,6 @@ var ChannelState = /*#__PURE__*/function () {
117
124
 
118
125
  _defineProperty(this, "read", void 0);
119
126
 
120
- _defineProperty(this, "messages", void 0);
121
-
122
127
  _defineProperty(this, "pinnedMessages", void 0);
123
128
 
124
129
  _defineProperty(this, "threads", void 0);
@@ -137,6 +142,8 @@ var ChannelState = /*#__PURE__*/function () {
137
142
 
138
143
  _defineProperty(this, "isUpToDate", void 0);
139
144
 
145
+ _defineProperty(this, "messageSets", []);
146
+
140
147
  _defineProperty(this, "setIsUpToDate", function (isUpToDate) {
141
148
  _this.isUpToDate = isUpToDate;
142
149
  });
@@ -166,7 +173,9 @@ var ChannelState = /*#__PURE__*/function () {
166
173
  }
167
174
  };
168
175
 
169
- _updateUserMessages(_this.messages, user);
176
+ _this.messageSets.forEach(function (set) {
177
+ return _updateUserMessages(set.messages, user);
178
+ });
170
179
 
171
180
  for (var parentId in _this.threads) {
172
181
  _updateUserMessages(_this.threads[parentId], user);
@@ -220,7 +229,9 @@ var ChannelState = /*#__PURE__*/function () {
220
229
  }
221
230
  };
222
231
 
223
- _deleteUserMessages(_this.messages, user, hardDelete);
232
+ _this.messageSets.forEach(function (set) {
233
+ return _deleteUserMessages(set.messages, user, hardDelete);
234
+ });
224
235
 
225
236
  for (var parentId in _this.threads) {
226
237
  _deleteUserMessages(_this.threads[parentId], user, hardDelete);
@@ -233,7 +244,7 @@ var ChannelState = /*#__PURE__*/function () {
233
244
  this.watcher_count = 0;
234
245
  this.typing = {};
235
246
  this.read = {};
236
- this.messages = [];
247
+ this.initMessages();
237
248
  this.pinnedMessages = [];
238
249
  this.threads = {}; // a list of users to hide messages from
239
250
 
@@ -252,22 +263,58 @@ var ChannelState = /*#__PURE__*/function () {
252
263
  this.isUpToDate = true;
253
264
  this.last_message_at = (channel === null || channel === void 0 ? void 0 : (_channel$state = channel.state) === null || _channel$state === void 0 ? void 0 : _channel$state.last_message_at) != null ? new Date(channel.state.last_message_at) : null;
254
265
  }
255
- /**
256
- * addMessageSorted - Add a message to the state
257
- *
258
- * @param {MessageResponse<StreamChatGenerics>} newMessage A new message
259
- * @param {boolean} timestampChanged Whether updating a message with changed created_at value.
260
- * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
261
- *
262
- */
263
-
264
266
 
265
267
  _createClass(ChannelState, [{
268
+ key: "messages",
269
+ get: function get() {
270
+ var _this$messageSets$fin;
271
+
272
+ return ((_this$messageSets$fin = this.messageSets.find(function (s) {
273
+ return s.isCurrent;
274
+ })) === null || _this$messageSets$fin === void 0 ? void 0 : _this$messageSets$fin.messages) || [];
275
+ },
276
+ set: function set(messages) {
277
+ var index = this.messageSets.findIndex(function (s) {
278
+ return s.isCurrent;
279
+ });
280
+ this.messageSets[index].messages = messages;
281
+ }
282
+ /**
283
+ * The list of latest messages
284
+ * The messages array not always contains the latest messages (for example if a user searched for an earlier message, that is in a different message set)
285
+ */
286
+
287
+ }, {
288
+ key: "latestMessages",
289
+ get: function get() {
290
+ var _this$messageSets$fin2;
291
+
292
+ return ((_this$messageSets$fin2 = this.messageSets.find(function (s) {
293
+ return s.isLatest;
294
+ })) === null || _this$messageSets$fin2 === void 0 ? void 0 : _this$messageSets$fin2.messages) || [];
295
+ },
296
+ set: function set(messages) {
297
+ var index = this.messageSets.findIndex(function (s) {
298
+ return s.isLatest;
299
+ });
300
+ this.messageSets[index].messages = messages;
301
+ }
302
+ /**
303
+ * addMessageSorted - Add a message to the state
304
+ *
305
+ * @param {MessageResponse<StreamChatGenerics>} newMessage A new message
306
+ * @param {boolean} timestampChanged Whether updating a message with changed created_at value.
307
+ * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
308
+ * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if message is not in the list (only used if addIfDoesNotExist is true)
309
+ */
310
+
311
+ }, {
266
312
  key: "addMessageSorted",
267
313
  value: function addMessageSorted(newMessage) {
268
314
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
269
315
  var addIfDoesNotExist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
270
- return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist);
316
+ var messageSetToAddToIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'latest';
317
+ return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist, messageSetToAddToIfDoesNotExist);
271
318
  }
272
319
  /**
273
320
  * formatMessage - Takes the message object. Parses the dates, sets __html
@@ -299,6 +346,7 @@ var ChannelState = /*#__PURE__*/function () {
299
346
  * @param {boolean} timestampChanged Whether updating messages with changed created_at value.
300
347
  * @param {boolean} initializing Whether channel is being initialized.
301
348
  * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
349
+ * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if messages are not in the list (only used if addIfDoesNotExist is true)
302
350
  *
303
351
  */
304
352
 
@@ -308,48 +356,63 @@ var ChannelState = /*#__PURE__*/function () {
308
356
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
309
357
  var initializing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
310
358
  var addIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
359
+ var messageSetToAddToIfDoesNotExist = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'current';
311
360
 
312
- for (var i = 0; i < newMessages.length; i += 1) {
313
- var _this$_channel;
361
+ var _this$findTargetMessa = this.findTargetMessageSet(newMessages, addIfDoesNotExist, messageSetToAddToIfDoesNotExist),
362
+ messagesToAdd = _this$findTargetMessa.messagesToAdd,
363
+ targetMessageSetIndex = _this$findTargetMessa.targetMessageSetIndex;
314
364
 
315
- var isFromShadowBannedUser = newMessages[i].shadowed;
365
+ for (var i = 0; i < messagesToAdd.length; i += 1) {
366
+ var isFromShadowBannedUser = messagesToAdd[i].shadowed;
316
367
 
317
368
  if (isFromShadowBannedUser) {
318
369
  continue;
319
- }
370
+ } // If message is already formatted we can skip the tasks below
371
+ // This will be true for messages that are already present at the state -> this happens when we perform merging of message sets
372
+ // This will be also true for message previews used by some SDKs
320
373
 
321
- var message = this.formatMessage(newMessages[i]);
322
374
 
323
- if (message.user && (_this$_channel = this._channel) !== null && _this$_channel !== void 0 && _this$_channel.cid) {
324
- /**
325
- * Store the reference to user for this channel, so that when we have to
326
- * handle updates to user, we can use the reference map, to determine which
327
- * channels need to be updated with updated user object.
328
- */
329
- this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
330
- }
375
+ var isMessageFormatted = messagesToAdd[i].created_at instanceof Date;
376
+ var message = void 0;
331
377
 
332
- if (initializing && message.id && this.threads[message.id]) {
333
- // If we are initializing the state of channel (e.g., in case of connection recovery),
334
- // then in that case we remove thread related to this message from threads object.
335
- // This way we can ensure that we don't have any stale data in thread object
336
- // and consumer can refetch the replies.
337
- delete this.threads[message.id];
338
- }
378
+ if (isMessageFormatted) {
379
+ message = messagesToAdd[i];
380
+ } else {
381
+ var _this$_channel;
339
382
 
340
- if (!this.last_message_at) {
341
- this.last_message_at = new Date(message.created_at.getTime());
342
- }
383
+ message = this.formatMessage(messagesToAdd[i]);
384
+
385
+ if (message.user && (_this$_channel = this._channel) !== null && _this$_channel !== void 0 && _this$_channel.cid) {
386
+ /**
387
+ * Store the reference to user for this channel, so that when we have to
388
+ * handle updates to user, we can use the reference map, to determine which
389
+ * channels need to be updated with updated user object.
390
+ */
391
+ this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
392
+ }
343
393
 
344
- if (message.created_at.getTime() > this.last_message_at.getTime()) {
345
- this.last_message_at = new Date(message.created_at.getTime());
394
+ if (initializing && message.id && this.threads[message.id]) {
395
+ // If we are initializing the state of channel (e.g., in case of connection recovery),
396
+ // then in that case we remove thread related to this message from threads object.
397
+ // This way we can ensure that we don't have any stale data in thread object
398
+ // and consumer can refetch the replies.
399
+ delete this.threads[message.id];
400
+ }
401
+
402
+ if (!this.last_message_at) {
403
+ this.last_message_at = new Date(message.created_at.getTime());
404
+ }
405
+
406
+ if (message.created_at.getTime() > this.last_message_at.getTime()) {
407
+ this.last_message_at = new Date(message.created_at.getTime());
408
+ }
346
409
  } // update or append the messages...
347
410
 
348
411
 
349
- var parentID = message.parent_id; // add to the main message list
412
+ var parentID = message.parent_id; // add to the given message set
350
413
 
351
- if (!parentID || message.show_in_channel) {
352
- this.messages = this._addToMessageList(this.messages, message, timestampChanged, 'created_at', addIfDoesNotExist);
414
+ if ((!parentID || message.show_in_channel) && targetMessageSetIndex !== -1) {
415
+ this.messageSets[targetMessageSetIndex].messages = this._addToMessageList(this.messageSets[targetMessageSetIndex].messages, message, timestampChanged, 'created_at', addIfDoesNotExist);
353
416
  }
354
417
  /**
355
418
  * Add message to thread if applicable and the message
@@ -473,6 +536,8 @@ var ChannelState = /*#__PURE__*/function () {
473
536
  }, {
474
537
  key: "removeQuotedMessageReferences",
475
538
  value: function removeQuotedMessageReferences(message) {
539
+ var _this4 = this;
540
+
476
541
  var parseMessage = function parseMessage(m) {
477
542
  var _m$pinned_at, _m$updated_at;
478
543
 
@@ -483,16 +548,19 @@ var ChannelState = /*#__PURE__*/function () {
483
548
  });
484
549
  };
485
550
 
486
- var updatedMessages = this.messages.filter(function (msg) {
487
- return msg.quoted_message_id === message.id;
488
- }).map(parseMessage).map(function (msg) {
489
- return _objectSpread$7(_objectSpread$7({}, msg), {}, {
490
- quoted_message: _objectSpread$7(_objectSpread$7({}, message), {}, {
491
- attachments: []
492
- })
551
+ this.messageSets.forEach(function (set) {
552
+ var updatedMessages = set.messages.filter(function (msg) {
553
+ return msg.quoted_message_id === message.id;
554
+ }).map(parseMessage).map(function (msg) {
555
+ return _objectSpread$7(_objectSpread$7({}, msg), {}, {
556
+ quoted_message: _objectSpread$7(_objectSpread$7({}, message), {}, {
557
+ attachments: []
558
+ })
559
+ });
493
560
  });
561
+
562
+ _this4.addMessagesSorted(updatedMessages, true);
494
563
  });
495
- this.addMessagesSorted(updatedMessages, true);
496
564
  }
497
565
  /**
498
566
  * Updates all instances of given message in channel state
@@ -520,12 +588,16 @@ var ChannelState = /*#__PURE__*/function () {
520
588
  }
521
589
 
522
590
  if (!show_in_channel && !parent_id || show_in_channel) {
523
- var _msgIndex = this.messages.findIndex(function (msg) {
524
- return msg.id === message.id;
525
- });
591
+ var messageSetIndex = this.findMessageSetIndex(message);
592
+
593
+ if (messageSetIndex !== -1) {
594
+ var _msgIndex = this.messageSets[messageSetIndex].messages.findIndex(function (msg) {
595
+ return msg.id === message.id;
596
+ });
526
597
 
527
- if (_msgIndex !== -1) {
528
- this.messages[_msgIndex] = updateFunc(this.messages[_msgIndex]);
598
+ if (_msgIndex !== -1) {
599
+ this.messageSets[messageSetIndex].messages[_msgIndex] = updateFunc(this.messageSets[messageSetIndex].messages[_msgIndex]);
600
+ }
529
601
  }
530
602
  }
531
603
 
@@ -644,12 +716,16 @@ var ChannelState = /*#__PURE__*/function () {
644
716
  this.threads[messageToRemove.parent_id] = threadMessages;
645
717
  isRemoved = removed;
646
718
  } else {
647
- var _this$removeMessageFr3 = this.removeMessageFromArray(this.messages, messageToRemove),
648
- _removed = _this$removeMessageFr3.removed,
649
- messages = _this$removeMessageFr3.result;
719
+ var messageSetIndex = this.findMessageSetIndex(messageToRemove);
720
+
721
+ if (messageSetIndex !== -1) {
722
+ var _this$removeMessageFr3 = this.removeMessageFromArray(this.messageSets[messageSetIndex].messages, messageToRemove),
723
+ _removed = _this$removeMessageFr3.removed,
724
+ messages = _this$removeMessageFr3.result;
650
725
 
651
- this.messages = messages;
652
- isRemoved = _removed;
726
+ this.messageSets[messageSetIndex].messages = messages;
727
+ isRemoved = _removed;
728
+ }
653
729
  }
654
730
 
655
731
  return isRemoved;
@@ -662,10 +738,10 @@ var ChannelState = /*#__PURE__*/function () {
662
738
  *
663
739
  */
664
740
  function filterErrorMessages() {
665
- var filteredMessages = this.messages.filter(function (message) {
741
+ var filteredMessages = this.latestMessages.filter(function (message) {
666
742
  return message.type !== 'error';
667
743
  });
668
- this.messages = filteredMessages;
744
+ this.latestMessages = filteredMessages;
669
745
  }
670
746
  /**
671
747
  * clean - Remove stale data such as users that stayed in typing state for more than 5 seconds
@@ -699,9 +775,250 @@ var ChannelState = /*#__PURE__*/function () {
699
775
  }, {
700
776
  key: "clearMessages",
701
777
  value: function clearMessages() {
702
- this.messages = [];
778
+ this.initMessages();
703
779
  this.pinnedMessages = [];
704
780
  }
781
+ }, {
782
+ key: "initMessages",
783
+ value: function initMessages() {
784
+ this.messageSets = [{
785
+ messages: [],
786
+ isLatest: true,
787
+ isCurrent: true
788
+ }];
789
+ }
790
+ /**
791
+ * loadMessageIntoState - Loads a given message (and messages around it) into the state
792
+ *
793
+ * @param {string} messageId The id of the message, or 'latest' to indicate switching to the latest messages
794
+ * @param {string} parentMessageId The id of the parent message, if we want load a thread reply
795
+ */
796
+
797
+ }, {
798
+ key: "loadMessageIntoState",
799
+ value: function () {
800
+ var _loadMessageIntoState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(messageId, parentMessageId) {
801
+ var _this$threads$parentM;
802
+
803
+ var messageSetIndex, switchedToMessageSet, loadedMessageThread, messageIdToFind;
804
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
805
+ while (1) {
806
+ switch (_context.prev = _context.next) {
807
+ case 0:
808
+ switchedToMessageSet = false;
809
+ loadedMessageThread = false;
810
+ messageIdToFind = parentMessageId || messageId;
811
+
812
+ if (!(messageId === 'latest')) {
813
+ _context.next = 9;
814
+ break;
815
+ }
816
+
817
+ if (!(this.messages === this.latestMessages)) {
818
+ _context.next = 6;
819
+ break;
820
+ }
821
+
822
+ return _context.abrupt("return");
823
+
824
+ case 6:
825
+ messageSetIndex = this.messageSets.findIndex(function (s) {
826
+ return s.isLatest;
827
+ });
828
+ _context.next = 10;
829
+ break;
830
+
831
+ case 9:
832
+ messageSetIndex = this.findMessageSetIndex({
833
+ id: messageIdToFind
834
+ });
835
+
836
+ case 10:
837
+ if (messageSetIndex !== -1) {
838
+ this.switchToMessageSet(messageSetIndex);
839
+ switchedToMessageSet = true;
840
+ }
841
+
842
+ loadedMessageThread = !parentMessageId || !!((_this$threads$parentM = this.threads[parentMessageId]) !== null && _this$threads$parentM !== void 0 && _this$threads$parentM.find(function (m) {
843
+ return m.id === messageId;
844
+ }));
845
+
846
+ if (!(switchedToMessageSet && loadedMessageThread)) {
847
+ _context.next = 14;
848
+ break;
849
+ }
850
+
851
+ return _context.abrupt("return");
852
+
853
+ case 14:
854
+ if (switchedToMessageSet) {
855
+ _context.next = 17;
856
+ break;
857
+ }
858
+
859
+ _context.next = 17;
860
+ return this._channel.query({
861
+ messages: {
862
+ id_around: messageIdToFind,
863
+ limit: 25
864
+ }
865
+ }, 'new');
866
+
867
+ case 17:
868
+ if (!(!loadedMessageThread && parentMessageId)) {
869
+ _context.next = 20;
870
+ break;
871
+ }
872
+
873
+ _context.next = 20;
874
+ return this._channel.getReplies(parentMessageId, {
875
+ id_around: messageId,
876
+ limit: 25
877
+ });
878
+
879
+ case 20:
880
+ messageSetIndex = this.findMessageSetIndex({
881
+ id: messageIdToFind
882
+ });
883
+
884
+ if (messageSetIndex !== -1) {
885
+ this.switchToMessageSet(messageSetIndex);
886
+ }
887
+
888
+ case 22:
889
+ case "end":
890
+ return _context.stop();
891
+ }
892
+ }
893
+ }, _callee, this);
894
+ }));
895
+
896
+ function loadMessageIntoState(_x, _x2) {
897
+ return _loadMessageIntoState.apply(this, arguments);
898
+ }
899
+
900
+ return loadMessageIntoState;
901
+ }()
902
+ }, {
903
+ key: "switchToMessageSet",
904
+ value: function switchToMessageSet(index) {
905
+ var currentMessages = this.messageSets.find(function (s) {
906
+ return s.isCurrent;
907
+ });
908
+
909
+ if (!currentMessages) {
910
+ return;
911
+ }
912
+
913
+ currentMessages.isCurrent = false;
914
+ this.messageSets[index].isCurrent = true;
915
+ }
916
+ }, {
917
+ key: "areMessageSetsOverlap",
918
+ value: function areMessageSetsOverlap(messages1, messages2) {
919
+ return messages1.some(function (m1) {
920
+ return messages2.find(function (m2) {
921
+ return m1.id === m2.id;
922
+ });
923
+ });
924
+ }
925
+ }, {
926
+ key: "findMessageSetIndex",
927
+ value: function findMessageSetIndex(message) {
928
+ return this.messageSets.findIndex(function (set) {
929
+ return !!set.messages.find(function (m) {
930
+ return m.id === message.id;
931
+ });
932
+ });
933
+ }
934
+ }, {
935
+ key: "findTargetMessageSet",
936
+ value: function findTargetMessageSet(newMessages) {
937
+ var _this5 = this;
938
+
939
+ var addIfDoesNotExist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
940
+ var messageSetToAddToIfDoesNotExist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'current';
941
+ var messagesToAdd = newMessages;
942
+ var targetMessageSetIndex;
943
+
944
+ if (addIfDoesNotExist) {
945
+ var overlappingMessageSetIndices = this.messageSets.map(function (_, i) {
946
+ return i;
947
+ }).filter(function (i) {
948
+ return _this5.areMessageSetsOverlap(_this5.messageSets[i].messages, newMessages);
949
+ });
950
+
951
+ switch (messageSetToAddToIfDoesNotExist) {
952
+ case 'new':
953
+ if (overlappingMessageSetIndices.length > 0) {
954
+ targetMessageSetIndex = overlappingMessageSetIndices[0]; // No new message set is created if newMessages only contains thread replies
955
+ } else if (newMessages.some(function (m) {
956
+ return !m.parent_id;
957
+ })) {
958
+ this.messageSets.push({
959
+ messages: [],
960
+ isCurrent: false,
961
+ isLatest: false
962
+ });
963
+ targetMessageSetIndex = this.messageSets.length - 1;
964
+ }
965
+
966
+ break;
967
+
968
+ case 'current':
969
+ targetMessageSetIndex = this.messageSets.findIndex(function (s) {
970
+ return s.isCurrent;
971
+ });
972
+ break;
973
+
974
+ case 'latest':
975
+ targetMessageSetIndex = this.messageSets.findIndex(function (s) {
976
+ return s.isLatest;
977
+ });
978
+ break;
979
+
980
+ default:
981
+ targetMessageSetIndex = -1;
982
+ } // when merging the target set will be the first one from the overlapping message sets
983
+
984
+
985
+ var mergeTargetMessageSetIndex = overlappingMessageSetIndices.splice(0, 1)[0];
986
+
987
+ var mergeSourceMessageSetIndices = _toConsumableArray(overlappingMessageSetIndices);
988
+
989
+ if (mergeTargetMessageSetIndex !== undefined && mergeTargetMessageSetIndex !== targetMessageSetIndex) {
990
+ mergeSourceMessageSetIndices.push(targetMessageSetIndex);
991
+ } // merge message sets
992
+
993
+
994
+ if (mergeSourceMessageSetIndices.length > 0) {
995
+ var target = this.messageSets[mergeTargetMessageSetIndex];
996
+ var sources = this.messageSets.filter(function (_, i) {
997
+ return mergeSourceMessageSetIndices.indexOf(i) !== -1;
998
+ });
999
+ sources.forEach(function (messageSet) {
1000
+ target.isLatest = target.isLatest || messageSet.isLatest;
1001
+ target.isCurrent = target.isCurrent || messageSet.isCurrent;
1002
+ messagesToAdd = [].concat(_toConsumableArray(messagesToAdd), _toConsumableArray(messageSet.messages));
1003
+ });
1004
+ sources.forEach(function (s) {
1005
+ return _this5.messageSets.splice(_this5.messageSets.indexOf(s), 1);
1006
+ });
1007
+ var overlappingMessageSetIndex = this.messageSets.findIndex(function (s) {
1008
+ return _this5.areMessageSetsOverlap(s.messages, newMessages);
1009
+ });
1010
+ targetMessageSetIndex = overlappingMessageSetIndex;
1011
+ }
1012
+ } else {
1013
+ // assumes that all new messages belong to the same set
1014
+ targetMessageSetIndex = this.findMessageSetIndex(newMessages[0]);
1015
+ }
1016
+
1017
+ return {
1018
+ targetMessageSetIndex: targetMessageSetIndex,
1019
+ messagesToAdd: messagesToAdd
1020
+ };
1021
+ }
705
1022
  }]);
706
1023
 
707
1024
  return ChannelState;
@@ -1064,7 +1381,7 @@ var Channel = /*#__PURE__*/function () {
1064
1381
  presence: false
1065
1382
  };
1066
1383
  _context.next = 3;
1067
- return _this.query(options);
1384
+ return _this.query(options, 'latest');
1068
1385
 
1069
1386
  case 3:
1070
1387
  return _context.abrupt("return", _context.sent);
@@ -2362,14 +2679,14 @@ var Channel = /*#__PURE__*/function () {
2362
2679
  value: function lastMessage() {
2363
2680
  // get last 5 messages, sort, return the latest
2364
2681
  // get a slice of the last 5
2365
- var min = this.state.messages.length - 5;
2682
+ var min = this.state.latestMessages.length - 5;
2366
2683
 
2367
2684
  if (min < 0) {
2368
2685
  min = 0;
2369
2686
  }
2370
2687
 
2371
- var max = this.state.messages.length + 1;
2372
- var messageSlice = this.state.messages.slice(min, max); // sort by pk desc
2688
+ var max = this.state.latestMessages.length + 1;
2689
+ var messageSlice = this.state.latestMessages.slice(min, max); // sort by pk desc
2373
2690
 
2374
2691
  messageSlice.sort(function (a, b) {
2375
2692
  return b.created_at.getTime() - a.created_at.getTime();
@@ -2478,7 +2795,7 @@ var Channel = /*#__PURE__*/function () {
2478
2795
 
2479
2796
  combined = _objectSpread$5(_objectSpread$5({}, defaultOptions), options);
2480
2797
  _context27.next = 7;
2481
- return this.query(combined);
2798
+ return this.query(combined, 'latest');
2482
2799
 
2483
2800
  case 7:
2484
2801
  state = _context27.sent;
@@ -2552,7 +2869,7 @@ var Channel = /*#__PURE__*/function () {
2552
2869
  * getReplies - List the message replies for a parent message
2553
2870
  *
2554
2871
  * @param {string} parent_id The message parent id, ie the top of the thread
2555
- * @param {PaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
2872
+ * @param {MessagePaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
2556
2873
  *
2557
2874
  * @return {Promise<GetRepliesAPIResponse<StreamChatGenerics>>} A response with a list of messages
2558
2875
  */
@@ -2713,8 +3030,8 @@ var Channel = /*#__PURE__*/function () {
2713
3030
  if (!lastRead) return this.state.unreadCount;
2714
3031
  var count = 0;
2715
3032
 
2716
- for (var i = 0; i < this.state.messages.length; i += 1) {
2717
- var message = this.state.messages[i];
3033
+ for (var i = 0; i < this.state.latestMessages.length; i += 1) {
3034
+ var message = this.state.latestMessages[i];
2718
3035
 
2719
3036
  if (message.created_at > lastRead && this._countMessageAsUnread(message)) {
2720
3037
  count++;
@@ -2724,7 +3041,7 @@ var Channel = /*#__PURE__*/function () {
2724
3041
  return count;
2725
3042
  }
2726
3043
  /**
2727
- * countUnread - Count the number of unread messages mentioning the current user
3044
+ * countUnreadMentions - Count the number of unread messages mentioning the current user
2728
3045
  *
2729
3046
  * @return {number} Unread mentions count
2730
3047
  */
@@ -2736,10 +3053,10 @@ var Channel = /*#__PURE__*/function () {
2736
3053
  var userID = this.getClient().userID;
2737
3054
  var count = 0;
2738
3055
 
2739
- for (var i = 0; i < this.state.messages.length; i += 1) {
3056
+ for (var i = 0; i < this.state.latestMessages.length; i += 1) {
2740
3057
  var _message$mentioned_us;
2741
3058
 
2742
- var message = this.state.messages[i];
3059
+ var message = this.state.latestMessages[i];
2743
3060
 
2744
3061
  if (this._countMessageAsUnread(message) && (!lastRead || message.created_at > lastRead) && (_message$mentioned_us = message.mentioned_users) !== null && _message$mentioned_us !== void 0 && _message$mentioned_us.some(function (user) {
2745
3062
  return user.id === userID;
@@ -2763,33 +3080,40 @@ var Channel = /*#__PURE__*/function () {
2763
3080
  * query - Query the API, get messages, members or other channel fields
2764
3081
  *
2765
3082
  * @param {ChannelQueryOptions<StreamChatGenerics>} options The query options
3083
+ * @param {MessageSetType} messageSetToAddToIfDoesNotExist It's possible to load disjunct sets of a channel's messages into state, use `current` to load the initial channel state or if you want to extend the currently displayed messages, use `latest` if you want to load/extend the latest messages, `new` is used for loading a specific message and it's surroundings
2766
3084
  *
2767
3085
  * @return {Promise<ChannelAPIResponse<StreamChatGenerics>>} Returns a query response
2768
3086
  */
2769
3087
  function () {
2770
3088
  var _query = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee31(options) {
2771
- var queryURL, state, membersStr, tempChannelCid;
3089
+ var messageSetToAddToIfDoesNotExist,
3090
+ queryURL,
3091
+ state,
3092
+ membersStr,
3093
+ tempChannelCid,
3094
+ _args31 = arguments;
2772
3095
  return _regeneratorRuntime.wrap(function _callee31$(_context31) {
2773
3096
  while (1) {
2774
3097
  switch (_context31.prev = _context31.next) {
2775
3098
  case 0:
2776
- _context31.next = 2;
3099
+ messageSetToAddToIfDoesNotExist = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : 'current';
3100
+ _context31.next = 3;
2777
3101
  return this.getClient().wsPromise;
2778
3102
 
2779
- case 2:
3103
+ case 3:
2780
3104
  queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(this.type);
2781
3105
 
2782
3106
  if (this.id) {
2783
3107
  queryURL += "/".concat(this.id);
2784
3108
  }
2785
3109
 
2786
- _context31.next = 6;
3110
+ _context31.next = 7;
2787
3111
  return this.getClient().post(queryURL + '/query', _objectSpread$5({
2788
3112
  data: this._data,
2789
3113
  state: true
2790
3114
  }, options));
2791
3115
 
2792
- case 6:
3116
+ case 7:
2793
3117
  state = _context31.sent;
2794
3118
 
2795
3119
  // update the channel id if it was missing
@@ -2818,11 +3142,11 @@ var Channel = /*#__PURE__*/function () {
2818
3142
  this.getClient()._addChannelConfig(state); // add any messages to our channel state
2819
3143
 
2820
3144
 
2821
- this._initializeState(state);
3145
+ this._initializeState(state, messageSetToAddToIfDoesNotExist);
2822
3146
 
2823
3147
  return _context31.abrupt("return", state);
2824
3148
 
2825
- case 11:
3149
+ case 12:
2826
3150
  case "end":
2827
3151
  return _context31.stop();
2828
3152
  }
@@ -3372,6 +3696,8 @@ var Channel = /*#__PURE__*/function () {
3372
3696
  }, {
3373
3697
  key: "_initializeState",
3374
3698
  value: function _initializeState(state) {
3699
+ var messageSetToAddToIfDoesNotExist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'latest';
3700
+
3375
3701
  var _this$getClient2 = this.getClient(),
3376
3702
  clientState = _this$getClient2.state,
3377
3703
  user = _this$getClient2.user,
@@ -3401,10 +3727,10 @@ var Channel = /*#__PURE__*/function () {
3401
3727
  var messages = state.messages || [];
3402
3728
 
3403
3729
  if (!this.state.messages) {
3404
- this.state.messages = [];
3730
+ this.state.initMessages();
3405
3731
  }
3406
3732
 
3407
- this.state.addMessagesSorted(messages, false, true);
3733
+ this.state.addMessagesSorted(messages, false, true, true, messageSetToAddToIfDoesNotExist);
3408
3734
 
3409
3735
  if (!this.state.pinnedMessages) {
3410
3736
  this.state.pinnedMessages = [];
@@ -4826,7 +5152,7 @@ function TokenManager(secret) {
4826
5152
  _defineProperty(this, "loadToken", function () {
4827
5153
  // eslint-disable-next-line no-async-promise-executor
4828
5154
  _this.loadTokenPromise = new Promise( /*#__PURE__*/function () {
4829
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve) {
5155
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve, reject) {
4830
5156
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
4831
5157
  while (1) {
4832
5158
  switch (_context2.prev = _context2.next) {
@@ -4840,26 +5166,36 @@ function TokenManager(secret) {
4840
5166
 
4841
5167
  case 2:
4842
5168
  if (!(_this.tokenProvider && typeof _this.tokenProvider !== 'string')) {
4843
- _context2.next = 7;
5169
+ _context2.next = 13;
4844
5170
  break;
4845
5171
  }
4846
5172
 
4847
- _context2.next = 5;
5173
+ _context2.prev = 3;
5174
+ _context2.next = 6;
4848
5175
  return _this.tokenProvider();
4849
5176
 
4850
- case 5:
5177
+ case 6:
4851
5178
  _this.token = _context2.sent;
5179
+ _context2.next = 12;
5180
+ break;
5181
+
5182
+ case 9:
5183
+ _context2.prev = 9;
5184
+ _context2.t0 = _context2["catch"](3);
5185
+ return _context2.abrupt("return", reject(new Error("Call to tokenProvider failed with message: ".concat(_context2.t0))));
5186
+
5187
+ case 12:
4852
5188
  resolve(_this.token);
4853
5189
 
4854
- case 7:
5190
+ case 13:
4855
5191
  case "end":
4856
5192
  return _context2.stop();
4857
5193
  }
4858
5194
  }
4859
- }, _callee2);
5195
+ }, _callee2, null, [[3, 9]]);
4860
5196
  }));
4861
5197
 
4862
- return function (_x3) {
5198
+ return function (_x3, _x4) {
4863
5199
  return _ref2.apply(this, arguments);
4864
5200
  };
4865
5201
  }());
@@ -6369,10 +6705,10 @@ var StreamChat = /*#__PURE__*/function () {
6369
6705
  key: "updateAppSettings",
6370
6706
  value:
6371
6707
  /**
6372
- * updateAppSettings - updates application settings
6373
- *
6374
- * @param {AppSettings} options App settings.
6375
- * IE: {
6708
+ * updateAppSettings - updates application settings
6709
+ *
6710
+ * @param {AppSettings} options App settings.
6711
+ * IE: {
6376
6712
  "apn_config": {
6377
6713
  "auth_type": "token",
6378
6714
  "auth_key": fs.readFileSync(
@@ -6392,7 +6728,7 @@ var StreamChat = /*#__PURE__*/function () {
6392
6728
  },
6393
6729
  "webhook_url": "https://acme.com/my/awesome/webhook/"
6394
6730
  }
6395
- */
6731
+ */
6396
6732
  function () {
6397
6733
  var _updateAppSettings = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(options) {
6398
6734
  var _options$apn_config;
@@ -6583,17 +6919,19 @@ var StreamChat = /*#__PURE__*/function () {
6583
6919
  return getAppSettings;
6584
6920
  }()
6585
6921
  /**
6586
- * testPushSettings - Tests the push settings for a user with a random chat message and the configured push templates
6587
- *
6588
- * @param {string} userID User ID. If user has no devices, it will error
6589
- * @param {TestPushDataInput} [data] Overrides for push templates/message used
6590
- * IE: {
6591
- messageID: 'id-of-message',//will error if message does not exist
6592
- apnTemplate: '{}', //if app doesn't have apn configured it will error
6593
- firebaseTemplate: '{}', //if app doesn't have firebase configured it will error
6594
- firebaseDataTemplate: '{}', //if app doesn't have firebase configured it will error
6595
- skipDevices: true, // skip config/device checks and sending to real devices
6596
- }
6922
+ * testPushSettings - Tests the push settings for a user with a random chat message and the configured push templates
6923
+ *
6924
+ * @param {string} userID User ID. If user has no devices, it will error
6925
+ * @param {TestPushDataInput} [data] Overrides for push templates/message used
6926
+ * IE: {
6927
+ messageID: 'id-of-message', // will error if message does not exist
6928
+ apnTemplate: '{}', // if app doesn't have apn configured it will error
6929
+ firebaseTemplate: '{}', // if app doesn't have firebase configured it will error
6930
+ firebaseDataTemplate: '{}', // if app doesn't have firebase configured it will error
6931
+ skipDevices: true, // skip config/device checks and sending to real devices
6932
+ pushProviderName: 'staging' // one of your configured push providers
6933
+ pushProviderType: 'apn' // one of supported provider types
6934
+ }
6597
6935
  */
6598
6936
 
6599
6937
  }, {
@@ -6608,7 +6946,7 @@ var StreamChat = /*#__PURE__*/function () {
6608
6946
  case 0:
6609
6947
  data = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : {};
6610
6948
  _context12.next = 3;
6611
- return this.post(this.baseURL + '/check_push', _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
6949
+ return this.post(this.baseURL + '/check_push', _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
6612
6950
  user_id: userID
6613
6951
  }, data.messageID ? {
6614
6952
  message_id: data.messageID
@@ -6620,6 +6958,10 @@ var StreamChat = /*#__PURE__*/function () {
6620
6958
  firebase_data_template: data.firebaseDataTemplate
6621
6959
  } : {}), data.skipDevices ? {
6622
6960
  skip_devices: true
6961
+ } : {}), data.pushProviderName ? {
6962
+ push_provider_name: data.pushProviderName
6963
+ } : {}), data.pushProviderType ? {
6964
+ push_provider_type: data.pushProviderType
6623
6965
  } : {}));
6624
6966
 
6625
6967
  case 3:
@@ -6643,11 +6985,11 @@ var StreamChat = /*#__PURE__*/function () {
6643
6985
  * testSQSSettings - Tests that the given or configured SQS configuration is valid
6644
6986
  *
6645
6987
  * @param {TestSQSDataInput} [data] Overrides SQS settings for testing if needed
6646
- * IE: {
6647
- sqs_key: 'auth_key',
6648
- sqs_secret: 'auth_secret',
6649
- sqs_url: 'url_to_queue',
6650
- }
6988
+ * IE: {
6989
+ sqs_key: 'auth_key',
6990
+ sqs_secret: 'auth_secret',
6991
+ sqs_url: 'url_to_queue',
6992
+ }
6651
6993
  */
6652
6994
 
6653
6995
  }, {
@@ -7444,11 +7786,11 @@ var StreamChat = /*#__PURE__*/function () {
7444
7786
  c.initialized = true;
7445
7787
 
7446
7788
  if (skipInitialization === undefined) {
7447
- c._initializeState(_channelState);
7789
+ c._initializeState(_channelState, 'latest');
7448
7790
  } else if (!skipInitialization.includes(_channelState.channel.id)) {
7449
7791
  c.state.clearMessages();
7450
7792
 
7451
- c._initializeState(_channelState);
7793
+ c._initializeState(_channelState, 'latest');
7452
7794
  }
7453
7795
 
7454
7796
  channels.push(c);
@@ -7585,23 +7927,26 @@ var StreamChat = /*#__PURE__*/function () {
7585
7927
  * @param {string} id the device id
7586
7928
  * @param {PushProvider} push_provider the push provider
7587
7929
  * @param {string} [userID] the user id (defaults to current user)
7930
+ * @param {string} [push_provider_name] user provided push provider name for multi bundle support
7588
7931
  *
7589
7932
  */
7590
7933
 
7591
7934
  }, {
7592
7935
  key: "addDevice",
7593
7936
  value: function () {
7594
- var _addDevice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(id, push_provider, userID) {
7937
+ var _addDevice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(id, push_provider, userID, push_provider_name) {
7595
7938
  return _regeneratorRuntime.wrap(function _callee21$(_context21) {
7596
7939
  while (1) {
7597
7940
  switch (_context21.prev = _context21.next) {
7598
7941
  case 0:
7599
7942
  _context21.next = 2;
7600
- return this.post(this.baseURL + '/devices', _objectSpread({
7943
+ return this.post(this.baseURL + '/devices', _objectSpread(_objectSpread({
7601
7944
  id: id,
7602
7945
  push_provider: push_provider
7603
7946
  }, userID != null ? {
7604
7947
  user_id: userID
7948
+ } : {}), push_provider_name != null ? {
7949
+ push_provider_name: push_provider_name
7605
7950
  } : {}));
7606
7951
 
7607
7952
  case 2:
@@ -7615,7 +7960,7 @@ var StreamChat = /*#__PURE__*/function () {
7615
7960
  }, _callee21, this);
7616
7961
  }));
7617
7962
 
7618
- function addDevice(_x20, _x21, _x22) {
7963
+ function addDevice(_x20, _x21, _x22, _x23) {
7619
7964
  return _addDevice.apply(this, arguments);
7620
7965
  }
7621
7966
 
@@ -7653,7 +7998,7 @@ var StreamChat = /*#__PURE__*/function () {
7653
7998
  }, _callee22, this);
7654
7999
  }));
7655
8000
 
7656
- function getDevices(_x23) {
8001
+ function getDevices(_x24) {
7657
8002
  return _getDevices.apply(this, arguments);
7658
8003
  }
7659
8004
 
@@ -7693,7 +8038,7 @@ var StreamChat = /*#__PURE__*/function () {
7693
8038
  }, _callee23, this);
7694
8039
  }));
7695
8040
 
7696
- function removeDevice(_x24, _x25) {
8041
+ function removeDevice(_x25, _x26) {
7697
8042
  return _removeDevice.apply(this, arguments);
7698
8043
  }
7699
8044
 
@@ -7734,7 +8079,7 @@ var StreamChat = /*#__PURE__*/function () {
7734
8079
  }, _callee24, this);
7735
8080
  }));
7736
8081
 
7737
- function getRateLimits(_x26) {
8082
+ function getRateLimits(_x27) {
7738
8083
  return _getRateLimits.apply(this, arguments);
7739
8084
  }
7740
8085
 
@@ -7835,7 +8180,7 @@ var StreamChat = /*#__PURE__*/function () {
7835
8180
  }, _callee25, this);
7836
8181
  }));
7837
8182
 
7838
- function partialUpdateUser(_x27) {
8183
+ function partialUpdateUser(_x28) {
7839
8184
  return _partialUpdateUser.apply(this, arguments);
7840
8185
  }
7841
8186
 
@@ -7921,7 +8266,7 @@ var StreamChat = /*#__PURE__*/function () {
7921
8266
  }, _callee26, this, [[2, 13, 16, 19]]);
7922
8267
  }));
7923
8268
 
7924
- function upsertUsers(_x28) {
8269
+ function upsertUsers(_x29) {
7925
8270
  return _upsertUsers.apply(this, arguments);
7926
8271
  }
7927
8272
 
@@ -8034,7 +8379,7 @@ var StreamChat = /*#__PURE__*/function () {
8034
8379
  }, _callee27, this, [[1, 11, 14, 17]]);
8035
8380
  }));
8036
8381
 
8037
- function partialUpdateUsers(_x29) {
8382
+ function partialUpdateUsers(_x30) {
8038
8383
  return _partialUpdateUsers.apply(this, arguments);
8039
8384
  }
8040
8385
 
@@ -8062,7 +8407,7 @@ var StreamChat = /*#__PURE__*/function () {
8062
8407
  }, _callee28, this);
8063
8408
  }));
8064
8409
 
8065
- function deleteUser(_x30, _x31) {
8410
+ function deleteUser(_x31, _x32) {
8066
8411
  return _deleteUser.apply(this, arguments);
8067
8412
  }
8068
8413
 
@@ -8090,7 +8435,7 @@ var StreamChat = /*#__PURE__*/function () {
8090
8435
  }, _callee29, this);
8091
8436
  }));
8092
8437
 
8093
- function reactivateUser(_x32, _x33) {
8438
+ function reactivateUser(_x33, _x34) {
8094
8439
  return _reactivateUser.apply(this, arguments);
8095
8440
  }
8096
8441
 
@@ -8118,7 +8463,7 @@ var StreamChat = /*#__PURE__*/function () {
8118
8463
  }, _callee30, this);
8119
8464
  }));
8120
8465
 
8121
- function deactivateUser(_x34, _x35) {
8466
+ function deactivateUser(_x35, _x36) {
8122
8467
  return _deactivateUser.apply(this, arguments);
8123
8468
  }
8124
8469
 
@@ -8146,7 +8491,7 @@ var StreamChat = /*#__PURE__*/function () {
8146
8491
  }, _callee31, this);
8147
8492
  }));
8148
8493
 
8149
- function exportUser(_x36, _x37) {
8494
+ function exportUser(_x37, _x38) {
8150
8495
  return _exportUser.apply(this, arguments);
8151
8496
  }
8152
8497
 
@@ -8183,7 +8528,7 @@ var StreamChat = /*#__PURE__*/function () {
8183
8528
  }, _callee32, this);
8184
8529
  }));
8185
8530
 
8186
- function banUser(_x38, _x39) {
8531
+ function banUser(_x39, _x40) {
8187
8532
  return _banUser.apply(this, arguments);
8188
8533
  }
8189
8534
 
@@ -8220,7 +8565,7 @@ var StreamChat = /*#__PURE__*/function () {
8220
8565
  }, _callee33, this);
8221
8566
  }));
8222
8567
 
8223
- function unbanUser(_x40, _x41) {
8568
+ function unbanUser(_x41, _x42) {
8224
8569
  return _unbanUser.apply(this, arguments);
8225
8570
  }
8226
8571
 
@@ -8257,7 +8602,7 @@ var StreamChat = /*#__PURE__*/function () {
8257
8602
  }, _callee34, this);
8258
8603
  }));
8259
8604
 
8260
- function shadowBan(_x42, _x43) {
8605
+ function shadowBan(_x43, _x44) {
8261
8606
  return _shadowBan.apply(this, arguments);
8262
8607
  }
8263
8608
 
@@ -8294,7 +8639,7 @@ var StreamChat = /*#__PURE__*/function () {
8294
8639
  }, _callee35, this);
8295
8640
  }));
8296
8641
 
8297
- function removeShadowBan(_x44, _x45) {
8642
+ function removeShadowBan(_x45, _x46) {
8298
8643
  return _removeShadowBan.apply(this, arguments);
8299
8644
  }
8300
8645
 
@@ -8337,7 +8682,7 @@ var StreamChat = /*#__PURE__*/function () {
8337
8682
  }, _callee36, this);
8338
8683
  }));
8339
8684
 
8340
- function muteUser(_x46, _x47) {
8685
+ function muteUser(_x47, _x48) {
8341
8686
  return _muteUser.apply(this, arguments);
8342
8687
  }
8343
8688
 
@@ -8376,7 +8721,7 @@ var StreamChat = /*#__PURE__*/function () {
8376
8721
  }, _callee37, this);
8377
8722
  }));
8378
8723
 
8379
- function unmuteUser(_x48, _x49) {
8724
+ function unmuteUser(_x49, _x50) {
8380
8725
  return _unmuteUser.apply(this, arguments);
8381
8726
  }
8382
8727
 
@@ -8435,7 +8780,7 @@ var StreamChat = /*#__PURE__*/function () {
8435
8780
  }, _callee38, this);
8436
8781
  }));
8437
8782
 
8438
- function flagMessage(_x50) {
8783
+ function flagMessage(_x51) {
8439
8784
  return _flagMessage.apply(this, arguments);
8440
8785
  }
8441
8786
 
@@ -8475,7 +8820,7 @@ var StreamChat = /*#__PURE__*/function () {
8475
8820
  }, _callee39, this);
8476
8821
  }));
8477
8822
 
8478
- function flagUser(_x51) {
8823
+ function flagUser(_x52) {
8479
8824
  return _flagUser.apply(this, arguments);
8480
8825
  }
8481
8826
 
@@ -8515,7 +8860,7 @@ var StreamChat = /*#__PURE__*/function () {
8515
8860
  }, _callee40, this);
8516
8861
  }));
8517
8862
 
8518
- function unflagMessage(_x52) {
8863
+ function unflagMessage(_x53) {
8519
8864
  return _unflagMessage.apply(this, arguments);
8520
8865
  }
8521
8866
 
@@ -8555,7 +8900,7 @@ var StreamChat = /*#__PURE__*/function () {
8555
8900
  }, _callee41, this);
8556
8901
  }));
8557
8902
 
8558
- function unflagUser(_x53) {
8903
+ function unflagUser(_x54) {
8559
8904
  return _unflagUser.apply(this, arguments);
8560
8905
  }
8561
8906
 
@@ -8701,7 +9046,7 @@ var StreamChat = /*#__PURE__*/function () {
8701
9046
  }, _callee44, this);
8702
9047
  }));
8703
9048
 
8704
- function _reviewFlagReport(_x54, _x55) {
9049
+ function _reviewFlagReport(_x55, _x56) {
8705
9050
  return _reviewFlagReport2.apply(this, arguments);
8706
9051
  }
8707
9052
 
@@ -8747,7 +9092,7 @@ var StreamChat = /*#__PURE__*/function () {
8747
9092
  }, _callee45, this);
8748
9093
  }));
8749
9094
 
8750
- function _unblockMessage(_x56) {
9095
+ function _unblockMessage(_x57) {
8751
9096
  return _unblockMessage2.apply(this, arguments);
8752
9097
  }
8753
9098
 
@@ -8886,7 +9231,7 @@ var StreamChat = /*#__PURE__*/function () {
8886
9231
  }, _callee47, this);
8887
9232
  }));
8888
9233
 
8889
- function translateMessage(_x57, _x58) {
9234
+ function translateMessage(_x58, _x59) {
8890
9235
  return _translateMessage.apply(this, arguments);
8891
9236
  }
8892
9237
 
@@ -9048,7 +9393,7 @@ var StreamChat = /*#__PURE__*/function () {
9048
9393
  }, _callee48, this);
9049
9394
  }));
9050
9395
 
9051
- function updateMessage(_x59, _x60, _x61) {
9396
+ function updateMessage(_x60, _x61, _x62) {
9052
9397
  return _updateMessage.apply(this, arguments);
9053
9398
  }
9054
9399
 
@@ -9109,7 +9454,7 @@ var StreamChat = /*#__PURE__*/function () {
9109
9454
  }, _callee49, this);
9110
9455
  }));
9111
9456
 
9112
- function partialUpdateMessage(_x62, _x63, _x64, _x65) {
9457
+ function partialUpdateMessage(_x63, _x64, _x65, _x66) {
9113
9458
  return _partialUpdateMessage.apply(this, arguments);
9114
9459
  }
9115
9460
 
@@ -9146,7 +9491,7 @@ var StreamChat = /*#__PURE__*/function () {
9146
9491
  }, _callee50, this);
9147
9492
  }));
9148
9493
 
9149
- function deleteMessage(_x66, _x67) {
9494
+ function deleteMessage(_x67, _x68) {
9150
9495
  return _deleteMessage.apply(this, arguments);
9151
9496
  }
9152
9497
 
@@ -9174,7 +9519,7 @@ var StreamChat = /*#__PURE__*/function () {
9174
9519
  }, _callee51, this);
9175
9520
  }));
9176
9521
 
9177
- function getMessage(_x68) {
9522
+ function getMessage(_x69) {
9178
9523
  return _getMessage.apply(this, arguments);
9179
9524
  }
9180
9525
 
@@ -9183,7 +9528,7 @@ var StreamChat = /*#__PURE__*/function () {
9183
9528
  }, {
9184
9529
  key: "getUserAgent",
9185
9530
  value: function getUserAgent() {
9186
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "6.1.0");
9531
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "6.4.0");
9187
9532
  }
9188
9533
  }, {
9189
9534
  key: "setUserAgent",
@@ -9399,7 +9744,7 @@ var StreamChat = /*#__PURE__*/function () {
9399
9744
  }, _callee52, this);
9400
9745
  }));
9401
9746
 
9402
- function sendUserCustomEvent(_x69, _x70) {
9747
+ function sendUserCustomEvent(_x70, _x71) {
9403
9748
  return _sendUserCustomEvent.apply(this, arguments);
9404
9749
  }
9405
9750
 
@@ -9492,7 +9837,7 @@ var StreamChat = /*#__PURE__*/function () {
9492
9837
  }, _callee53, this);
9493
9838
  }));
9494
9839
 
9495
- function createSegment(_x71) {
9840
+ function createSegment(_x72) {
9496
9841
  return _createSegment.apply(this, arguments);
9497
9842
  }
9498
9843
 
@@ -9532,7 +9877,7 @@ var StreamChat = /*#__PURE__*/function () {
9532
9877
  }, _callee54, this);
9533
9878
  }));
9534
9879
 
9535
- function getSegment(_x72) {
9880
+ function getSegment(_x73) {
9536
9881
  return _getSegment.apply(this, arguments);
9537
9882
  }
9538
9883
 
@@ -9571,7 +9916,7 @@ var StreamChat = /*#__PURE__*/function () {
9571
9916
  }, _callee55, this);
9572
9917
  }));
9573
9918
 
9574
- function listSegments(_x73) {
9919
+ function listSegments(_x74) {
9575
9920
  return _listSegments.apply(this, arguments);
9576
9921
  }
9577
9922
 
@@ -9614,7 +9959,7 @@ var StreamChat = /*#__PURE__*/function () {
9614
9959
  }, _callee56, this);
9615
9960
  }));
9616
9961
 
9617
- function updateSegment(_x74, _x75) {
9962
+ function updateSegment(_x75, _x76) {
9618
9963
  return _updateSegment.apply(this, arguments);
9619
9964
  }
9620
9965
 
@@ -9646,7 +9991,7 @@ var StreamChat = /*#__PURE__*/function () {
9646
9991
  }, _callee57, this);
9647
9992
  }));
9648
9993
 
9649
- function deleteSegment(_x76) {
9994
+ function deleteSegment(_x77) {
9650
9995
  return _deleteSegment.apply(this, arguments);
9651
9996
  }
9652
9997
 
@@ -9688,7 +10033,7 @@ var StreamChat = /*#__PURE__*/function () {
9688
10033
  }, _callee58, this);
9689
10034
  }));
9690
10035
 
9691
- function createCampaign(_x77) {
10036
+ function createCampaign(_x78) {
9692
10037
  return _createCampaign.apply(this, arguments);
9693
10038
  }
9694
10039
 
@@ -9728,7 +10073,7 @@ var StreamChat = /*#__PURE__*/function () {
9728
10073
  }, _callee59, this);
9729
10074
  }));
9730
10075
 
9731
- function getCampaign(_x78) {
10076
+ function getCampaign(_x79) {
9732
10077
  return _getCampaign.apply(this, arguments);
9733
10078
  }
9734
10079
 
@@ -9767,7 +10112,7 @@ var StreamChat = /*#__PURE__*/function () {
9767
10112
  }, _callee60, this);
9768
10113
  }));
9769
10114
 
9770
- function listCampaigns(_x79) {
10115
+ function listCampaigns(_x80) {
9771
10116
  return _listCampaigns.apply(this, arguments);
9772
10117
  }
9773
10118
 
@@ -9810,7 +10155,7 @@ var StreamChat = /*#__PURE__*/function () {
9810
10155
  }, _callee61, this);
9811
10156
  }));
9812
10157
 
9813
- function updateCampaign(_x80, _x81) {
10158
+ function updateCampaign(_x81, _x82) {
9814
10159
  return _updateCampaign.apply(this, arguments);
9815
10160
  }
9816
10161
 
@@ -9842,7 +10187,7 @@ var StreamChat = /*#__PURE__*/function () {
9842
10187
  }, _callee62, this);
9843
10188
  }));
9844
10189
 
9845
- function deleteCampaign(_x82) {
10190
+ function deleteCampaign(_x83) {
9846
10191
  return _deleteCampaign.apply(this, arguments);
9847
10192
  }
9848
10193
 
@@ -9886,7 +10231,7 @@ var StreamChat = /*#__PURE__*/function () {
9886
10231
  }, _callee63, this);
9887
10232
  }));
9888
10233
 
9889
- function scheduleCampaign(_x83, _x84) {
10234
+ function scheduleCampaign(_x84, _x85) {
9890
10235
  return _scheduleCampaign.apply(this, arguments);
9891
10236
  }
9892
10237
 
@@ -9926,7 +10271,7 @@ var StreamChat = /*#__PURE__*/function () {
9926
10271
  }, _callee64, this);
9927
10272
  }));
9928
10273
 
9929
- function stopCampaign(_x85) {
10274
+ function stopCampaign(_x86) {
9930
10275
  return _stopCampaign.apply(this, arguments);
9931
10276
  }
9932
10277
 
@@ -9966,7 +10311,7 @@ var StreamChat = /*#__PURE__*/function () {
9966
10311
  }, _callee65, this);
9967
10312
  }));
9968
10313
 
9969
- function resumeCampaign(_x86) {
10314
+ function resumeCampaign(_x87) {
9970
10315
  return _resumeCampaign.apply(this, arguments);
9971
10316
  }
9972
10317
 
@@ -10009,7 +10354,7 @@ var StreamChat = /*#__PURE__*/function () {
10009
10354
  }, _callee66, this);
10010
10355
  }));
10011
10356
 
10012
- function testCampaign(_x87, _x88) {
10357
+ function testCampaign(_x88, _x89) {
10013
10358
  return _testCampaign.apply(this, arguments);
10014
10359
  }
10015
10360
 
@@ -10042,7 +10387,7 @@ var StreamChat = /*#__PURE__*/function () {
10042
10387
  }, _callee67, this);
10043
10388
  }));
10044
10389
 
10045
- function enrichURL(_x89) {
10390
+ function enrichURL(_x90) {
10046
10391
  return _enrichURL.apply(this, arguments);
10047
10392
  }
10048
10393
 
@@ -10074,7 +10419,7 @@ var StreamChat = /*#__PURE__*/function () {
10074
10419
  }, _callee68, this);
10075
10420
  }));
10076
10421
 
10077
- function getTask(_x90) {
10422
+ function getTask(_x91) {
10078
10423
  return _getTask.apply(this, arguments);
10079
10424
  }
10080
10425
 
@@ -10116,7 +10461,7 @@ var StreamChat = /*#__PURE__*/function () {
10116
10461
  }, _callee69, this);
10117
10462
  }));
10118
10463
 
10119
- function deleteChannels(_x91) {
10464
+ function deleteChannels(_x92) {
10120
10465
  return _deleteChannels.apply(this, arguments);
10121
10466
  }
10122
10467
 
@@ -10179,14 +10524,14 @@ var StreamChat = /*#__PURE__*/function () {
10179
10524
  }, _callee70, this);
10180
10525
  }));
10181
10526
 
10182
- function deleteUsers(_x92, _x93) {
10527
+ function deleteUsers(_x93, _x94) {
10183
10528
  return _deleteUsers.apply(this, arguments);
10184
10529
  }
10185
10530
 
10186
10531
  return deleteUsers;
10187
10532
  }()
10188
10533
  /**
10189
- * _createImport - Create an Import Task.
10534
+ * _createImportURL - Create an Import upload url.
10190
10535
  *
10191
10536
  * Note: Do not use this.
10192
10537
  * It is present for internal usage only.
@@ -10194,20 +10539,19 @@ var StreamChat = /*#__PURE__*/function () {
10194
10539
  *
10195
10540
  * @private
10196
10541
  * @param {string} filename filename of uploaded data
10197
- *
10198
10542
  * @return {APIResponse & CreateImportResponse} An ImportTask
10199
10543
  */
10200
10544
 
10201
10545
  }, {
10202
- key: "_createImport",
10546
+ key: "_createImportURL",
10203
10547
  value: function () {
10204
- var _createImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee71(filename) {
10548
+ var _createImportURL2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee71(filename) {
10205
10549
  return _regeneratorRuntime.wrap(function _callee71$(_context71) {
10206
10550
  while (1) {
10207
10551
  switch (_context71.prev = _context71.next) {
10208
10552
  case 0:
10209
10553
  _context71.next = 2;
10210
- return this.post(this.baseURL + "/imports", {
10554
+ return this.post(this.baseURL + "/import_urls", {
10211
10555
  filename: filename
10212
10556
  });
10213
10557
 
@@ -10222,7 +10566,55 @@ var StreamChat = /*#__PURE__*/function () {
10222
10566
  }, _callee71, this);
10223
10567
  }));
10224
10568
 
10225
- function _createImport(_x94) {
10569
+ function _createImportURL(_x95) {
10570
+ return _createImportURL2.apply(this, arguments);
10571
+ }
10572
+
10573
+ return _createImportURL;
10574
+ }()
10575
+ /**
10576
+ * _createImport - Create an Import Task.
10577
+ *
10578
+ * Note: Do not use this.
10579
+ * It is present for internal usage only.
10580
+ * This function can, and will, break and/or be removed at any point in time.
10581
+ *
10582
+ * @private
10583
+ * @param {string} path path of uploaded data
10584
+ * @param {CreateImportOptions} options import options
10585
+ * @return {APIResponse & CreateImportResponse} An ImportTask
10586
+ */
10587
+
10588
+ }, {
10589
+ key: "_createImport",
10590
+ value: function () {
10591
+ var _createImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee72(path) {
10592
+ var options,
10593
+ _args72 = arguments;
10594
+ return _regeneratorRuntime.wrap(function _callee72$(_context72) {
10595
+ while (1) {
10596
+ switch (_context72.prev = _context72.next) {
10597
+ case 0:
10598
+ options = _args72.length > 1 && _args72[1] !== undefined ? _args72[1] : {
10599
+ mode: 'upsert'
10600
+ };
10601
+ _context72.next = 3;
10602
+ return this.post(this.baseURL + "/imports", _objectSpread({
10603
+ path: path
10604
+ }, options));
10605
+
10606
+ case 3:
10607
+ return _context72.abrupt("return", _context72.sent);
10608
+
10609
+ case 4:
10610
+ case "end":
10611
+ return _context72.stop();
10612
+ }
10613
+ }
10614
+ }, _callee72, this);
10615
+ }));
10616
+
10617
+ function _createImport(_x96) {
10226
10618
  return _createImport2.apply(this, arguments);
10227
10619
  }
10228
10620
 
@@ -10244,26 +10636,26 @@ var StreamChat = /*#__PURE__*/function () {
10244
10636
  }, {
10245
10637
  key: "_getImport",
10246
10638
  value: function () {
10247
- var _getImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee72(id) {
10248
- return _regeneratorRuntime.wrap(function _callee72$(_context72) {
10639
+ var _getImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee73(id) {
10640
+ return _regeneratorRuntime.wrap(function _callee73$(_context73) {
10249
10641
  while (1) {
10250
- switch (_context72.prev = _context72.next) {
10642
+ switch (_context73.prev = _context73.next) {
10251
10643
  case 0:
10252
- _context72.next = 2;
10644
+ _context73.next = 2;
10253
10645
  return this.get(this.baseURL + "/imports/".concat(id));
10254
10646
 
10255
10647
  case 2:
10256
- return _context72.abrupt("return", _context72.sent);
10648
+ return _context73.abrupt("return", _context73.sent);
10257
10649
 
10258
10650
  case 3:
10259
10651
  case "end":
10260
- return _context72.stop();
10652
+ return _context73.stop();
10261
10653
  }
10262
10654
  }
10263
- }, _callee72, this);
10655
+ }, _callee73, this);
10264
10656
  }));
10265
10657
 
10266
- function _getImport(_x95) {
10658
+ function _getImport(_x97) {
10267
10659
  return _getImport2.apply(this, arguments);
10268
10660
  }
10269
10661
 
@@ -10285,31 +10677,147 @@ var StreamChat = /*#__PURE__*/function () {
10285
10677
  }, {
10286
10678
  key: "_listImports",
10287
10679
  value: function () {
10288
- var _listImports2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee73(options) {
10289
- return _regeneratorRuntime.wrap(function _callee73$(_context73) {
10680
+ var _listImports2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee74(options) {
10681
+ return _regeneratorRuntime.wrap(function _callee74$(_context74) {
10290
10682
  while (1) {
10291
- switch (_context73.prev = _context73.next) {
10683
+ switch (_context74.prev = _context74.next) {
10292
10684
  case 0:
10293
- _context73.next = 2;
10685
+ _context74.next = 2;
10294
10686
  return this.get(this.baseURL + "/imports", options);
10295
10687
 
10296
10688
  case 2:
10297
- return _context73.abrupt("return", _context73.sent);
10689
+ return _context74.abrupt("return", _context74.sent);
10298
10690
 
10299
10691
  case 3:
10300
10692
  case "end":
10301
- return _context73.stop();
10693
+ return _context74.stop();
10302
10694
  }
10303
10695
  }
10304
- }, _callee73, this);
10696
+ }, _callee74, this);
10305
10697
  }));
10306
10698
 
10307
- function _listImports(_x96) {
10699
+ function _listImports(_x98) {
10308
10700
  return _listImports2.apply(this, arguments);
10309
10701
  }
10310
10702
 
10311
10703
  return _listImports;
10312
10704
  }()
10705
+ /**
10706
+ * upsertPushProvider - Create or Update a push provider
10707
+ *
10708
+ * Note: Works only for v2 push version is enabled on app settings.
10709
+ *
10710
+ * @param {PushProviderConfig} configuration of the provider you want to create or update
10711
+ *
10712
+ * @return {APIResponse & PushProviderUpsertResponse} A push provider
10713
+ */
10714
+
10715
+ }, {
10716
+ key: "upsertPushProvider",
10717
+ value: function () {
10718
+ var _upsertPushProvider = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee75(pushProvider) {
10719
+ return _regeneratorRuntime.wrap(function _callee75$(_context75) {
10720
+ while (1) {
10721
+ switch (_context75.prev = _context75.next) {
10722
+ case 0:
10723
+ _context75.next = 2;
10724
+ return this.post(this.baseURL + "/push_providers", {
10725
+ push_provider: pushProvider
10726
+ });
10727
+
10728
+ case 2:
10729
+ return _context75.abrupt("return", _context75.sent);
10730
+
10731
+ case 3:
10732
+ case "end":
10733
+ return _context75.stop();
10734
+ }
10735
+ }
10736
+ }, _callee75, this);
10737
+ }));
10738
+
10739
+ function upsertPushProvider(_x99) {
10740
+ return _upsertPushProvider.apply(this, arguments);
10741
+ }
10742
+
10743
+ return upsertPushProvider;
10744
+ }()
10745
+ /**
10746
+ * deletePushProvider - Delete a push provider
10747
+ *
10748
+ * Note: Works only for v2 push version is enabled on app settings.
10749
+ *
10750
+ * @param {PushProviderID} type and foreign id of the push provider to be deleted
10751
+ *
10752
+ * @return {APIResponse} An API response
10753
+ */
10754
+
10755
+ }, {
10756
+ key: "deletePushProvider",
10757
+ value: function () {
10758
+ var _deletePushProvider = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee76(_ref8) {
10759
+ var type, name;
10760
+ return _regeneratorRuntime.wrap(function _callee76$(_context76) {
10761
+ while (1) {
10762
+ switch (_context76.prev = _context76.next) {
10763
+ case 0:
10764
+ type = _ref8.type, name = _ref8.name;
10765
+ _context76.next = 3;
10766
+ return this.delete(this.baseURL + "/push_providers/".concat(type, "/").concat(name));
10767
+
10768
+ case 3:
10769
+ return _context76.abrupt("return", _context76.sent);
10770
+
10771
+ case 4:
10772
+ case "end":
10773
+ return _context76.stop();
10774
+ }
10775
+ }
10776
+ }, _callee76, this);
10777
+ }));
10778
+
10779
+ function deletePushProvider(_x100) {
10780
+ return _deletePushProvider.apply(this, arguments);
10781
+ }
10782
+
10783
+ return deletePushProvider;
10784
+ }()
10785
+ /**
10786
+ * listPushProviders - Get all push providers in the app
10787
+ *
10788
+ * Note: Works only for v2 push version is enabled on app settings.
10789
+ *
10790
+ * @return {APIResponse & PushProviderListResponse} A push provider
10791
+ */
10792
+
10793
+ }, {
10794
+ key: "listPushProviders",
10795
+ value: function () {
10796
+ var _listPushProviders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee77() {
10797
+ return _regeneratorRuntime.wrap(function _callee77$(_context77) {
10798
+ while (1) {
10799
+ switch (_context77.prev = _context77.next) {
10800
+ case 0:
10801
+ _context77.next = 2;
10802
+ return this.get(this.baseURL + "/push_providers");
10803
+
10804
+ case 2:
10805
+ return _context77.abrupt("return", _context77.sent);
10806
+
10807
+ case 3:
10808
+ case "end":
10809
+ return _context77.stop();
10810
+ }
10811
+ }
10812
+ }, _callee77, this);
10813
+ }));
10814
+
10815
+ function listPushProviders() {
10816
+ return _listPushProviders.apply(this, arguments);
10817
+ }
10818
+
10819
+ return listPushProviders;
10820
+ }()
10313
10821
  }], [{
10314
10822
  key: "getInstance",
10315
10823
  value: function getInstance(key, secretOrOptions, options) {