stream-chat-react-native-core 8.9.2 → 8.10.0-beta.1

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.
Files changed (47) hide show
  1. package/lib/commonjs/components/Channel/Channel.js +86 -60
  2. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  3. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +2 -1
  4. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  5. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -1
  6. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  7. package/lib/commonjs/components/MessageList/MessageFlashList.js +1 -1
  8. package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
  9. package/lib/commonjs/components/MessageList/MessageList.js +1 -1
  10. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  11. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +5 -5
  12. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  13. package/lib/commonjs/store/SqliteClient.js +0 -2
  14. package/lib/commonjs/store/SqliteClient.js.map +1 -1
  15. package/lib/commonjs/version.json +1 -1
  16. package/lib/module/components/Channel/Channel.js +86 -60
  17. package/lib/module/components/Channel/Channel.js.map +1 -1
  18. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +2 -1
  19. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  20. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +3 -1
  21. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  22. package/lib/module/components/MessageList/MessageFlashList.js +1 -1
  23. package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
  24. package/lib/module/components/MessageList/MessageList.js +1 -1
  25. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  26. package/lib/module/contexts/messageInputContext/MessageInputContext.js +5 -5
  27. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  28. package/lib/module/store/SqliteClient.js +0 -2
  29. package/lib/module/store/SqliteClient.js.map +1 -1
  30. package/lib/module/version.json +1 -1
  31. package/lib/typescript/components/Channel/Channel.d.ts +25 -1
  32. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  33. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
  34. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  35. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  36. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -0
  37. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  38. package/lib/typescript/store/SqliteClient.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/components/Channel/Channel.tsx +83 -31
  41. package/src/components/Channel/hooks/useCreateChannelContext.ts +3 -1
  42. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +9 -1
  43. package/src/components/MessageList/MessageFlashList.tsx +1 -1
  44. package/src/components/MessageList/MessageList.tsx +1 -1
  45. package/src/contexts/messageInputContext/MessageInputContext.tsx +13 -4
  46. package/src/store/SqliteClient.ts +0 -1
  47. package/src/version.json +1 -1
@@ -47,7 +47,6 @@ var _useAttachmentPickerBottomSheet = require("../../hooks/useAttachmentPickerBo
47
47
  var _usePrunableMessageList = require("../../hooks/usePrunableMessageList");
48
48
  var _icons = require("../../icons");
49
49
  var _native = require("../../native");
50
- var dbApi = _interopRequireWildcard(require("../../store/apis"));
51
50
  var _types = require("../../types/types");
52
51
  var _addReactionToLocalState = require("../../utils/addReactionToLocalState");
53
52
  var _compressImage = require("../../utils/compressImage");
@@ -292,12 +291,15 @@ var ChannelWithContext = function ChannelWithContext(props) {
292
291
  doFileUploadRequest = props.doFileUploadRequest,
293
292
  doMarkReadRequest = props.doMarkReadRequest,
294
293
  doSendMessageRequest = props.doSendMessageRequest,
294
+ preSendMessageRequest = props.preSendMessageRequest,
295
295
  doUpdateMessageRequest = props.doUpdateMessageRequest,
296
296
  _props$EmptyStateIndi = props.EmptyStateIndicator,
297
297
  EmptyStateIndicator = _props$EmptyStateIndi === void 0 ? _EmptyStateIndicator.EmptyStateIndicator : _props$EmptyStateIndi,
298
298
  _props$enableMessageG = props.enableMessageGroupingByUser,
299
299
  enableMessageGroupingByUser = _props$enableMessageG === void 0 ? true : _props$enableMessageG,
300
300
  enableOfflineSupport = props.enableOfflineSupport,
301
+ _props$allowSendBefor = props.allowSendBeforeAttachmentsUpload,
302
+ allowSendBeforeAttachmentsUpload = _props$allowSendBefor === void 0 ? enableOfflineSupport : _props$allowSendBefor,
301
303
  _props$enableSwipeToR = props.enableSwipeToReply,
302
304
  enableSwipeToReply = _props$enableSwipeToR === void 0 ? true : _props$enableSwipeToR,
303
305
  _props$enforceUniqueR = props.enforceUniqueReaction,
@@ -513,7 +515,9 @@ var ChannelWithContext = function ChannelWithContext(props) {
513
515
  _props$VideoThumbnail = props.VideoThumbnail,
514
516
  VideoThumbnail = _props$VideoThumbnail === void 0 ? _VideoThumbnail.VideoThumbnail : _props$VideoThumbnail,
515
517
  isOnline = props.isOnline,
516
- maximumMessageLimit = props.maximumMessageLimit;
518
+ maximumMessageLimit = props.maximumMessageLimit,
519
+ _props$initializeOnMo = props.initializeOnMount,
520
+ initializeOnMount = _props$initializeOnMo === void 0 ? true : _props$initializeOnMo;
517
521
  var threadProps = threadFromProps.thread,
518
522
  threadInstance = threadFromProps.threadInstance;
519
523
  var StopMessageStreamingButton = StopMessageStreamingButtonOverride === undefined ? _StopMessageStreamingButton.StopMessageStreamingButton : StopMessageStreamingButtonOverride;
@@ -648,7 +652,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
648
652
  if (event.type === 'channel.truncated' && event.cid === channel.cid) {
649
653
  setChannelUnreadState(undefined);
650
654
  }
651
- if (channel && channel.initialized) {
655
+ if (channel) {
652
656
  if (event.type === 'message.new' || event.type === 'notification.message_new') {
653
657
  var _event$message$id, _event$message2, _event$user2;
654
658
  var _messageId = (_event$message$id = (_event$message2 = event.message) == null ? void 0 : _event$message2.id) != null ? _event$message$id : '';
@@ -677,13 +681,14 @@ var ChannelWithContext = function ChannelWithContext(props) {
677
681
  return;
678
682
  }
679
683
  var errored = false;
680
- if (!channel.initialized || !channel.state.isUpToDate) {
684
+ if (!channel.initialized || !channel.state.isUpToDate || !initializeOnMount) {
681
685
  try {
682
686
  yield channel == null ? void 0 : channel.watch();
683
687
  } catch (err) {
684
688
  console.warn('Channel watch request failed with error:', err);
685
689
  setError(true);
686
690
  errored = true;
691
+ channel.offlineMode = true;
687
692
  }
688
693
  }
689
694
  if (!errored) {
@@ -828,7 +833,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
828
833
  }
829
834
  }));
830
835
  var resyncChannel = (0, _hooks.useStableCallback)((0, _asyncToGenerator2.default)(function* () {
831
- if (!channel || syncingChannelRef.current) {
836
+ if (!channel || syncingChannelRef.current || !channel.initialized && !channel.offlineMode) {
832
837
  return;
833
838
  }
834
839
  syncingChannelRef.current = true;
@@ -848,6 +853,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
848
853
  limit: channelMessagesState.messages.length + 30
849
854
  }
850
855
  });
856
+ channel.offlineMode = false;
851
857
  }
852
858
  if (!thread) {
853
859
  var _channelMessagesState;
@@ -1000,7 +1006,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1000
1006
  var image = attachment.originalFile;
1001
1007
  var file = attachment.originalFile;
1002
1008
  if (attachment.type === _types.FileTypes.Image && image != null && image.uri) {
1003
- var _image$name;
1009
+ var _image$name, _client$offlineDb;
1004
1010
  var filename = (_image$name = image.name) != null ? _image$name : (0, _utils.getFileNameFromPath)(image.uri);
1005
1011
  var controller = uploadAbortControllerRef.current.get(filename);
1006
1012
  if (controller) {
@@ -1012,13 +1018,18 @@ var ChannelWithContext = function ChannelWithContext(props) {
1012
1018
  var uploadResponse = doFileUploadRequest ? yield doFileUploadRequest(image) : yield channel.sendImage(compressedUri, filename, contentType);
1013
1019
  attachment.image_url = uploadResponse.file;
1014
1020
  delete attachment.originalFile;
1015
- yield dbApi.updateMessage({
1016
- message: Object.assign({}, updatedMessage, {
1017
- cid: channel.cid
1018
- })
1021
+ (_client$offlineDb = client.offlineDb) == null || _client$offlineDb.executeQuerySafely(function (db) {
1022
+ return db.updateMessage({
1023
+ message: Object.assign({}, updatedMessage, {
1024
+ cid: channel.cid
1025
+ })
1026
+ });
1027
+ }, {
1028
+ method: 'updateMessage'
1019
1029
  });
1020
1030
  }
1021
1031
  if (attachment.type !== _types.FileTypes.Image && file != null && file.uri) {
1032
+ var _client$offlineDb2;
1022
1033
  var _controller = uploadAbortControllerRef.current.get(file.name);
1023
1034
  if (_controller) {
1024
1035
  _controller.abort();
@@ -1030,10 +1041,14 @@ var ChannelWithContext = function ChannelWithContext(props) {
1030
1041
  attachment.thumb_url = response.thumb_url;
1031
1042
  }
1032
1043
  delete attachment.originalFile;
1033
- yield dbApi.updateMessage({
1034
- message: Object.assign({}, updatedMessage, {
1035
- cid: channel.cid
1036
- })
1044
+ (_client$offlineDb2 = client.offlineDb) == null || _client$offlineDb2.executeQuerySafely(function (db) {
1045
+ return db.updateMessage({
1046
+ message: Object.assign({}, updatedMessage, {
1047
+ cid: channel.cid
1048
+ })
1049
+ });
1050
+ }, {
1051
+ method: 'updateMessage'
1037
1052
  });
1038
1053
  }
1039
1054
  }
@@ -1051,30 +1066,28 @@ var ChannelWithContext = function ChannelWithContext(props) {
1051
1066
  options = _ref10.options,
1052
1067
  retrying = _ref10.retrying;
1053
1068
  var failedMessageUpdated = false;
1054
- var handleFailedMessage = function () {
1055
- var _ref12 = (0, _asyncToGenerator2.default)(function* () {
1056
- if (!failedMessageUpdated) {
1057
- var updatedMessage = Object.assign({}, localMessage, {
1058
- cid: channel.cid,
1059
- status: _utils.MessageStatusTypes.FAILED
1060
- });
1061
- updateMessage(updatedMessage);
1062
- threadInstance == null || threadInstance.upsertReplyLocally == null || threadInstance.upsertReplyLocally({
1069
+ var handleFailedMessage = function handleFailedMessage() {
1070
+ if (!failedMessageUpdated) {
1071
+ var _client$offlineDb3;
1072
+ var updatedMessage = Object.assign({}, localMessage, {
1073
+ cid: channel.cid,
1074
+ status: _utils.MessageStatusTypes.FAILED
1075
+ });
1076
+ updateMessage(updatedMessage);
1077
+ threadInstance == null || threadInstance.upsertReplyLocally == null || threadInstance.upsertReplyLocally({
1078
+ message: updatedMessage
1079
+ });
1080
+ optimisticallyUpdatedNewMessages.delete(localMessage.id);
1081
+ (_client$offlineDb3 = client.offlineDb) == null || _client$offlineDb3.executeQuerySafely(function (db) {
1082
+ return db.updateMessage({
1063
1083
  message: updatedMessage
1064
1084
  });
1065
- optimisticallyUpdatedNewMessages.delete(localMessage.id);
1066
- if (enableOfflineSupport) {
1067
- yield dbApi.updateMessage({
1068
- message: updatedMessage
1069
- });
1070
- }
1071
- failedMessageUpdated = true;
1072
- }
1073
- });
1074
- return function handleFailedMessage() {
1075
- return _ref12.apply(this, arguments);
1076
- };
1077
- }();
1085
+ }, {
1086
+ method: 'updateMessage'
1087
+ });
1088
+ failedMessageUpdated = true;
1089
+ }
1090
+ };
1078
1091
  try {
1079
1092
  var _messageResponse;
1080
1093
  if (!isOnline) {
@@ -1098,16 +1111,19 @@ var ChannelWithContext = function ChannelWithContext(props) {
1098
1111
  messageResponse = yield channel.sendMessage(messageData, options);
1099
1112
  }
1100
1113
  if ((_messageResponse = messageResponse) != null && _messageResponse.message) {
1114
+ var _client$offlineDb4;
1101
1115
  var newMessageResponse = Object.assign({}, messageResponse.message, {
1102
1116
  status: _utils.MessageStatusTypes.RECEIVED
1103
1117
  });
1104
- if (enableOfflineSupport) {
1105
- yield dbApi.updateMessage({
1118
+ (_client$offlineDb4 = client.offlineDb) == null || _client$offlineDb4.executeQuerySafely(function (db) {
1119
+ return db.updateMessage({
1106
1120
  message: Object.assign({}, newMessageResponse, {
1107
1121
  cid: channel.cid
1108
1122
  })
1109
1123
  });
1110
- }
1124
+ }, {
1125
+ method: 'updateMessage'
1126
+ });
1111
1127
  if (retrying) {
1112
1128
  replaceMessage(localMessage, newMessageResponse);
1113
1129
  } else {
@@ -1124,11 +1140,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1124
1140
  };
1125
1141
  }());
1126
1142
  var sendMessage = (0, _hooks.useStableCallback)(function () {
1127
- var _ref14 = (0, _asyncToGenerator2.default)(function* (_ref13) {
1128
- var _channel$state;
1129
- var localMessage = _ref13.localMessage,
1130
- message = _ref13.message,
1131
- options = _ref13.options;
1143
+ var _ref13 = (0, _asyncToGenerator2.default)(function* (_ref12) {
1144
+ var _channel$state, _client$offlineDb5;
1145
+ var localMessage = _ref12.localMessage,
1146
+ message = _ref12.message,
1147
+ options = _ref12.options;
1132
1148
  if (channel != null && (_channel$state = channel.state) != null && _channel$state.filterErrorMessages) {
1133
1149
  channel.state.filterErrorMessages();
1134
1150
  }
@@ -1137,13 +1153,22 @@ var ChannelWithContext = function ChannelWithContext(props) {
1137
1153
  message: localMessage
1138
1154
  });
1139
1155
  optimisticallyUpdatedNewMessages.add(localMessage.id);
1140
- if (enableOfflineSupport) {
1141
- yield dbApi.upsertMessages({
1156
+ (_client$offlineDb5 = client.offlineDb) == null || _client$offlineDb5.executeQuerySafely(function (db) {
1157
+ return db.upsertMessages({
1142
1158
  messages: [Object.assign({}, localMessage, {
1143
1159
  cid: channel.cid,
1144
1160
  status: _utils.MessageStatusTypes.FAILED
1145
1161
  })]
1146
1162
  });
1163
+ }, {
1164
+ method: 'upsertMessages'
1165
+ });
1166
+ if (preSendMessageRequest) {
1167
+ yield preSendMessageRequest({
1168
+ localMessage: localMessage,
1169
+ message: message,
1170
+ options: options
1171
+ });
1147
1172
  }
1148
1173
  yield sendMessageRequest({
1149
1174
  localMessage: localMessage,
@@ -1152,11 +1177,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1152
1177
  });
1153
1178
  });
1154
1179
  return function (_x5) {
1155
- return _ref14.apply(this, arguments);
1180
+ return _ref13.apply(this, arguments);
1156
1181
  };
1157
1182
  }());
1158
1183
  var retrySendMessage = (0, _hooks.useStableCallback)(function () {
1159
- var _ref15 = (0, _asyncToGenerator2.default)(function* (localMessage) {
1184
+ var _ref14 = (0, _asyncToGenerator2.default)(function* (localMessage) {
1160
1185
  var statusPendingMessage = Object.assign({}, localMessage, {
1161
1186
  status: _utils.MessageStatusTypes.SENDING
1162
1187
  });
@@ -1171,16 +1196,16 @@ var ChannelWithContext = function ChannelWithContext(props) {
1171
1196
  });
1172
1197
  });
1173
1198
  return function (_x6) {
1174
- return _ref15.apply(this, arguments);
1199
+ return _ref14.apply(this, arguments);
1175
1200
  };
1176
1201
  }());
1177
- var editMessage = (0, _hooks.useStableCallback)(function (_ref16) {
1178
- var localMessage = _ref16.localMessage,
1179
- options = _ref16.options;
1202
+ var editMessage = (0, _hooks.useStableCallback)(function (_ref15) {
1203
+ var localMessage = _ref15.localMessage,
1204
+ options = _ref15.options;
1180
1205
  return doUpdateMessageRequest ? doUpdateMessageRequest((channel == null ? void 0 : channel.cid) || '', localMessage, options) : client.updateMessage(localMessage, undefined, options);
1181
1206
  });
1182
1207
  var removeMessage = (0, _hooks.useStableCallback)(function () {
1183
- var _ref17 = (0, _asyncToGenerator2.default)(function* (message) {
1208
+ var _ref16 = (0, _asyncToGenerator2.default)(function* (message) {
1184
1209
  if (channel) {
1185
1210
  channel.state.removeMessage(message);
1186
1211
  copyMessagesStateFromChannel(channel);
@@ -1195,11 +1220,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1195
1220
  }
1196
1221
  });
1197
1222
  return function (_x7) {
1198
- return _ref17.apply(this, arguments);
1223
+ return _ref16.apply(this, arguments);
1199
1224
  };
1200
1225
  }());
1201
1226
  var sendReaction = (0, _hooks.useStableCallback)(function () {
1202
- var _ref18 = (0, _asyncToGenerator2.default)(function* (type, messageId) {
1227
+ var _ref17 = (0, _asyncToGenerator2.default)(function* (type, messageId) {
1203
1228
  if (!(channel != null && channel.id) || !client.user) {
1204
1229
  throw new Error('Channel has not been initialized');
1205
1230
  }
@@ -1226,11 +1251,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1226
1251
  }
1227
1252
  });
1228
1253
  return function (_x8, _x9) {
1229
- return _ref18.apply(this, arguments);
1254
+ return _ref17.apply(this, arguments);
1230
1255
  };
1231
1256
  }());
1232
1257
  var deleteMessage = (0, _hooks.useStableCallback)(function () {
1233
- var _ref19 = (0, _asyncToGenerator2.default)(function* (message) {
1258
+ var _ref18 = (0, _asyncToGenerator2.default)(function* (message) {
1234
1259
  var optionsOrHardDelete = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1235
1260
  var options = {};
1236
1261
  if (typeof optionsOrHardDelete === 'boolean') {
@@ -1268,11 +1293,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
1268
1293
  }
1269
1294
  });
1270
1295
  return function (_x10) {
1271
- return _ref19.apply(this, arguments);
1296
+ return _ref18.apply(this, arguments);
1272
1297
  };
1273
1298
  }());
1274
1299
  var deleteReaction = (0, _hooks.useStableCallback)(function () {
1275
- var _ref20 = (0, _asyncToGenerator2.default)(function* (type, messageId) {
1300
+ var _ref19 = (0, _asyncToGenerator2.default)(function* (type, messageId) {
1276
1301
  if (!(channel != null && channel.id) || !client.user) {
1277
1302
  throw new Error('Channel has not been initialized');
1278
1303
  }
@@ -1289,7 +1314,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1289
1314
  yield channel.deleteReaction.apply(channel, payload);
1290
1315
  });
1291
1316
  return function (_x11, _x12) {
1292
- return _ref20.apply(this, arguments);
1317
+ return _ref19.apply(this, arguments);
1293
1318
  };
1294
1319
  }());
1295
1320
  var openThread = (0, _react.useCallback)(function (message) {
@@ -1411,6 +1436,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
1411
1436
  });
1412
1437
  var inputMessageInputContext = (0, _useCreateInputMessageInputContext.useCreateInputMessageInputContext)({
1413
1438
  additionalTextInputProps: additionalTextInputProps,
1439
+ allowSendBeforeAttachmentsUpload: allowSendBeforeAttachmentsUpload,
1414
1440
  asyncMessagesLockDistance: asyncMessagesLockDistance,
1415
1441
  asyncMessagesMinimumPressDuration: asyncMessagesMinimumPressDuration,
1416
1442
  asyncMessagesMultiSendEnabled: asyncMessagesMultiSendEnabled,