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.
@@ -102,6 +102,13 @@ var ChannelState = /*#__PURE__*/function () {
102
102
  * When false, any new message (received by websocket event - message.new) will not
103
103
  * be pushed on to message list.
104
104
  */
105
+
106
+ /**
107
+ * Disjoint lists of messages
108
+ * Users can jump in the message list (with searching) and this can result in disjoint lists of messages
109
+ * The state manages these lists and merges them when lists overlap
110
+ * The messages array contains the currently active set
111
+ */
105
112
  function ChannelState(channel) {
106
113
  var _this = this,
107
114
  _channel$state;
@@ -116,8 +123,6 @@ var ChannelState = /*#__PURE__*/function () {
116
123
 
117
124
  _defineProperty(this, "read", void 0);
118
125
 
119
- _defineProperty(this, "messages", void 0);
120
-
121
126
  _defineProperty(this, "pinnedMessages", void 0);
122
127
 
123
128
  _defineProperty(this, "threads", void 0);
@@ -136,6 +141,8 @@ var ChannelState = /*#__PURE__*/function () {
136
141
 
137
142
  _defineProperty(this, "isUpToDate", void 0);
138
143
 
144
+ _defineProperty(this, "messageSets", []);
145
+
139
146
  _defineProperty(this, "setIsUpToDate", function (isUpToDate) {
140
147
  _this.isUpToDate = isUpToDate;
141
148
  });
@@ -165,7 +172,9 @@ var ChannelState = /*#__PURE__*/function () {
165
172
  }
166
173
  };
167
174
 
168
- _updateUserMessages(_this.messages, user);
175
+ _this.messageSets.forEach(function (set) {
176
+ return _updateUserMessages(set.messages, user);
177
+ });
169
178
 
170
179
  for (var parentId in _this.threads) {
171
180
  _updateUserMessages(_this.threads[parentId], user);
@@ -219,7 +228,9 @@ var ChannelState = /*#__PURE__*/function () {
219
228
  }
220
229
  };
221
230
 
222
- _deleteUserMessages(_this.messages, user, hardDelete);
231
+ _this.messageSets.forEach(function (set) {
232
+ return _deleteUserMessages(set.messages, user, hardDelete);
233
+ });
223
234
 
224
235
  for (var parentId in _this.threads) {
225
236
  _deleteUserMessages(_this.threads[parentId], user, hardDelete);
@@ -232,7 +243,7 @@ var ChannelState = /*#__PURE__*/function () {
232
243
  this.watcher_count = 0;
233
244
  this.typing = {};
234
245
  this.read = {};
235
- this.messages = [];
246
+ this.initMessages();
236
247
  this.pinnedMessages = [];
237
248
  this.threads = {}; // a list of users to hide messages from
238
249
 
@@ -251,22 +262,58 @@ var ChannelState = /*#__PURE__*/function () {
251
262
  this.isUpToDate = true;
252
263
  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;
253
264
  }
254
- /**
255
- * addMessageSorted - Add a message to the state
256
- *
257
- * @param {MessageResponse<StreamChatGenerics>} newMessage A new message
258
- * @param {boolean} timestampChanged Whether updating a message with changed created_at value.
259
- * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
260
- *
261
- */
262
-
263
265
 
264
266
  _createClass(ChannelState, [{
267
+ key: "messages",
268
+ get: function get() {
269
+ var _this$messageSets$fin;
270
+
271
+ return ((_this$messageSets$fin = this.messageSets.find(function (s) {
272
+ return s.isCurrent;
273
+ })) === null || _this$messageSets$fin === void 0 ? void 0 : _this$messageSets$fin.messages) || [];
274
+ },
275
+ set: function set(messages) {
276
+ var index = this.messageSets.findIndex(function (s) {
277
+ return s.isCurrent;
278
+ });
279
+ this.messageSets[index].messages = messages;
280
+ }
281
+ /**
282
+ * The list of latest messages
283
+ * 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)
284
+ */
285
+
286
+ }, {
287
+ key: "latestMessages",
288
+ get: function get() {
289
+ var _this$messageSets$fin2;
290
+
291
+ return ((_this$messageSets$fin2 = this.messageSets.find(function (s) {
292
+ return s.isLatest;
293
+ })) === null || _this$messageSets$fin2 === void 0 ? void 0 : _this$messageSets$fin2.messages) || [];
294
+ },
295
+ set: function set(messages) {
296
+ var index = this.messageSets.findIndex(function (s) {
297
+ return s.isLatest;
298
+ });
299
+ this.messageSets[index].messages = messages;
300
+ }
301
+ /**
302
+ * addMessageSorted - Add a message to the state
303
+ *
304
+ * @param {MessageResponse<StreamChatGenerics>} newMessage A new message
305
+ * @param {boolean} timestampChanged Whether updating a message with changed created_at value.
306
+ * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
307
+ * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if message is not in the list (only used if addIfDoesNotExist is true)
308
+ */
309
+
310
+ }, {
265
311
  key: "addMessageSorted",
266
312
  value: function addMessageSorted(newMessage) {
267
313
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
268
314
  var addIfDoesNotExist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
269
- return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist);
315
+ var messageSetToAddToIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'latest';
316
+ return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist, messageSetToAddToIfDoesNotExist);
270
317
  }
271
318
  /**
272
319
  * formatMessage - Takes the message object. Parses the dates, sets __html
@@ -298,6 +345,7 @@ var ChannelState = /*#__PURE__*/function () {
298
345
  * @param {boolean} timestampChanged Whether updating messages with changed created_at value.
299
346
  * @param {boolean} initializing Whether channel is being initialized.
300
347
  * @param {boolean} addIfDoesNotExist Add message if it is not in the list, used to prevent out of order updated messages from being added.
348
+ * @param {MessageSetType} messageSetToAddToIfDoesNotExist Which message set to add to if messages are not in the list (only used if addIfDoesNotExist is true)
301
349
  *
302
350
  */
303
351
 
@@ -307,48 +355,63 @@ var ChannelState = /*#__PURE__*/function () {
307
355
  var timestampChanged = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
308
356
  var initializing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
309
357
  var addIfDoesNotExist = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
358
+ var messageSetToAddToIfDoesNotExist = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'current';
310
359
 
311
- for (var i = 0; i < newMessages.length; i += 1) {
312
- var _this$_channel;
360
+ var _this$findTargetMessa = this.findTargetMessageSet(newMessages, addIfDoesNotExist, messageSetToAddToIfDoesNotExist),
361
+ messagesToAdd = _this$findTargetMessa.messagesToAdd,
362
+ targetMessageSetIndex = _this$findTargetMessa.targetMessageSetIndex;
313
363
 
314
- var isFromShadowBannedUser = newMessages[i].shadowed;
364
+ for (var i = 0; i < messagesToAdd.length; i += 1) {
365
+ var isFromShadowBannedUser = messagesToAdd[i].shadowed;
315
366
 
316
367
  if (isFromShadowBannedUser) {
317
368
  continue;
318
- }
369
+ } // If message is already formatted we can skip the tasks below
370
+ // This will be true for messages that are already present at the state -> this happens when we perform merging of message sets
371
+ // This will be also true for message previews used by some SDKs
319
372
 
320
- var message = this.formatMessage(newMessages[i]);
321
373
 
322
- if (message.user && (_this$_channel = this._channel) !== null && _this$_channel !== void 0 && _this$_channel.cid) {
323
- /**
324
- * Store the reference to user for this channel, so that when we have to
325
- * handle updates to user, we can use the reference map, to determine which
326
- * channels need to be updated with updated user object.
327
- */
328
- this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
329
- }
374
+ var isMessageFormatted = messagesToAdd[i].created_at instanceof Date;
375
+ var message = void 0;
330
376
 
331
- if (initializing && message.id && this.threads[message.id]) {
332
- // If we are initializing the state of channel (e.g., in case of connection recovery),
333
- // then in that case we remove thread related to this message from threads object.
334
- // This way we can ensure that we don't have any stale data in thread object
335
- // and consumer can refetch the replies.
336
- delete this.threads[message.id];
337
- }
377
+ if (isMessageFormatted) {
378
+ message = messagesToAdd[i];
379
+ } else {
380
+ var _this$_channel;
338
381
 
339
- if (!this.last_message_at) {
340
- this.last_message_at = new Date(message.created_at.getTime());
341
- }
382
+ message = this.formatMessage(messagesToAdd[i]);
383
+
384
+ if (message.user && (_this$_channel = this._channel) !== null && _this$_channel !== void 0 && _this$_channel.cid) {
385
+ /**
386
+ * Store the reference to user for this channel, so that when we have to
387
+ * handle updates to user, we can use the reference map, to determine which
388
+ * channels need to be updated with updated user object.
389
+ */
390
+ this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
391
+ }
342
392
 
343
- if (message.created_at.getTime() > this.last_message_at.getTime()) {
344
- this.last_message_at = new Date(message.created_at.getTime());
393
+ if (initializing && message.id && this.threads[message.id]) {
394
+ // If we are initializing the state of channel (e.g., in case of connection recovery),
395
+ // then in that case we remove thread related to this message from threads object.
396
+ // This way we can ensure that we don't have any stale data in thread object
397
+ // and consumer can refetch the replies.
398
+ delete this.threads[message.id];
399
+ }
400
+
401
+ if (!this.last_message_at) {
402
+ this.last_message_at = new Date(message.created_at.getTime());
403
+ }
404
+
405
+ if (message.created_at.getTime() > this.last_message_at.getTime()) {
406
+ this.last_message_at = new Date(message.created_at.getTime());
407
+ }
345
408
  } // update or append the messages...
346
409
 
347
410
 
348
- var parentID = message.parent_id; // add to the main message list
411
+ var parentID = message.parent_id; // add to the given message set
349
412
 
350
- if (!parentID || message.show_in_channel) {
351
- this.messages = this._addToMessageList(this.messages, message, timestampChanged, 'created_at', addIfDoesNotExist);
413
+ if ((!parentID || message.show_in_channel) && targetMessageSetIndex !== -1) {
414
+ this.messageSets[targetMessageSetIndex].messages = this._addToMessageList(this.messageSets[targetMessageSetIndex].messages, message, timestampChanged, 'created_at', addIfDoesNotExist);
352
415
  }
353
416
  /**
354
417
  * Add message to thread if applicable and the message
@@ -472,6 +535,8 @@ var ChannelState = /*#__PURE__*/function () {
472
535
  }, {
473
536
  key: "removeQuotedMessageReferences",
474
537
  value: function removeQuotedMessageReferences(message) {
538
+ var _this4 = this;
539
+
475
540
  var parseMessage = function parseMessage(m) {
476
541
  var _m$pinned_at, _m$updated_at;
477
542
 
@@ -482,16 +547,19 @@ var ChannelState = /*#__PURE__*/function () {
482
547
  });
483
548
  };
484
549
 
485
- var updatedMessages = this.messages.filter(function (msg) {
486
- return msg.quoted_message_id === message.id;
487
- }).map(parseMessage).map(function (msg) {
488
- return _objectSpread$7(_objectSpread$7({}, msg), {}, {
489
- quoted_message: _objectSpread$7(_objectSpread$7({}, message), {}, {
490
- attachments: []
491
- })
550
+ this.messageSets.forEach(function (set) {
551
+ var updatedMessages = set.messages.filter(function (msg) {
552
+ return msg.quoted_message_id === message.id;
553
+ }).map(parseMessage).map(function (msg) {
554
+ return _objectSpread$7(_objectSpread$7({}, msg), {}, {
555
+ quoted_message: _objectSpread$7(_objectSpread$7({}, message), {}, {
556
+ attachments: []
557
+ })
558
+ });
492
559
  });
560
+
561
+ _this4.addMessagesSorted(updatedMessages, true);
493
562
  });
494
- this.addMessagesSorted(updatedMessages, true);
495
563
  }
496
564
  /**
497
565
  * Updates all instances of given message in channel state
@@ -519,12 +587,16 @@ var ChannelState = /*#__PURE__*/function () {
519
587
  }
520
588
 
521
589
  if (!show_in_channel && !parent_id || show_in_channel) {
522
- var _msgIndex = this.messages.findIndex(function (msg) {
523
- return msg.id === message.id;
524
- });
590
+ var messageSetIndex = this.findMessageSetIndex(message);
591
+
592
+ if (messageSetIndex !== -1) {
593
+ var _msgIndex = this.messageSets[messageSetIndex].messages.findIndex(function (msg) {
594
+ return msg.id === message.id;
595
+ });
525
596
 
526
- if (_msgIndex !== -1) {
527
- this.messages[_msgIndex] = updateFunc(this.messages[_msgIndex]);
597
+ if (_msgIndex !== -1) {
598
+ this.messageSets[messageSetIndex].messages[_msgIndex] = updateFunc(this.messageSets[messageSetIndex].messages[_msgIndex]);
599
+ }
528
600
  }
529
601
  }
530
602
 
@@ -643,12 +715,16 @@ var ChannelState = /*#__PURE__*/function () {
643
715
  this.threads[messageToRemove.parent_id] = threadMessages;
644
716
  isRemoved = removed;
645
717
  } else {
646
- var _this$removeMessageFr3 = this.removeMessageFromArray(this.messages, messageToRemove),
647
- _removed = _this$removeMessageFr3.removed,
648
- messages = _this$removeMessageFr3.result;
718
+ var messageSetIndex = this.findMessageSetIndex(messageToRemove);
719
+
720
+ if (messageSetIndex !== -1) {
721
+ var _this$removeMessageFr3 = this.removeMessageFromArray(this.messageSets[messageSetIndex].messages, messageToRemove),
722
+ _removed = _this$removeMessageFr3.removed,
723
+ messages = _this$removeMessageFr3.result;
649
724
 
650
- this.messages = messages;
651
- isRemoved = _removed;
725
+ this.messageSets[messageSetIndex].messages = messages;
726
+ isRemoved = _removed;
727
+ }
652
728
  }
653
729
 
654
730
  return isRemoved;
@@ -661,10 +737,10 @@ var ChannelState = /*#__PURE__*/function () {
661
737
  *
662
738
  */
663
739
  function filterErrorMessages() {
664
- var filteredMessages = this.messages.filter(function (message) {
740
+ var filteredMessages = this.latestMessages.filter(function (message) {
665
741
  return message.type !== 'error';
666
742
  });
667
- this.messages = filteredMessages;
743
+ this.latestMessages = filteredMessages;
668
744
  }
669
745
  /**
670
746
  * clean - Remove stale data such as users that stayed in typing state for more than 5 seconds
@@ -698,9 +774,250 @@ var ChannelState = /*#__PURE__*/function () {
698
774
  }, {
699
775
  key: "clearMessages",
700
776
  value: function clearMessages() {
701
- this.messages = [];
777
+ this.initMessages();
702
778
  this.pinnedMessages = [];
703
779
  }
780
+ }, {
781
+ key: "initMessages",
782
+ value: function initMessages() {
783
+ this.messageSets = [{
784
+ messages: [],
785
+ isLatest: true,
786
+ isCurrent: true
787
+ }];
788
+ }
789
+ /**
790
+ * loadMessageIntoState - Loads a given message (and messages around it) into the state
791
+ *
792
+ * @param {string} messageId The id of the message, or 'latest' to indicate switching to the latest messages
793
+ * @param {string} parentMessageId The id of the parent message, if we want load a thread reply
794
+ */
795
+
796
+ }, {
797
+ key: "loadMessageIntoState",
798
+ value: function () {
799
+ var _loadMessageIntoState = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(messageId, parentMessageId) {
800
+ var _this$threads$parentM;
801
+
802
+ var messageSetIndex, switchedToMessageSet, loadedMessageThread, messageIdToFind;
803
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
804
+ while (1) {
805
+ switch (_context.prev = _context.next) {
806
+ case 0:
807
+ switchedToMessageSet = false;
808
+ loadedMessageThread = false;
809
+ messageIdToFind = parentMessageId || messageId;
810
+
811
+ if (!(messageId === 'latest')) {
812
+ _context.next = 9;
813
+ break;
814
+ }
815
+
816
+ if (!(this.messages === this.latestMessages)) {
817
+ _context.next = 6;
818
+ break;
819
+ }
820
+
821
+ return _context.abrupt("return");
822
+
823
+ case 6:
824
+ messageSetIndex = this.messageSets.findIndex(function (s) {
825
+ return s.isLatest;
826
+ });
827
+ _context.next = 10;
828
+ break;
829
+
830
+ case 9:
831
+ messageSetIndex = this.findMessageSetIndex({
832
+ id: messageIdToFind
833
+ });
834
+
835
+ case 10:
836
+ if (messageSetIndex !== -1) {
837
+ this.switchToMessageSet(messageSetIndex);
838
+ switchedToMessageSet = true;
839
+ }
840
+
841
+ loadedMessageThread = !parentMessageId || !!((_this$threads$parentM = this.threads[parentMessageId]) !== null && _this$threads$parentM !== void 0 && _this$threads$parentM.find(function (m) {
842
+ return m.id === messageId;
843
+ }));
844
+
845
+ if (!(switchedToMessageSet && loadedMessageThread)) {
846
+ _context.next = 14;
847
+ break;
848
+ }
849
+
850
+ return _context.abrupt("return");
851
+
852
+ case 14:
853
+ if (switchedToMessageSet) {
854
+ _context.next = 17;
855
+ break;
856
+ }
857
+
858
+ _context.next = 17;
859
+ return this._channel.query({
860
+ messages: {
861
+ id_around: messageIdToFind,
862
+ limit: 25
863
+ }
864
+ }, 'new');
865
+
866
+ case 17:
867
+ if (!(!loadedMessageThread && parentMessageId)) {
868
+ _context.next = 20;
869
+ break;
870
+ }
871
+
872
+ _context.next = 20;
873
+ return this._channel.getReplies(parentMessageId, {
874
+ id_around: messageId,
875
+ limit: 25
876
+ });
877
+
878
+ case 20:
879
+ messageSetIndex = this.findMessageSetIndex({
880
+ id: messageIdToFind
881
+ });
882
+
883
+ if (messageSetIndex !== -1) {
884
+ this.switchToMessageSet(messageSetIndex);
885
+ }
886
+
887
+ case 22:
888
+ case "end":
889
+ return _context.stop();
890
+ }
891
+ }
892
+ }, _callee, this);
893
+ }));
894
+
895
+ function loadMessageIntoState(_x, _x2) {
896
+ return _loadMessageIntoState.apply(this, arguments);
897
+ }
898
+
899
+ return loadMessageIntoState;
900
+ }()
901
+ }, {
902
+ key: "switchToMessageSet",
903
+ value: function switchToMessageSet(index) {
904
+ var currentMessages = this.messageSets.find(function (s) {
905
+ return s.isCurrent;
906
+ });
907
+
908
+ if (!currentMessages) {
909
+ return;
910
+ }
911
+
912
+ currentMessages.isCurrent = false;
913
+ this.messageSets[index].isCurrent = true;
914
+ }
915
+ }, {
916
+ key: "areMessageSetsOverlap",
917
+ value: function areMessageSetsOverlap(messages1, messages2) {
918
+ return messages1.some(function (m1) {
919
+ return messages2.find(function (m2) {
920
+ return m1.id === m2.id;
921
+ });
922
+ });
923
+ }
924
+ }, {
925
+ key: "findMessageSetIndex",
926
+ value: function findMessageSetIndex(message) {
927
+ return this.messageSets.findIndex(function (set) {
928
+ return !!set.messages.find(function (m) {
929
+ return m.id === message.id;
930
+ });
931
+ });
932
+ }
933
+ }, {
934
+ key: "findTargetMessageSet",
935
+ value: function findTargetMessageSet(newMessages) {
936
+ var _this5 = this;
937
+
938
+ var addIfDoesNotExist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
939
+ var messageSetToAddToIfDoesNotExist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'current';
940
+ var messagesToAdd = newMessages;
941
+ var targetMessageSetIndex;
942
+
943
+ if (addIfDoesNotExist) {
944
+ var overlappingMessageSetIndices = this.messageSets.map(function (_, i) {
945
+ return i;
946
+ }).filter(function (i) {
947
+ return _this5.areMessageSetsOverlap(_this5.messageSets[i].messages, newMessages);
948
+ });
949
+
950
+ switch (messageSetToAddToIfDoesNotExist) {
951
+ case 'new':
952
+ if (overlappingMessageSetIndices.length > 0) {
953
+ targetMessageSetIndex = overlappingMessageSetIndices[0]; // No new message set is created if newMessages only contains thread replies
954
+ } else if (newMessages.some(function (m) {
955
+ return !m.parent_id;
956
+ })) {
957
+ this.messageSets.push({
958
+ messages: [],
959
+ isCurrent: false,
960
+ isLatest: false
961
+ });
962
+ targetMessageSetIndex = this.messageSets.length - 1;
963
+ }
964
+
965
+ break;
966
+
967
+ case 'current':
968
+ targetMessageSetIndex = this.messageSets.findIndex(function (s) {
969
+ return s.isCurrent;
970
+ });
971
+ break;
972
+
973
+ case 'latest':
974
+ targetMessageSetIndex = this.messageSets.findIndex(function (s) {
975
+ return s.isLatest;
976
+ });
977
+ break;
978
+
979
+ default:
980
+ targetMessageSetIndex = -1;
981
+ } // when merging the target set will be the first one from the overlapping message sets
982
+
983
+
984
+ var mergeTargetMessageSetIndex = overlappingMessageSetIndices.splice(0, 1)[0];
985
+
986
+ var mergeSourceMessageSetIndices = _toConsumableArray(overlappingMessageSetIndices);
987
+
988
+ if (mergeTargetMessageSetIndex !== undefined && mergeTargetMessageSetIndex !== targetMessageSetIndex) {
989
+ mergeSourceMessageSetIndices.push(targetMessageSetIndex);
990
+ } // merge message sets
991
+
992
+
993
+ if (mergeSourceMessageSetIndices.length > 0) {
994
+ var target = this.messageSets[mergeTargetMessageSetIndex];
995
+ var sources = this.messageSets.filter(function (_, i) {
996
+ return mergeSourceMessageSetIndices.indexOf(i) !== -1;
997
+ });
998
+ sources.forEach(function (messageSet) {
999
+ target.isLatest = target.isLatest || messageSet.isLatest;
1000
+ target.isCurrent = target.isCurrent || messageSet.isCurrent;
1001
+ messagesToAdd = [].concat(_toConsumableArray(messagesToAdd), _toConsumableArray(messageSet.messages));
1002
+ });
1003
+ sources.forEach(function (s) {
1004
+ return _this5.messageSets.splice(_this5.messageSets.indexOf(s), 1);
1005
+ });
1006
+ var overlappingMessageSetIndex = this.messageSets.findIndex(function (s) {
1007
+ return _this5.areMessageSetsOverlap(s.messages, newMessages);
1008
+ });
1009
+ targetMessageSetIndex = overlappingMessageSetIndex;
1010
+ }
1011
+ } else {
1012
+ // assumes that all new messages belong to the same set
1013
+ targetMessageSetIndex = this.findMessageSetIndex(newMessages[0]);
1014
+ }
1015
+
1016
+ return {
1017
+ targetMessageSetIndex: targetMessageSetIndex,
1018
+ messagesToAdd: messagesToAdd
1019
+ };
1020
+ }
704
1021
  }]);
705
1022
 
706
1023
  return ChannelState;
@@ -1063,7 +1380,7 @@ var Channel = /*#__PURE__*/function () {
1063
1380
  presence: false
1064
1381
  };
1065
1382
  _context.next = 3;
1066
- return _this.query(options);
1383
+ return _this.query(options, 'latest');
1067
1384
 
1068
1385
  case 3:
1069
1386
  return _context.abrupt("return", _context.sent);
@@ -2361,14 +2678,14 @@ var Channel = /*#__PURE__*/function () {
2361
2678
  value: function lastMessage() {
2362
2679
  // get last 5 messages, sort, return the latest
2363
2680
  // get a slice of the last 5
2364
- var min = this.state.messages.length - 5;
2681
+ var min = this.state.latestMessages.length - 5;
2365
2682
 
2366
2683
  if (min < 0) {
2367
2684
  min = 0;
2368
2685
  }
2369
2686
 
2370
- var max = this.state.messages.length + 1;
2371
- var messageSlice = this.state.messages.slice(min, max); // sort by pk desc
2687
+ var max = this.state.latestMessages.length + 1;
2688
+ var messageSlice = this.state.latestMessages.slice(min, max); // sort by pk desc
2372
2689
 
2373
2690
  messageSlice.sort(function (a, b) {
2374
2691
  return b.created_at.getTime() - a.created_at.getTime();
@@ -2477,7 +2794,7 @@ var Channel = /*#__PURE__*/function () {
2477
2794
 
2478
2795
  combined = _objectSpread$5(_objectSpread$5({}, defaultOptions), options);
2479
2796
  _context27.next = 7;
2480
- return this.query(combined);
2797
+ return this.query(combined, 'latest');
2481
2798
 
2482
2799
  case 7:
2483
2800
  state = _context27.sent;
@@ -2551,7 +2868,7 @@ var Channel = /*#__PURE__*/function () {
2551
2868
  * getReplies - List the message replies for a parent message
2552
2869
  *
2553
2870
  * @param {string} parent_id The message parent id, ie the top of the thread
2554
- * @param {PaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
2871
+ * @param {MessagePaginationOptions & { user?: UserResponse<StreamChatGenerics>; user_id?: string }} options Pagination params, ie {limit:10, id_lte: 10}
2555
2872
  *
2556
2873
  * @return {Promise<GetRepliesAPIResponse<StreamChatGenerics>>} A response with a list of messages
2557
2874
  */
@@ -2712,8 +3029,8 @@ var Channel = /*#__PURE__*/function () {
2712
3029
  if (!lastRead) return this.state.unreadCount;
2713
3030
  var count = 0;
2714
3031
 
2715
- for (var i = 0; i < this.state.messages.length; i += 1) {
2716
- var message = this.state.messages[i];
3032
+ for (var i = 0; i < this.state.latestMessages.length; i += 1) {
3033
+ var message = this.state.latestMessages[i];
2717
3034
 
2718
3035
  if (message.created_at > lastRead && this._countMessageAsUnread(message)) {
2719
3036
  count++;
@@ -2723,7 +3040,7 @@ var Channel = /*#__PURE__*/function () {
2723
3040
  return count;
2724
3041
  }
2725
3042
  /**
2726
- * countUnread - Count the number of unread messages mentioning the current user
3043
+ * countUnreadMentions - Count the number of unread messages mentioning the current user
2727
3044
  *
2728
3045
  * @return {number} Unread mentions count
2729
3046
  */
@@ -2735,10 +3052,10 @@ var Channel = /*#__PURE__*/function () {
2735
3052
  var userID = this.getClient().userID;
2736
3053
  var count = 0;
2737
3054
 
2738
- for (var i = 0; i < this.state.messages.length; i += 1) {
3055
+ for (var i = 0; i < this.state.latestMessages.length; i += 1) {
2739
3056
  var _message$mentioned_us;
2740
3057
 
2741
- var message = this.state.messages[i];
3058
+ var message = this.state.latestMessages[i];
2742
3059
 
2743
3060
  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) {
2744
3061
  return user.id === userID;
@@ -2762,33 +3079,40 @@ var Channel = /*#__PURE__*/function () {
2762
3079
  * query - Query the API, get messages, members or other channel fields
2763
3080
  *
2764
3081
  * @param {ChannelQueryOptions<StreamChatGenerics>} options The query options
3082
+ * @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
2765
3083
  *
2766
3084
  * @return {Promise<ChannelAPIResponse<StreamChatGenerics>>} Returns a query response
2767
3085
  */
2768
3086
  function () {
2769
3087
  var _query = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee31(options) {
2770
- var queryURL, state, membersStr, tempChannelCid;
3088
+ var messageSetToAddToIfDoesNotExist,
3089
+ queryURL,
3090
+ state,
3091
+ membersStr,
3092
+ tempChannelCid,
3093
+ _args31 = arguments;
2771
3094
  return _regeneratorRuntime.wrap(function _callee31$(_context31) {
2772
3095
  while (1) {
2773
3096
  switch (_context31.prev = _context31.next) {
2774
3097
  case 0:
2775
- _context31.next = 2;
3098
+ messageSetToAddToIfDoesNotExist = _args31.length > 1 && _args31[1] !== undefined ? _args31[1] : 'current';
3099
+ _context31.next = 3;
2776
3100
  return this.getClient().wsPromise;
2777
3101
 
2778
- case 2:
3102
+ case 3:
2779
3103
  queryURL = "".concat(this.getClient().baseURL, "/channels/").concat(this.type);
2780
3104
 
2781
3105
  if (this.id) {
2782
3106
  queryURL += "/".concat(this.id);
2783
3107
  }
2784
3108
 
2785
- _context31.next = 6;
3109
+ _context31.next = 7;
2786
3110
  return this.getClient().post(queryURL + '/query', _objectSpread$5({
2787
3111
  data: this._data,
2788
3112
  state: true
2789
3113
  }, options));
2790
3114
 
2791
- case 6:
3115
+ case 7:
2792
3116
  state = _context31.sent;
2793
3117
 
2794
3118
  // update the channel id if it was missing
@@ -2817,11 +3141,11 @@ var Channel = /*#__PURE__*/function () {
2817
3141
  this.getClient()._addChannelConfig(state); // add any messages to our channel state
2818
3142
 
2819
3143
 
2820
- this._initializeState(state);
3144
+ this._initializeState(state, messageSetToAddToIfDoesNotExist);
2821
3145
 
2822
3146
  return _context31.abrupt("return", state);
2823
3147
 
2824
- case 11:
3148
+ case 12:
2825
3149
  case "end":
2826
3150
  return _context31.stop();
2827
3151
  }
@@ -3371,6 +3695,8 @@ var Channel = /*#__PURE__*/function () {
3371
3695
  }, {
3372
3696
  key: "_initializeState",
3373
3697
  value: function _initializeState(state) {
3698
+ var messageSetToAddToIfDoesNotExist = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'latest';
3699
+
3374
3700
  var _this$getClient2 = this.getClient(),
3375
3701
  clientState = _this$getClient2.state,
3376
3702
  user = _this$getClient2.user,
@@ -3400,10 +3726,10 @@ var Channel = /*#__PURE__*/function () {
3400
3726
  var messages = state.messages || [];
3401
3727
 
3402
3728
  if (!this.state.messages) {
3403
- this.state.messages = [];
3729
+ this.state.initMessages();
3404
3730
  }
3405
3731
 
3406
- this.state.addMessagesSorted(messages, false, true);
3732
+ this.state.addMessagesSorted(messages, false, true, true, messageSetToAddToIfDoesNotExist);
3407
3733
 
3408
3734
  if (!this.state.pinnedMessages) {
3409
3735
  this.state.pinnedMessages = [];
@@ -4823,7 +5149,7 @@ function TokenManager(secret) {
4823
5149
  _defineProperty(this, "loadToken", function () {
4824
5150
  // eslint-disable-next-line no-async-promise-executor
4825
5151
  _this.loadTokenPromise = new Promise( /*#__PURE__*/function () {
4826
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve) {
5152
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(resolve, reject) {
4827
5153
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
4828
5154
  while (1) {
4829
5155
  switch (_context2.prev = _context2.next) {
@@ -4837,26 +5163,36 @@ function TokenManager(secret) {
4837
5163
 
4838
5164
  case 2:
4839
5165
  if (!(_this.tokenProvider && typeof _this.tokenProvider !== 'string')) {
4840
- _context2.next = 7;
5166
+ _context2.next = 13;
4841
5167
  break;
4842
5168
  }
4843
5169
 
4844
- _context2.next = 5;
5170
+ _context2.prev = 3;
5171
+ _context2.next = 6;
4845
5172
  return _this.tokenProvider();
4846
5173
 
4847
- case 5:
5174
+ case 6:
4848
5175
  _this.token = _context2.sent;
5176
+ _context2.next = 12;
5177
+ break;
5178
+
5179
+ case 9:
5180
+ _context2.prev = 9;
5181
+ _context2.t0 = _context2["catch"](3);
5182
+ return _context2.abrupt("return", reject(new Error("Call to tokenProvider failed with message: ".concat(_context2.t0))));
5183
+
5184
+ case 12:
4849
5185
  resolve(_this.token);
4850
5186
 
4851
- case 7:
5187
+ case 13:
4852
5188
  case "end":
4853
5189
  return _context2.stop();
4854
5190
  }
4855
5191
  }
4856
- }, _callee2);
5192
+ }, _callee2, null, [[3, 9]]);
4857
5193
  }));
4858
5194
 
4859
- return function (_x3) {
5195
+ return function (_x3, _x4) {
4860
5196
  return _ref2.apply(this, arguments);
4861
5197
  };
4862
5198
  }());
@@ -6366,10 +6702,10 @@ var StreamChat = /*#__PURE__*/function () {
6366
6702
  key: "updateAppSettings",
6367
6703
  value:
6368
6704
  /**
6369
- * updateAppSettings - updates application settings
6370
- *
6371
- * @param {AppSettings} options App settings.
6372
- * IE: {
6705
+ * updateAppSettings - updates application settings
6706
+ *
6707
+ * @param {AppSettings} options App settings.
6708
+ * IE: {
6373
6709
  "apn_config": {
6374
6710
  "auth_type": "token",
6375
6711
  "auth_key": fs.readFileSync(
@@ -6389,7 +6725,7 @@ var StreamChat = /*#__PURE__*/function () {
6389
6725
  },
6390
6726
  "webhook_url": "https://acme.com/my/awesome/webhook/"
6391
6727
  }
6392
- */
6728
+ */
6393
6729
  function () {
6394
6730
  var _updateAppSettings = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7(options) {
6395
6731
  var _options$apn_config;
@@ -6580,17 +6916,19 @@ var StreamChat = /*#__PURE__*/function () {
6580
6916
  return getAppSettings;
6581
6917
  }()
6582
6918
  /**
6583
- * testPushSettings - Tests the push settings for a user with a random chat message and the configured push templates
6584
- *
6585
- * @param {string} userID User ID. If user has no devices, it will error
6586
- * @param {TestPushDataInput} [data] Overrides for push templates/message used
6587
- * IE: {
6588
- messageID: 'id-of-message',//will error if message does not exist
6589
- apnTemplate: '{}', //if app doesn't have apn configured it will error
6590
- firebaseTemplate: '{}', //if app doesn't have firebase configured it will error
6591
- firebaseDataTemplate: '{}', //if app doesn't have firebase configured it will error
6592
- skipDevices: true, // skip config/device checks and sending to real devices
6593
- }
6919
+ * testPushSettings - Tests the push settings for a user with a random chat message and the configured push templates
6920
+ *
6921
+ * @param {string} userID User ID. If user has no devices, it will error
6922
+ * @param {TestPushDataInput} [data] Overrides for push templates/message used
6923
+ * IE: {
6924
+ messageID: 'id-of-message', // will error if message does not exist
6925
+ apnTemplate: '{}', // if app doesn't have apn configured it will error
6926
+ firebaseTemplate: '{}', // if app doesn't have firebase configured it will error
6927
+ firebaseDataTemplate: '{}', // if app doesn't have firebase configured it will error
6928
+ skipDevices: true, // skip config/device checks and sending to real devices
6929
+ pushProviderName: 'staging' // one of your configured push providers
6930
+ pushProviderType: 'apn' // one of supported provider types
6931
+ }
6594
6932
  */
6595
6933
 
6596
6934
  }, {
@@ -6605,7 +6943,7 @@ var StreamChat = /*#__PURE__*/function () {
6605
6943
  case 0:
6606
6944
  data = _args12.length > 1 && _args12[1] !== undefined ? _args12[1] : {};
6607
6945
  _context12.next = 3;
6608
- return this.post(this.baseURL + '/check_push', _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
6946
+ return this.post(this.baseURL + '/check_push', _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
6609
6947
  user_id: userID
6610
6948
  }, data.messageID ? {
6611
6949
  message_id: data.messageID
@@ -6617,6 +6955,10 @@ var StreamChat = /*#__PURE__*/function () {
6617
6955
  firebase_data_template: data.firebaseDataTemplate
6618
6956
  } : {}), data.skipDevices ? {
6619
6957
  skip_devices: true
6958
+ } : {}), data.pushProviderName ? {
6959
+ push_provider_name: data.pushProviderName
6960
+ } : {}), data.pushProviderType ? {
6961
+ push_provider_type: data.pushProviderType
6620
6962
  } : {}));
6621
6963
 
6622
6964
  case 3:
@@ -6640,11 +6982,11 @@ var StreamChat = /*#__PURE__*/function () {
6640
6982
  * testSQSSettings - Tests that the given or configured SQS configuration is valid
6641
6983
  *
6642
6984
  * @param {TestSQSDataInput} [data] Overrides SQS settings for testing if needed
6643
- * IE: {
6644
- sqs_key: 'auth_key',
6645
- sqs_secret: 'auth_secret',
6646
- sqs_url: 'url_to_queue',
6647
- }
6985
+ * IE: {
6986
+ sqs_key: 'auth_key',
6987
+ sqs_secret: 'auth_secret',
6988
+ sqs_url: 'url_to_queue',
6989
+ }
6648
6990
  */
6649
6991
 
6650
6992
  }, {
@@ -7441,11 +7783,11 @@ var StreamChat = /*#__PURE__*/function () {
7441
7783
  c.initialized = true;
7442
7784
 
7443
7785
  if (skipInitialization === undefined) {
7444
- c._initializeState(_channelState);
7786
+ c._initializeState(_channelState, 'latest');
7445
7787
  } else if (!skipInitialization.includes(_channelState.channel.id)) {
7446
7788
  c.state.clearMessages();
7447
7789
 
7448
- c._initializeState(_channelState);
7790
+ c._initializeState(_channelState, 'latest');
7449
7791
  }
7450
7792
 
7451
7793
  channels.push(c);
@@ -7582,23 +7924,26 @@ var StreamChat = /*#__PURE__*/function () {
7582
7924
  * @param {string} id the device id
7583
7925
  * @param {PushProvider} push_provider the push provider
7584
7926
  * @param {string} [userID] the user id (defaults to current user)
7927
+ * @param {string} [push_provider_name] user provided push provider name for multi bundle support
7585
7928
  *
7586
7929
  */
7587
7930
 
7588
7931
  }, {
7589
7932
  key: "addDevice",
7590
7933
  value: function () {
7591
- var _addDevice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(id, push_provider, userID) {
7934
+ var _addDevice = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(id, push_provider, userID, push_provider_name) {
7592
7935
  return _regeneratorRuntime.wrap(function _callee21$(_context21) {
7593
7936
  while (1) {
7594
7937
  switch (_context21.prev = _context21.next) {
7595
7938
  case 0:
7596
7939
  _context21.next = 2;
7597
- return this.post(this.baseURL + '/devices', _objectSpread({
7940
+ return this.post(this.baseURL + '/devices', _objectSpread(_objectSpread({
7598
7941
  id: id,
7599
7942
  push_provider: push_provider
7600
7943
  }, userID != null ? {
7601
7944
  user_id: userID
7945
+ } : {}), push_provider_name != null ? {
7946
+ push_provider_name: push_provider_name
7602
7947
  } : {}));
7603
7948
 
7604
7949
  case 2:
@@ -7612,7 +7957,7 @@ var StreamChat = /*#__PURE__*/function () {
7612
7957
  }, _callee21, this);
7613
7958
  }));
7614
7959
 
7615
- function addDevice(_x20, _x21, _x22) {
7960
+ function addDevice(_x20, _x21, _x22, _x23) {
7616
7961
  return _addDevice.apply(this, arguments);
7617
7962
  }
7618
7963
 
@@ -7650,7 +7995,7 @@ var StreamChat = /*#__PURE__*/function () {
7650
7995
  }, _callee22, this);
7651
7996
  }));
7652
7997
 
7653
- function getDevices(_x23) {
7998
+ function getDevices(_x24) {
7654
7999
  return _getDevices.apply(this, arguments);
7655
8000
  }
7656
8001
 
@@ -7690,7 +8035,7 @@ var StreamChat = /*#__PURE__*/function () {
7690
8035
  }, _callee23, this);
7691
8036
  }));
7692
8037
 
7693
- function removeDevice(_x24, _x25) {
8038
+ function removeDevice(_x25, _x26) {
7694
8039
  return _removeDevice.apply(this, arguments);
7695
8040
  }
7696
8041
 
@@ -7731,7 +8076,7 @@ var StreamChat = /*#__PURE__*/function () {
7731
8076
  }, _callee24, this);
7732
8077
  }));
7733
8078
 
7734
- function getRateLimits(_x26) {
8079
+ function getRateLimits(_x27) {
7735
8080
  return _getRateLimits.apply(this, arguments);
7736
8081
  }
7737
8082
 
@@ -7832,7 +8177,7 @@ var StreamChat = /*#__PURE__*/function () {
7832
8177
  }, _callee25, this);
7833
8178
  }));
7834
8179
 
7835
- function partialUpdateUser(_x27) {
8180
+ function partialUpdateUser(_x28) {
7836
8181
  return _partialUpdateUser.apply(this, arguments);
7837
8182
  }
7838
8183
 
@@ -7918,7 +8263,7 @@ var StreamChat = /*#__PURE__*/function () {
7918
8263
  }, _callee26, this, [[2, 13, 16, 19]]);
7919
8264
  }));
7920
8265
 
7921
- function upsertUsers(_x28) {
8266
+ function upsertUsers(_x29) {
7922
8267
  return _upsertUsers.apply(this, arguments);
7923
8268
  }
7924
8269
 
@@ -8031,7 +8376,7 @@ var StreamChat = /*#__PURE__*/function () {
8031
8376
  }, _callee27, this, [[1, 11, 14, 17]]);
8032
8377
  }));
8033
8378
 
8034
- function partialUpdateUsers(_x29) {
8379
+ function partialUpdateUsers(_x30) {
8035
8380
  return _partialUpdateUsers.apply(this, arguments);
8036
8381
  }
8037
8382
 
@@ -8059,7 +8404,7 @@ var StreamChat = /*#__PURE__*/function () {
8059
8404
  }, _callee28, this);
8060
8405
  }));
8061
8406
 
8062
- function deleteUser(_x30, _x31) {
8407
+ function deleteUser(_x31, _x32) {
8063
8408
  return _deleteUser.apply(this, arguments);
8064
8409
  }
8065
8410
 
@@ -8087,7 +8432,7 @@ var StreamChat = /*#__PURE__*/function () {
8087
8432
  }, _callee29, this);
8088
8433
  }));
8089
8434
 
8090
- function reactivateUser(_x32, _x33) {
8435
+ function reactivateUser(_x33, _x34) {
8091
8436
  return _reactivateUser.apply(this, arguments);
8092
8437
  }
8093
8438
 
@@ -8115,7 +8460,7 @@ var StreamChat = /*#__PURE__*/function () {
8115
8460
  }, _callee30, this);
8116
8461
  }));
8117
8462
 
8118
- function deactivateUser(_x34, _x35) {
8463
+ function deactivateUser(_x35, _x36) {
8119
8464
  return _deactivateUser.apply(this, arguments);
8120
8465
  }
8121
8466
 
@@ -8143,7 +8488,7 @@ var StreamChat = /*#__PURE__*/function () {
8143
8488
  }, _callee31, this);
8144
8489
  }));
8145
8490
 
8146
- function exportUser(_x36, _x37) {
8491
+ function exportUser(_x37, _x38) {
8147
8492
  return _exportUser.apply(this, arguments);
8148
8493
  }
8149
8494
 
@@ -8180,7 +8525,7 @@ var StreamChat = /*#__PURE__*/function () {
8180
8525
  }, _callee32, this);
8181
8526
  }));
8182
8527
 
8183
- function banUser(_x38, _x39) {
8528
+ function banUser(_x39, _x40) {
8184
8529
  return _banUser.apply(this, arguments);
8185
8530
  }
8186
8531
 
@@ -8217,7 +8562,7 @@ var StreamChat = /*#__PURE__*/function () {
8217
8562
  }, _callee33, this);
8218
8563
  }));
8219
8564
 
8220
- function unbanUser(_x40, _x41) {
8565
+ function unbanUser(_x41, _x42) {
8221
8566
  return _unbanUser.apply(this, arguments);
8222
8567
  }
8223
8568
 
@@ -8254,7 +8599,7 @@ var StreamChat = /*#__PURE__*/function () {
8254
8599
  }, _callee34, this);
8255
8600
  }));
8256
8601
 
8257
- function shadowBan(_x42, _x43) {
8602
+ function shadowBan(_x43, _x44) {
8258
8603
  return _shadowBan.apply(this, arguments);
8259
8604
  }
8260
8605
 
@@ -8291,7 +8636,7 @@ var StreamChat = /*#__PURE__*/function () {
8291
8636
  }, _callee35, this);
8292
8637
  }));
8293
8638
 
8294
- function removeShadowBan(_x44, _x45) {
8639
+ function removeShadowBan(_x45, _x46) {
8295
8640
  return _removeShadowBan.apply(this, arguments);
8296
8641
  }
8297
8642
 
@@ -8334,7 +8679,7 @@ var StreamChat = /*#__PURE__*/function () {
8334
8679
  }, _callee36, this);
8335
8680
  }));
8336
8681
 
8337
- function muteUser(_x46, _x47) {
8682
+ function muteUser(_x47, _x48) {
8338
8683
  return _muteUser.apply(this, arguments);
8339
8684
  }
8340
8685
 
@@ -8373,7 +8718,7 @@ var StreamChat = /*#__PURE__*/function () {
8373
8718
  }, _callee37, this);
8374
8719
  }));
8375
8720
 
8376
- function unmuteUser(_x48, _x49) {
8721
+ function unmuteUser(_x49, _x50) {
8377
8722
  return _unmuteUser.apply(this, arguments);
8378
8723
  }
8379
8724
 
@@ -8432,7 +8777,7 @@ var StreamChat = /*#__PURE__*/function () {
8432
8777
  }, _callee38, this);
8433
8778
  }));
8434
8779
 
8435
- function flagMessage(_x50) {
8780
+ function flagMessage(_x51) {
8436
8781
  return _flagMessage.apply(this, arguments);
8437
8782
  }
8438
8783
 
@@ -8472,7 +8817,7 @@ var StreamChat = /*#__PURE__*/function () {
8472
8817
  }, _callee39, this);
8473
8818
  }));
8474
8819
 
8475
- function flagUser(_x51) {
8820
+ function flagUser(_x52) {
8476
8821
  return _flagUser.apply(this, arguments);
8477
8822
  }
8478
8823
 
@@ -8512,7 +8857,7 @@ var StreamChat = /*#__PURE__*/function () {
8512
8857
  }, _callee40, this);
8513
8858
  }));
8514
8859
 
8515
- function unflagMessage(_x52) {
8860
+ function unflagMessage(_x53) {
8516
8861
  return _unflagMessage.apply(this, arguments);
8517
8862
  }
8518
8863
 
@@ -8552,7 +8897,7 @@ var StreamChat = /*#__PURE__*/function () {
8552
8897
  }, _callee41, this);
8553
8898
  }));
8554
8899
 
8555
- function unflagUser(_x53) {
8900
+ function unflagUser(_x54) {
8556
8901
  return _unflagUser.apply(this, arguments);
8557
8902
  }
8558
8903
 
@@ -8698,7 +9043,7 @@ var StreamChat = /*#__PURE__*/function () {
8698
9043
  }, _callee44, this);
8699
9044
  }));
8700
9045
 
8701
- function _reviewFlagReport(_x54, _x55) {
9046
+ function _reviewFlagReport(_x55, _x56) {
8702
9047
  return _reviewFlagReport2.apply(this, arguments);
8703
9048
  }
8704
9049
 
@@ -8744,7 +9089,7 @@ var StreamChat = /*#__PURE__*/function () {
8744
9089
  }, _callee45, this);
8745
9090
  }));
8746
9091
 
8747
- function _unblockMessage(_x56) {
9092
+ function _unblockMessage(_x57) {
8748
9093
  return _unblockMessage2.apply(this, arguments);
8749
9094
  }
8750
9095
 
@@ -8883,7 +9228,7 @@ var StreamChat = /*#__PURE__*/function () {
8883
9228
  }, _callee47, this);
8884
9229
  }));
8885
9230
 
8886
- function translateMessage(_x57, _x58) {
9231
+ function translateMessage(_x58, _x59) {
8887
9232
  return _translateMessage.apply(this, arguments);
8888
9233
  }
8889
9234
 
@@ -9045,7 +9390,7 @@ var StreamChat = /*#__PURE__*/function () {
9045
9390
  }, _callee48, this);
9046
9391
  }));
9047
9392
 
9048
- function updateMessage(_x59, _x60, _x61) {
9393
+ function updateMessage(_x60, _x61, _x62) {
9049
9394
  return _updateMessage.apply(this, arguments);
9050
9395
  }
9051
9396
 
@@ -9106,7 +9451,7 @@ var StreamChat = /*#__PURE__*/function () {
9106
9451
  }, _callee49, this);
9107
9452
  }));
9108
9453
 
9109
- function partialUpdateMessage(_x62, _x63, _x64, _x65) {
9454
+ function partialUpdateMessage(_x63, _x64, _x65, _x66) {
9110
9455
  return _partialUpdateMessage.apply(this, arguments);
9111
9456
  }
9112
9457
 
@@ -9143,7 +9488,7 @@ var StreamChat = /*#__PURE__*/function () {
9143
9488
  }, _callee50, this);
9144
9489
  }));
9145
9490
 
9146
- function deleteMessage(_x66, _x67) {
9491
+ function deleteMessage(_x67, _x68) {
9147
9492
  return _deleteMessage.apply(this, arguments);
9148
9493
  }
9149
9494
 
@@ -9171,7 +9516,7 @@ var StreamChat = /*#__PURE__*/function () {
9171
9516
  }, _callee51, this);
9172
9517
  }));
9173
9518
 
9174
- function getMessage(_x68) {
9519
+ function getMessage(_x69) {
9175
9520
  return _getMessage.apply(this, arguments);
9176
9521
  }
9177
9522
 
@@ -9180,7 +9525,7 @@ var StreamChat = /*#__PURE__*/function () {
9180
9525
  }, {
9181
9526
  key: "getUserAgent",
9182
9527
  value: function getUserAgent() {
9183
- return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "6.1.0");
9528
+ return this.userAgent || "stream-chat-javascript-client-".concat(this.node ? 'node' : 'browser', "-", "6.4.0");
9184
9529
  }
9185
9530
  }, {
9186
9531
  key: "setUserAgent",
@@ -9396,7 +9741,7 @@ var StreamChat = /*#__PURE__*/function () {
9396
9741
  }, _callee52, this);
9397
9742
  }));
9398
9743
 
9399
- function sendUserCustomEvent(_x69, _x70) {
9744
+ function sendUserCustomEvent(_x70, _x71) {
9400
9745
  return _sendUserCustomEvent.apply(this, arguments);
9401
9746
  }
9402
9747
 
@@ -9489,7 +9834,7 @@ var StreamChat = /*#__PURE__*/function () {
9489
9834
  }, _callee53, this);
9490
9835
  }));
9491
9836
 
9492
- function createSegment(_x71) {
9837
+ function createSegment(_x72) {
9493
9838
  return _createSegment.apply(this, arguments);
9494
9839
  }
9495
9840
 
@@ -9529,7 +9874,7 @@ var StreamChat = /*#__PURE__*/function () {
9529
9874
  }, _callee54, this);
9530
9875
  }));
9531
9876
 
9532
- function getSegment(_x72) {
9877
+ function getSegment(_x73) {
9533
9878
  return _getSegment.apply(this, arguments);
9534
9879
  }
9535
9880
 
@@ -9568,7 +9913,7 @@ var StreamChat = /*#__PURE__*/function () {
9568
9913
  }, _callee55, this);
9569
9914
  }));
9570
9915
 
9571
- function listSegments(_x73) {
9916
+ function listSegments(_x74) {
9572
9917
  return _listSegments.apply(this, arguments);
9573
9918
  }
9574
9919
 
@@ -9611,7 +9956,7 @@ var StreamChat = /*#__PURE__*/function () {
9611
9956
  }, _callee56, this);
9612
9957
  }));
9613
9958
 
9614
- function updateSegment(_x74, _x75) {
9959
+ function updateSegment(_x75, _x76) {
9615
9960
  return _updateSegment.apply(this, arguments);
9616
9961
  }
9617
9962
 
@@ -9643,7 +9988,7 @@ var StreamChat = /*#__PURE__*/function () {
9643
9988
  }, _callee57, this);
9644
9989
  }));
9645
9990
 
9646
- function deleteSegment(_x76) {
9991
+ function deleteSegment(_x77) {
9647
9992
  return _deleteSegment.apply(this, arguments);
9648
9993
  }
9649
9994
 
@@ -9685,7 +10030,7 @@ var StreamChat = /*#__PURE__*/function () {
9685
10030
  }, _callee58, this);
9686
10031
  }));
9687
10032
 
9688
- function createCampaign(_x77) {
10033
+ function createCampaign(_x78) {
9689
10034
  return _createCampaign.apply(this, arguments);
9690
10035
  }
9691
10036
 
@@ -9725,7 +10070,7 @@ var StreamChat = /*#__PURE__*/function () {
9725
10070
  }, _callee59, this);
9726
10071
  }));
9727
10072
 
9728
- function getCampaign(_x78) {
10073
+ function getCampaign(_x79) {
9729
10074
  return _getCampaign.apply(this, arguments);
9730
10075
  }
9731
10076
 
@@ -9764,7 +10109,7 @@ var StreamChat = /*#__PURE__*/function () {
9764
10109
  }, _callee60, this);
9765
10110
  }));
9766
10111
 
9767
- function listCampaigns(_x79) {
10112
+ function listCampaigns(_x80) {
9768
10113
  return _listCampaigns.apply(this, arguments);
9769
10114
  }
9770
10115
 
@@ -9807,7 +10152,7 @@ var StreamChat = /*#__PURE__*/function () {
9807
10152
  }, _callee61, this);
9808
10153
  }));
9809
10154
 
9810
- function updateCampaign(_x80, _x81) {
10155
+ function updateCampaign(_x81, _x82) {
9811
10156
  return _updateCampaign.apply(this, arguments);
9812
10157
  }
9813
10158
 
@@ -9839,7 +10184,7 @@ var StreamChat = /*#__PURE__*/function () {
9839
10184
  }, _callee62, this);
9840
10185
  }));
9841
10186
 
9842
- function deleteCampaign(_x82) {
10187
+ function deleteCampaign(_x83) {
9843
10188
  return _deleteCampaign.apply(this, arguments);
9844
10189
  }
9845
10190
 
@@ -9883,7 +10228,7 @@ var StreamChat = /*#__PURE__*/function () {
9883
10228
  }, _callee63, this);
9884
10229
  }));
9885
10230
 
9886
- function scheduleCampaign(_x83, _x84) {
10231
+ function scheduleCampaign(_x84, _x85) {
9887
10232
  return _scheduleCampaign.apply(this, arguments);
9888
10233
  }
9889
10234
 
@@ -9923,7 +10268,7 @@ var StreamChat = /*#__PURE__*/function () {
9923
10268
  }, _callee64, this);
9924
10269
  }));
9925
10270
 
9926
- function stopCampaign(_x85) {
10271
+ function stopCampaign(_x86) {
9927
10272
  return _stopCampaign.apply(this, arguments);
9928
10273
  }
9929
10274
 
@@ -9963,7 +10308,7 @@ var StreamChat = /*#__PURE__*/function () {
9963
10308
  }, _callee65, this);
9964
10309
  }));
9965
10310
 
9966
- function resumeCampaign(_x86) {
10311
+ function resumeCampaign(_x87) {
9967
10312
  return _resumeCampaign.apply(this, arguments);
9968
10313
  }
9969
10314
 
@@ -10006,7 +10351,7 @@ var StreamChat = /*#__PURE__*/function () {
10006
10351
  }, _callee66, this);
10007
10352
  }));
10008
10353
 
10009
- function testCampaign(_x87, _x88) {
10354
+ function testCampaign(_x88, _x89) {
10010
10355
  return _testCampaign.apply(this, arguments);
10011
10356
  }
10012
10357
 
@@ -10039,7 +10384,7 @@ var StreamChat = /*#__PURE__*/function () {
10039
10384
  }, _callee67, this);
10040
10385
  }));
10041
10386
 
10042
- function enrichURL(_x89) {
10387
+ function enrichURL(_x90) {
10043
10388
  return _enrichURL.apply(this, arguments);
10044
10389
  }
10045
10390
 
@@ -10071,7 +10416,7 @@ var StreamChat = /*#__PURE__*/function () {
10071
10416
  }, _callee68, this);
10072
10417
  }));
10073
10418
 
10074
- function getTask(_x90) {
10419
+ function getTask(_x91) {
10075
10420
  return _getTask.apply(this, arguments);
10076
10421
  }
10077
10422
 
@@ -10113,7 +10458,7 @@ var StreamChat = /*#__PURE__*/function () {
10113
10458
  }, _callee69, this);
10114
10459
  }));
10115
10460
 
10116
- function deleteChannels(_x91) {
10461
+ function deleteChannels(_x92) {
10117
10462
  return _deleteChannels.apply(this, arguments);
10118
10463
  }
10119
10464
 
@@ -10176,14 +10521,14 @@ var StreamChat = /*#__PURE__*/function () {
10176
10521
  }, _callee70, this);
10177
10522
  }));
10178
10523
 
10179
- function deleteUsers(_x92, _x93) {
10524
+ function deleteUsers(_x93, _x94) {
10180
10525
  return _deleteUsers.apply(this, arguments);
10181
10526
  }
10182
10527
 
10183
10528
  return deleteUsers;
10184
10529
  }()
10185
10530
  /**
10186
- * _createImport - Create an Import Task.
10531
+ * _createImportURL - Create an Import upload url.
10187
10532
  *
10188
10533
  * Note: Do not use this.
10189
10534
  * It is present for internal usage only.
@@ -10191,20 +10536,19 @@ var StreamChat = /*#__PURE__*/function () {
10191
10536
  *
10192
10537
  * @private
10193
10538
  * @param {string} filename filename of uploaded data
10194
- *
10195
10539
  * @return {APIResponse & CreateImportResponse} An ImportTask
10196
10540
  */
10197
10541
 
10198
10542
  }, {
10199
- key: "_createImport",
10543
+ key: "_createImportURL",
10200
10544
  value: function () {
10201
- var _createImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee71(filename) {
10545
+ var _createImportURL2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee71(filename) {
10202
10546
  return _regeneratorRuntime.wrap(function _callee71$(_context71) {
10203
10547
  while (1) {
10204
10548
  switch (_context71.prev = _context71.next) {
10205
10549
  case 0:
10206
10550
  _context71.next = 2;
10207
- return this.post(this.baseURL + "/imports", {
10551
+ return this.post(this.baseURL + "/import_urls", {
10208
10552
  filename: filename
10209
10553
  });
10210
10554
 
@@ -10219,7 +10563,55 @@ var StreamChat = /*#__PURE__*/function () {
10219
10563
  }, _callee71, this);
10220
10564
  }));
10221
10565
 
10222
- function _createImport(_x94) {
10566
+ function _createImportURL(_x95) {
10567
+ return _createImportURL2.apply(this, arguments);
10568
+ }
10569
+
10570
+ return _createImportURL;
10571
+ }()
10572
+ /**
10573
+ * _createImport - Create an Import Task.
10574
+ *
10575
+ * Note: Do not use this.
10576
+ * It is present for internal usage only.
10577
+ * This function can, and will, break and/or be removed at any point in time.
10578
+ *
10579
+ * @private
10580
+ * @param {string} path path of uploaded data
10581
+ * @param {CreateImportOptions} options import options
10582
+ * @return {APIResponse & CreateImportResponse} An ImportTask
10583
+ */
10584
+
10585
+ }, {
10586
+ key: "_createImport",
10587
+ value: function () {
10588
+ var _createImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee72(path) {
10589
+ var options,
10590
+ _args72 = arguments;
10591
+ return _regeneratorRuntime.wrap(function _callee72$(_context72) {
10592
+ while (1) {
10593
+ switch (_context72.prev = _context72.next) {
10594
+ case 0:
10595
+ options = _args72.length > 1 && _args72[1] !== undefined ? _args72[1] : {
10596
+ mode: 'upsert'
10597
+ };
10598
+ _context72.next = 3;
10599
+ return this.post(this.baseURL + "/imports", _objectSpread({
10600
+ path: path
10601
+ }, options));
10602
+
10603
+ case 3:
10604
+ return _context72.abrupt("return", _context72.sent);
10605
+
10606
+ case 4:
10607
+ case "end":
10608
+ return _context72.stop();
10609
+ }
10610
+ }
10611
+ }, _callee72, this);
10612
+ }));
10613
+
10614
+ function _createImport(_x96) {
10223
10615
  return _createImport2.apply(this, arguments);
10224
10616
  }
10225
10617
 
@@ -10241,26 +10633,26 @@ var StreamChat = /*#__PURE__*/function () {
10241
10633
  }, {
10242
10634
  key: "_getImport",
10243
10635
  value: function () {
10244
- var _getImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee72(id) {
10245
- return _regeneratorRuntime.wrap(function _callee72$(_context72) {
10636
+ var _getImport2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee73(id) {
10637
+ return _regeneratorRuntime.wrap(function _callee73$(_context73) {
10246
10638
  while (1) {
10247
- switch (_context72.prev = _context72.next) {
10639
+ switch (_context73.prev = _context73.next) {
10248
10640
  case 0:
10249
- _context72.next = 2;
10641
+ _context73.next = 2;
10250
10642
  return this.get(this.baseURL + "/imports/".concat(id));
10251
10643
 
10252
10644
  case 2:
10253
- return _context72.abrupt("return", _context72.sent);
10645
+ return _context73.abrupt("return", _context73.sent);
10254
10646
 
10255
10647
  case 3:
10256
10648
  case "end":
10257
- return _context72.stop();
10649
+ return _context73.stop();
10258
10650
  }
10259
10651
  }
10260
- }, _callee72, this);
10652
+ }, _callee73, this);
10261
10653
  }));
10262
10654
 
10263
- function _getImport(_x95) {
10655
+ function _getImport(_x97) {
10264
10656
  return _getImport2.apply(this, arguments);
10265
10657
  }
10266
10658
 
@@ -10282,31 +10674,147 @@ var StreamChat = /*#__PURE__*/function () {
10282
10674
  }, {
10283
10675
  key: "_listImports",
10284
10676
  value: function () {
10285
- var _listImports2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee73(options) {
10286
- return _regeneratorRuntime.wrap(function _callee73$(_context73) {
10677
+ var _listImports2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee74(options) {
10678
+ return _regeneratorRuntime.wrap(function _callee74$(_context74) {
10287
10679
  while (1) {
10288
- switch (_context73.prev = _context73.next) {
10680
+ switch (_context74.prev = _context74.next) {
10289
10681
  case 0:
10290
- _context73.next = 2;
10682
+ _context74.next = 2;
10291
10683
  return this.get(this.baseURL + "/imports", options);
10292
10684
 
10293
10685
  case 2:
10294
- return _context73.abrupt("return", _context73.sent);
10686
+ return _context74.abrupt("return", _context74.sent);
10295
10687
 
10296
10688
  case 3:
10297
10689
  case "end":
10298
- return _context73.stop();
10690
+ return _context74.stop();
10299
10691
  }
10300
10692
  }
10301
- }, _callee73, this);
10693
+ }, _callee74, this);
10302
10694
  }));
10303
10695
 
10304
- function _listImports(_x96) {
10696
+ function _listImports(_x98) {
10305
10697
  return _listImports2.apply(this, arguments);
10306
10698
  }
10307
10699
 
10308
10700
  return _listImports;
10309
10701
  }()
10702
+ /**
10703
+ * upsertPushProvider - Create or Update a push provider
10704
+ *
10705
+ * Note: Works only for v2 push version is enabled on app settings.
10706
+ *
10707
+ * @param {PushProviderConfig} configuration of the provider you want to create or update
10708
+ *
10709
+ * @return {APIResponse & PushProviderUpsertResponse} A push provider
10710
+ */
10711
+
10712
+ }, {
10713
+ key: "upsertPushProvider",
10714
+ value: function () {
10715
+ var _upsertPushProvider = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee75(pushProvider) {
10716
+ return _regeneratorRuntime.wrap(function _callee75$(_context75) {
10717
+ while (1) {
10718
+ switch (_context75.prev = _context75.next) {
10719
+ case 0:
10720
+ _context75.next = 2;
10721
+ return this.post(this.baseURL + "/push_providers", {
10722
+ push_provider: pushProvider
10723
+ });
10724
+
10725
+ case 2:
10726
+ return _context75.abrupt("return", _context75.sent);
10727
+
10728
+ case 3:
10729
+ case "end":
10730
+ return _context75.stop();
10731
+ }
10732
+ }
10733
+ }, _callee75, this);
10734
+ }));
10735
+
10736
+ function upsertPushProvider(_x99) {
10737
+ return _upsertPushProvider.apply(this, arguments);
10738
+ }
10739
+
10740
+ return upsertPushProvider;
10741
+ }()
10742
+ /**
10743
+ * deletePushProvider - Delete a push provider
10744
+ *
10745
+ * Note: Works only for v2 push version is enabled on app settings.
10746
+ *
10747
+ * @param {PushProviderID} type and foreign id of the push provider to be deleted
10748
+ *
10749
+ * @return {APIResponse} An API response
10750
+ */
10751
+
10752
+ }, {
10753
+ key: "deletePushProvider",
10754
+ value: function () {
10755
+ var _deletePushProvider = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee76(_ref8) {
10756
+ var type, name;
10757
+ return _regeneratorRuntime.wrap(function _callee76$(_context76) {
10758
+ while (1) {
10759
+ switch (_context76.prev = _context76.next) {
10760
+ case 0:
10761
+ type = _ref8.type, name = _ref8.name;
10762
+ _context76.next = 3;
10763
+ return this.delete(this.baseURL + "/push_providers/".concat(type, "/").concat(name));
10764
+
10765
+ case 3:
10766
+ return _context76.abrupt("return", _context76.sent);
10767
+
10768
+ case 4:
10769
+ case "end":
10770
+ return _context76.stop();
10771
+ }
10772
+ }
10773
+ }, _callee76, this);
10774
+ }));
10775
+
10776
+ function deletePushProvider(_x100) {
10777
+ return _deletePushProvider.apply(this, arguments);
10778
+ }
10779
+
10780
+ return deletePushProvider;
10781
+ }()
10782
+ /**
10783
+ * listPushProviders - Get all push providers in the app
10784
+ *
10785
+ * Note: Works only for v2 push version is enabled on app settings.
10786
+ *
10787
+ * @return {APIResponse & PushProviderListResponse} A push provider
10788
+ */
10789
+
10790
+ }, {
10791
+ key: "listPushProviders",
10792
+ value: function () {
10793
+ var _listPushProviders = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee77() {
10794
+ return _regeneratorRuntime.wrap(function _callee77$(_context77) {
10795
+ while (1) {
10796
+ switch (_context77.prev = _context77.next) {
10797
+ case 0:
10798
+ _context77.next = 2;
10799
+ return this.get(this.baseURL + "/push_providers");
10800
+
10801
+ case 2:
10802
+ return _context77.abrupt("return", _context77.sent);
10803
+
10804
+ case 3:
10805
+ case "end":
10806
+ return _context77.stop();
10807
+ }
10808
+ }
10809
+ }, _callee77, this);
10810
+ }));
10811
+
10812
+ function listPushProviders() {
10813
+ return _listPushProviders.apply(this, arguments);
10814
+ }
10815
+
10816
+ return listPushProviders;
10817
+ }()
10310
10818
  }], [{
10311
10819
  key: "getInstance",
10312
10820
  value: function getInstance(key, secretOrOptions, options) {