sceyt-chat-react-uikit 1.7.4-beta.6 → 1.7.4-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.js +223 -137
  2. package/index.modern.js +223 -137
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -10304,6 +10304,11 @@ var setPendingMessage = function setPendingMessage(channelId, pendingMessage) {
10304
10304
  var getPendingMessagesMap = function getPendingMessagesMap() {
10305
10305
  return pendingMessagesMap;
10306
10306
  };
10307
+ var clearPendingMessagesMap = function clearPendingMessagesMap() {
10308
+ Object.keys(pendingMessagesMap).forEach(function (channelId) {
10309
+ delete pendingMessagesMap[channelId];
10310
+ });
10311
+ };
10307
10312
  var draftMessagesMap = {};
10308
10313
  var audioRecordingMap = {};
10309
10314
  var getDraftMessageFromMap = function getDraftMessageFromMap(channelId) {
@@ -18245,9 +18250,15 @@ function sendMessage(action) {
18245
18250
  _t2 = _context3.v;
18246
18251
  log.error('error on send message ... ', _t2);
18247
18252
  case 19:
18253
+ _context3.p = 19;
18254
+ _context3.n = 20;
18255
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18256
+ case 20:
18257
+ return _context3.f(19);
18258
+ case 21:
18248
18259
  return _context3.a(2);
18249
18260
  }
18250
- }, _marked$3, null, [[1, 18]]);
18261
+ }, _marked$3, null, [[1, 18, 19, 21]]);
18251
18262
  }
18252
18263
  function sendTextMessage(action) {
18253
18264
  var payload, message, connectionState, channelId, channel, sendMessageTid, activeChannelId, SceytChatClient, createChannelData, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, messageToSend, pendingMessage, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t3;
@@ -18403,15 +18414,12 @@ function sendTextMessage(action) {
18403
18414
  throw new Error('Connection required to send message');
18404
18415
  case 17:
18405
18416
  _context4.n = 18;
18406
- return effects.put(getMessagesAC(channel, true, channel.lastMessage.id, undefined, undefined, false));
18407
- case 18:
18408
- _context4.n = 19;
18409
18417
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18410
- case 19:
18411
- _context4.n = 22;
18418
+ case 18:
18419
+ _context4.n = 21;
18412
18420
  break;
18413
- case 20:
18414
- _context4.p = 20;
18421
+ case 19:
18422
+ _context4.p = 19;
18415
18423
  _t3 = _context4.v;
18416
18424
  log.error('error on send text message ... ', _t3);
18417
18425
  updateMessageOnMap(channel.id, {
@@ -18421,23 +18429,23 @@ function sendTextMessage(action) {
18421
18429
  }
18422
18430
  });
18423
18431
  if (!(activeChannelId === channel.id)) {
18424
- _context4.n = 21;
18432
+ _context4.n = 20;
18425
18433
  break;
18426
18434
  }
18427
18435
  updateMessageOnAllMessages(sendMessageTid, {
18428
18436
  state: MESSAGE_STATUS.FAILED
18429
18437
  });
18430
- _context4.n = 21;
18438
+ _context4.n = 20;
18431
18439
  return effects.put(updateMessageAC(sendMessageTid, {
18432
18440
  state: MESSAGE_STATUS.FAILED
18433
18441
  }));
18434
- case 21:
18435
- _context4.n = 22;
18442
+ case 20:
18443
+ _context4.n = 21;
18436
18444
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18437
- case 22:
18445
+ case 21:
18438
18446
  return _context4.a(2);
18439
18447
  }
18440
- }, _marked2$2, null, [[3, 20]]);
18448
+ }, _marked2$2, null, [[3, 19]]);
18441
18449
  }
18442
18450
  function forwardMessage(action) {
18443
18451
  var payload, message, channelId, connectionState, isForward, channel, SceytChatClient, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, messageToSend, pendingMessage, activeChannelId, isCachedChannel, hasNextMessages, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t4;
@@ -19075,7 +19083,7 @@ function editMessage(action) {
19075
19083
  }, _marked6$1, null, [[0, 5]]);
19076
19084
  }
19077
19085
  function getMessagesQuery(action) {
19078
- var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
19086
+ var _action$payload, channel, loadWithLastMessage, messageId, limit, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, shouldReloadFromServer, secondResult, pendingMessages, messagesMap, uniqueMessagesMap, currentMessagesInState, preservedMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap, filteredPendingMessages, _secondResult4, updatedMessages, _currentMessagesInState, _messagesMap2, preservedFromRedux, _pendingMessages2, _messagesMap3, _filteredPendingMessages, _t9;
19079
19087
  return _regenerator().w(function (_context9) {
19080
19088
  while (1) switch (_context9.p = _context9.n) {
19081
19089
  case 0:
@@ -19083,9 +19091,9 @@ function getMessagesQuery(action) {
19083
19091
  _context9.n = 1;
19084
19092
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
19085
19093
  case 1:
19086
- _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
19094
+ _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
19087
19095
  if (!(channel.id && !channel.isMockChannel)) {
19088
- _context9.n = 48;
19096
+ _context9.n = 50;
19089
19097
  break;
19090
19098
  }
19091
19099
  SceytChatClient = getClient();
@@ -19103,13 +19111,14 @@ function getMessagesQuery(action) {
19103
19111
  hasNext: false
19104
19112
  };
19105
19113
  if (!loadWithLastMessage) {
19106
- _context9.n = 13;
19114
+ _context9.n = 14;
19107
19115
  break;
19108
19116
  }
19109
19117
  allMessages = getAllMessages();
19110
19118
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
19111
- if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
19112
- _context9.n = 8;
19119
+ shouldReloadFromServer = channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage;
19120
+ if (!shouldReloadFromServer) {
19121
+ _context9.n = 9;
19113
19122
  break;
19114
19123
  }
19115
19124
  setHasPrevCached(false);
@@ -19131,52 +19140,86 @@ function getMessagesQuery(action) {
19131
19140
  result.messages = [].concat(secondResult.messages, result.messages);
19132
19141
  result.hasNext = secondResult.hasNext;
19133
19142
  case 5:
19134
- sentMessages = [];
19135
- if (withDeliveredMessages) {
19136
- sentMessages = getFromAllMessagesByMessageId('', '', true);
19137
- }
19143
+ pendingMessages = getPendingMessages(channel.id) || [];
19138
19144
  messagesMap = {};
19139
19145
  result.messages.forEach(function (msg) {
19140
- messagesMap[msg.tid || ''] = msg;
19146
+ if (msg.id) messagesMap[msg.id] = msg;
19147
+ if (msg.tid) messagesMap[msg.tid] = msg;
19141
19148
  });
19142
- filteredSentMessages = sentMessages.filter(function (msg) {
19143
- return !messagesMap[msg.tid || ''];
19149
+ pendingMessages.forEach(function (msg) {
19150
+ var alreadyExists = msg.id && messagesMap[msg.id] || msg.tid && messagesMap[msg.tid] || msg.tid && msg.id && (messagesMap[msg.tid] || messagesMap[msg.id]);
19151
+ if (!alreadyExists) {
19152
+ if (msg.id) messagesMap[msg.id] = msg;
19153
+ if (msg.tid) messagesMap[msg.tid] = msg;
19154
+ }
19155
+ });
19156
+ uniqueMessagesMap = {};
19157
+ result.messages = result.messages.filter(function (msg) {
19158
+ var key = msg.id || msg.tid;
19159
+ if (key && !uniqueMessagesMap[key]) {
19160
+ uniqueMessagesMap[key] = msg;
19161
+ return true;
19162
+ }
19163
+ return false;
19164
+ });
19165
+ pendingMessages.forEach(function (msg) {
19166
+ var key = msg.id || msg.tid;
19167
+ var alreadyExists = msg.id && uniqueMessagesMap[msg.id] || msg.tid && uniqueMessagesMap[msg.tid];
19168
+ if (!alreadyExists && key && !uniqueMessagesMap[key]) {
19169
+ uniqueMessagesMap[key] = msg;
19170
+ result.messages.push(msg);
19171
+ }
19144
19172
  });
19145
- result.messages = [].concat(result.messages, filteredSentMessages).slice(filteredSentMessages.length);
19146
19173
  _context9.n = 6;
19147
- return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19174
+ return effects.select(function (state) {
19175
+ return state.MessageReducer.activeChannelMessages;
19176
+ });
19148
19177
  case 6:
19149
- setMessagesToMap(channel.id, result.messages);
19150
- setAllMessages(result.messages);
19178
+ currentMessagesInState = _context9.v;
19179
+ preservedMessages = [];
19180
+ currentMessagesInState.forEach(function (msg) {
19181
+ var key = msg.id || msg.tid;
19182
+ var alreadyExists = msg.id && uniqueMessagesMap[msg.id] || msg.tid && uniqueMessagesMap[msg.tid];
19183
+ if (!alreadyExists && key && !uniqueMessagesMap[key]) {
19184
+ uniqueMessagesMap[key] = msg;
19185
+ result.messages.push(msg);
19186
+ preservedMessages.push(msg);
19187
+ }
19188
+ });
19151
19189
  _context9.n = 7;
19152
- return effects.put(setMessagesHasPrevAC(true));
19190
+ return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19153
19191
  case 7:
19154
- _context9.n = 10;
19155
- break;
19192
+ setMessagesToMap(channel.id, result.messages);
19193
+ setAllMessages(result.messages);
19194
+ _context9.n = 8;
19195
+ return effects.put(setMessagesHasPrevAC(result.hasNext));
19156
19196
  case 8:
19157
- result.messages = getFromAllMessagesByMessageId('', '', true);
19158
- _context9.n = 9;
19159
- return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19197
+ _context9.n = 11;
19198
+ break;
19160
19199
  case 9:
19200
+ result.messages = getFromAllMessagesByMessageId('', '', true);
19161
19201
  _context9.n = 10;
19162
- return effects.put(setMessagesHasPrevAC(true));
19202
+ return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19163
19203
  case 10:
19164
19204
  _context9.n = 11;
19165
- return effects.put(setMessagesHasNextAC(false));
19205
+ return effects.put(setMessagesHasPrevAC(true));
19166
19206
  case 11:
19207
+ _context9.n = 12;
19208
+ return effects.put(setMessagesHasNextAC(false));
19209
+ case 12:
19167
19210
  setHasNextCached(false);
19168
19211
  if (!messageId) {
19169
- _context9.n = 12;
19212
+ _context9.n = 13;
19170
19213
  break;
19171
19214
  }
19172
- _context9.n = 12;
19215
+ _context9.n = 13;
19173
19216
  return effects.put(setScrollToMessagesAC(messageId, highlight, behavior));
19174
- case 12:
19175
- _context9.n = 46;
19176
- break;
19177
19217
  case 13:
19218
+ _context9.n = 49;
19219
+ break;
19220
+ case 14:
19178
19221
  if (!messageId) {
19179
- _context9.n = 26;
19222
+ _context9.n = 27;
19180
19223
  break;
19181
19224
  }
19182
19225
  _allMessages = getAllMessages();
@@ -19185,168 +19228,182 @@ function getMessagesQuery(action) {
19185
19228
  });
19186
19229
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
19187
19230
  if (!(messageIndex >= maxLengthPart)) {
19188
- _context9.n = 16;
19231
+ _context9.n = 17;
19189
19232
  break;
19190
19233
  }
19191
19234
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
19192
- _context9.n = 14;
19235
+ _context9.n = 15;
19193
19236
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19194
- case 14:
19237
+ case 15:
19195
19238
  setHasPrevCached(messageIndex > maxLengthPart);
19196
19239
  setHasNextCached(_allMessages.length > maxLengthPart);
19197
- _context9.n = 15;
19240
+ _context9.n = 16;
19198
19241
  return effects.put(setMessagesHasPrevAC(true));
19199
- case 15:
19200
- _context9.n = 22;
19201
- break;
19202
19242
  case 16:
19243
+ _context9.n = 23;
19244
+ break;
19245
+ case 17:
19203
19246
  messageQuery.limit = MESSAGES_MAX_LENGTH;
19204
19247
  log.info('load by message id from server ...............', messageId);
19205
- _context9.n = 17;
19248
+ _context9.n = 18;
19206
19249
  return effects.call(messageQuery.loadNearMessageId, messageId);
19207
- case 17:
19250
+ case 18:
19208
19251
  result = _context9.v;
19209
19252
  if (!(result.messages.length === 50)) {
19210
- _context9.n = 20;
19253
+ _context9.n = 21;
19211
19254
  break;
19212
19255
  }
19213
19256
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19214
- _context9.n = 18;
19257
+ _context9.n = 19;
19215
19258
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19216
- case 18:
19259
+ case 19:
19217
19260
  _secondResult = _context9.v;
19218
19261
  messageQuery.reverse = false;
19219
- _context9.n = 19;
19262
+ _context9.n = 20;
19220
19263
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
19221
- case 19:
19264
+ case 20:
19222
19265
  thirdResult = _context9.v;
19223
19266
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
19224
19267
  result.hasNext = _secondResult.hasNext;
19225
19268
  messageQuery.reverse = true;
19226
- _context9.n = 20;
19227
- return effects.put(setMessagesHasPrevAC(_secondResult.hasNext));
19228
- case 20:
19229
19269
  _context9.n = 21;
19230
- return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19270
+ return effects.put(setMessagesHasPrevAC(_secondResult.hasNext));
19231
19271
  case 21:
19272
+ _context9.n = 22;
19273
+ return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19274
+ case 22:
19232
19275
  setMessagesToMap(channel.id, result.messages);
19233
19276
  setAllMessages([].concat(result.messages));
19234
19277
  setHasPrevCached(false);
19235
19278
  setHasNextCached(false);
19236
- case 22:
19237
- _context9.n = 23;
19238
- return effects.put(setMessagesHasNextAC(true));
19239
19279
  case 23:
19240
19280
  _context9.n = 24;
19241
- return effects.put(setScrollToMessagesAC(messageId, true, behavior));
19281
+ return effects.put(setMessagesHasNextAC(true));
19242
19282
  case 24:
19243
19283
  _context9.n = 25;
19244
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19284
+ return effects.put(setScrollToMessagesAC(messageId, true, behavior));
19245
19285
  case 25:
19246
- _context9.n = 46;
19247
- break;
19286
+ _context9.n = 26;
19287
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19248
19288
  case 26:
19289
+ _context9.n = 49;
19290
+ break;
19291
+ case 27:
19249
19292
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
19250
- _context9.n = 39;
19293
+ _context9.n = 40;
19251
19294
  break;
19252
19295
  }
19253
19296
  setMessagesToMap(channel.id, []);
19254
19297
  setAllMessages([]);
19255
19298
  messageQuery.limit = MESSAGES_MAX_LENGTH;
19256
19299
  if (!Number(channel.lastDisplayedMessageId)) {
19257
- _context9.n = 32;
19300
+ _context9.n = 33;
19258
19301
  break;
19259
19302
  }
19260
- _context9.n = 27;
19303
+ _context9.n = 28;
19261
19304
  return effects.call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
19262
- case 27:
19305
+ case 28:
19263
19306
  result = _context9.v;
19264
19307
  if (!(result.messages.length === 50)) {
19265
- _context9.n = 31;
19308
+ _context9.n = 32;
19266
19309
  break;
19267
19310
  }
19268
19311
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
19269
- _context9.n = 28;
19312
+ _context9.n = 29;
19270
19313
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19271
- case 28:
19314
+ case 29:
19272
19315
  _secondResult2 = _context9.v;
19273
19316
  if (!(channel.newMessageCount > 25)) {
19274
- _context9.n = 30;
19317
+ _context9.n = 31;
19275
19318
  break;
19276
19319
  }
19277
19320
  messageQuery.reverse = false;
19278
- _context9.n = 29;
19321
+ _context9.n = 30;
19279
19322
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
19280
- case 29:
19323
+ case 30:
19281
19324
  _thirdResult = _context9.v;
19282
19325
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
19283
19326
  messageQuery.reverse = true;
19284
- _context9.n = 31;
19327
+ _context9.n = 32;
19285
19328
  break;
19286
- case 30:
19287
- result.messages = [].concat(_secondResult2.messages, result.messages);
19288
19329
  case 31:
19289
- _context9.n = 35;
19290
- break;
19330
+ result.messages = [].concat(_secondResult2.messages, result.messages);
19291
19331
  case 32:
19292
- _context9.n = 33;
19293
- return effects.call(messageQuery.loadPrevious);
19332
+ _context9.n = 36;
19333
+ break;
19294
19334
  case 33:
19335
+ _context9.n = 34;
19336
+ return effects.call(messageQuery.loadPrevious);
19337
+ case 34:
19295
19338
  result = _context9.v;
19296
19339
  if (!(result.messages.length === 50)) {
19297
- _context9.n = 35;
19340
+ _context9.n = 36;
19298
19341
  break;
19299
19342
  }
19300
19343
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19301
- _context9.n = 34;
19344
+ _context9.n = 35;
19302
19345
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19303
- case 34:
19346
+ case 35:
19304
19347
  _secondResult3 = _context9.v;
19305
19348
  result.messages = [].concat(_secondResult3.messages, result.messages);
19306
19349
  result.hasNext = _secondResult3.hasNext;
19307
- case 35:
19308
- _context9.n = 36;
19309
- return effects.put(setMessagesHasPrevAC(true));
19310
19350
  case 36:
19311
19351
  _context9.n = 37;
19312
- return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
19352
+ return effects.put(setMessagesHasPrevAC(true));
19313
19353
  case 37:
19354
+ _context9.n = 38;
19355
+ return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
19356
+ case 38:
19357
+ _pendingMessages = getPendingMessages(channel.id);
19358
+ if (_pendingMessages && _pendingMessages.length) {
19359
+ _messagesMap = {};
19360
+ result.messages.forEach(function (msg) {
19361
+ if (msg.tid) _messagesMap[msg.tid] = true;
19362
+ if (msg.id) _messagesMap[msg.id] = true;
19363
+ });
19364
+ filteredPendingMessages = _pendingMessages.filter(function (msg) {
19365
+ return !(_messagesMap[msg.tid || ''] || _messagesMap[msg.id || '']);
19366
+ });
19367
+ if (filteredPendingMessages.length > 0) {
19368
+ result.messages = [].concat(result.messages, filteredPendingMessages);
19369
+ }
19370
+ }
19314
19371
  setMessagesToMap(channel.id, result.messages);
19315
19372
  setAllMessages([].concat(result.messages));
19316
- _context9.n = 38;
19373
+ _context9.n = 39;
19317
19374
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19318
- case 38:
19319
- _context9.n = 46;
19320
- break;
19321
19375
  case 39:
19376
+ _context9.n = 49;
19377
+ break;
19378
+ case 40:
19322
19379
  setMessagesToMap(channel.id, []);
19323
19380
  setAllMessages([]);
19324
19381
  if (!(cachedMessages && cachedMessages.length)) {
19325
- _context9.n = 40;
19382
+ _context9.n = 41;
19326
19383
  break;
19327
19384
  }
19328
19385
  setMessagesToMap(channel.id, []);
19329
19386
  setAllMessages([].concat(cachedMessages));
19330
- _context9.n = 40;
19387
+ _context9.n = 41;
19331
19388
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
19332
- case 40:
19389
+ case 41:
19333
19390
  log.info('load message from server');
19334
- _context9.n = 41;
19391
+ _context9.n = 42;
19335
19392
  return effects.call(messageQuery.loadPrevious);
19336
- case 41:
19393
+ case 42:
19337
19394
  result = _context9.v;
19338
19395
  if (!(result.messages.length === 50)) {
19339
- _context9.n = 43;
19396
+ _context9.n = 44;
19340
19397
  break;
19341
19398
  }
19342
19399
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19343
- _context9.n = 42;
19400
+ _context9.n = 43;
19344
19401
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19345
- case 42:
19402
+ case 43:
19346
19403
  _secondResult4 = _context9.v;
19347
19404
  result.messages = [].concat(_secondResult4.messages, result.messages);
19348
19405
  result.hasNext = _secondResult4.hasNext;
19349
- case 43:
19406
+ case 44:
19350
19407
  updatedMessages = [];
19351
19408
  result.messages.forEach(function (msg) {
19352
19409
  var updatedMessage = updateMessageOnMap(channel.id, {
@@ -19356,58 +19413,86 @@ function getMessagesQuery(action) {
19356
19413
  updateMessageOnAllMessages(msg.id, updatedMessage || msg);
19357
19414
  updatedMessages.push(updatedMessage || msg);
19358
19415
  });
19416
+ _context9.n = 45;
19417
+ return effects.select(function (state) {
19418
+ return state.MessageReducer.activeChannelMessages;
19419
+ });
19420
+ case 45:
19421
+ _currentMessagesInState = _context9.v;
19422
+ _messagesMap2 = {};
19423
+ updatedMessages.forEach(function (msg) {
19424
+ if (msg.tid) _messagesMap2[msg.tid] = true;
19425
+ if (msg.id) _messagesMap2[msg.id] = true;
19426
+ });
19427
+ preservedFromRedux = [];
19428
+ _currentMessagesInState.forEach(function (msg) {
19429
+ var alreadyExists = msg.id && _messagesMap2[msg.id] || msg.tid && _messagesMap2[msg.tid];
19430
+ if (!alreadyExists) {
19431
+ var key = msg.id || msg.tid;
19432
+ if (key && !_messagesMap2[key]) {
19433
+ _messagesMap2[key] = true;
19434
+ updatedMessages.push(msg);
19435
+ preservedFromRedux.push(msg);
19436
+ }
19437
+ }
19438
+ });
19359
19439
  setMessagesToMap(channel.id, updatedMessages);
19360
19440
  setAllMessages([].concat(updatedMessages));
19361
- _context9.n = 44;
19441
+ _context9.n = 46;
19362
19442
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
19363
- case 44:
19364
- _context9.n = 45;
19443
+ case 46:
19444
+ _context9.n = 47;
19365
19445
  return effects.put(setMessagesHasPrevAC(result.hasNext));
19366
- case 45:
19367
- _context9.n = 46;
19446
+ case 47:
19447
+ _context9.n = 48;
19368
19448
  return effects.put(setMessagesHasNextAC(false));
19369
- case 46:
19370
- pendingMessages = getPendingMessages(channel.id);
19371
- if (!(pendingMessages && pendingMessages.length)) {
19372
- _context9.n = 47;
19449
+ case 48:
19450
+ _pendingMessages2 = getPendingMessages(channel.id);
19451
+ if (!(_pendingMessages2 && _pendingMessages2.length)) {
19452
+ _context9.n = 49;
19373
19453
  break;
19374
19454
  }
19375
- _messagesMap = {};
19376
- result.messages.forEach(function (msg) {
19377
- _messagesMap[msg.tid || ''] = msg;
19455
+ _messagesMap3 = {};
19456
+ updatedMessages.forEach(function (msg) {
19457
+ if (msg.tid) _messagesMap3[msg.tid] = true;
19458
+ if (msg.id) _messagesMap3[msg.id] = true;
19378
19459
  });
19379
- filteredPendingMessages = pendingMessages.filter(function (msg) {
19380
- return !_messagesMap[msg.tid || ''];
19460
+ _filteredPendingMessages = _pendingMessages2.filter(function (msg) {
19461
+ return !(_messagesMap3[msg.tid || ''] || _messagesMap3[msg.id || '']);
19381
19462
  });
19382
- _context9.n = 47;
19383
- return effects.put(addMessagesAC(filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
19384
- case 47:
19385
- _context9.n = 49;
19386
- break;
19387
- case 48:
19388
- if (!channel.isMockChannel) {
19463
+ if (!(_filteredPendingMessages.length > 0)) {
19389
19464
  _context9.n = 49;
19390
19465
  break;
19391
19466
  }
19392
19467
  _context9.n = 49;
19393
- return effects.put(setMessagesAC([]));
19468
+ return effects.put(addMessagesAC(_filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
19394
19469
  case 49:
19395
19470
  _context9.n = 51;
19396
19471
  break;
19397
19472
  case 50:
19398
- _context9.p = 50;
19399
- _t9 = _context9.v;
19400
- log.error('error in message query', _t9);
19473
+ if (!channel.isMockChannel) {
19474
+ _context9.n = 51;
19475
+ break;
19476
+ }
19477
+ _context9.n = 51;
19478
+ return effects.put(setMessagesAC([]));
19401
19479
  case 51:
19402
- _context9.p = 51;
19403
- _context9.n = 52;
19404
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19480
+ _context9.n = 53;
19481
+ break;
19405
19482
  case 52:
19406
- return _context9.f(51);
19483
+ _context9.p = 52;
19484
+ _t9 = _context9.v;
19485
+ log.error('error in message query', _t9);
19407
19486
  case 53:
19487
+ _context9.p = 53;
19488
+ _context9.n = 54;
19489
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19490
+ case 54:
19491
+ return _context9.f(53);
19492
+ case 55:
19408
19493
  return _context9.a(2);
19409
19494
  }
19410
- }, _marked7$1, null, [[0, 50, 51, 53]]);
19495
+ }, _marked7$1, null, [[0, 52, 53, 55]]);
19411
19496
  }
19412
19497
  function getMessageQuery(action) {
19413
19498
  var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
@@ -39308,6 +39393,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
39308
39393
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
39309
39394
  var pendingMessagesMap = getPendingMessagesMap();
39310
39395
  var pendingMessagesMapCopy = JSON.parse(JSON.stringify(pendingMessagesMap));
39396
+ clearPendingMessagesMap();
39311
39397
  setTimeout(function () {
39312
39398
  Object.keys(pendingMessagesMapCopy).forEach(function (key) {
39313
39399
  pendingMessagesMapCopy[key].forEach(function (msg) {
package/index.modern.js CHANGED
@@ -10302,6 +10302,11 @@ var setPendingMessage = function setPendingMessage(channelId, pendingMessage) {
10302
10302
  var getPendingMessagesMap = function getPendingMessagesMap() {
10303
10303
  return pendingMessagesMap;
10304
10304
  };
10305
+ var clearPendingMessagesMap = function clearPendingMessagesMap() {
10306
+ Object.keys(pendingMessagesMap).forEach(function (channelId) {
10307
+ delete pendingMessagesMap[channelId];
10308
+ });
10309
+ };
10305
10310
  var draftMessagesMap = {};
10306
10311
  var audioRecordingMap = {};
10307
10312
  var getDraftMessageFromMap = function getDraftMessageFromMap(channelId) {
@@ -18244,9 +18249,15 @@ function sendMessage(action) {
18244
18249
  _t2 = _context3.v;
18245
18250
  log.error('error on send message ... ', _t2);
18246
18251
  case 19:
18252
+ _context3.p = 19;
18253
+ _context3.n = 20;
18254
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18255
+ case 20:
18256
+ return _context3.f(19);
18257
+ case 21:
18247
18258
  return _context3.a(2);
18248
18259
  }
18249
- }, _marked$3, null, [[1, 18]]);
18260
+ }, _marked$3, null, [[1, 18, 19, 21]]);
18250
18261
  }
18251
18262
  function sendTextMessage(action) {
18252
18263
  var payload, message, connectionState, channelId, channel, sendMessageTid, activeChannelId, SceytChatClient, createChannelData, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, messageToSend, pendingMessage, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t3;
@@ -18402,15 +18413,12 @@ function sendTextMessage(action) {
18402
18413
  throw new Error('Connection required to send message');
18403
18414
  case 17:
18404
18415
  _context4.n = 18;
18405
- return put(getMessagesAC(channel, true, channel.lastMessage.id, undefined, undefined, false));
18406
- case 18:
18407
- _context4.n = 19;
18408
18416
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18409
- case 19:
18410
- _context4.n = 22;
18417
+ case 18:
18418
+ _context4.n = 21;
18411
18419
  break;
18412
- case 20:
18413
- _context4.p = 20;
18420
+ case 19:
18421
+ _context4.p = 19;
18414
18422
  _t3 = _context4.v;
18415
18423
  log.error('error on send text message ... ', _t3);
18416
18424
  updateMessageOnMap(channel.id, {
@@ -18420,23 +18428,23 @@ function sendTextMessage(action) {
18420
18428
  }
18421
18429
  });
18422
18430
  if (!(activeChannelId === channel.id)) {
18423
- _context4.n = 21;
18431
+ _context4.n = 20;
18424
18432
  break;
18425
18433
  }
18426
18434
  updateMessageOnAllMessages(sendMessageTid, {
18427
18435
  state: MESSAGE_STATUS.FAILED
18428
18436
  });
18429
- _context4.n = 21;
18437
+ _context4.n = 20;
18430
18438
  return put(updateMessageAC(sendMessageTid, {
18431
18439
  state: MESSAGE_STATUS.FAILED
18432
18440
  }));
18433
- case 21:
18434
- _context4.n = 22;
18441
+ case 20:
18442
+ _context4.n = 21;
18435
18443
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18436
- case 22:
18444
+ case 21:
18437
18445
  return _context4.a(2);
18438
18446
  }
18439
- }, _marked2$2, null, [[3, 20]]);
18447
+ }, _marked2$2, null, [[3, 19]]);
18440
18448
  }
18441
18449
  function forwardMessage(action) {
18442
18450
  var payload, message, channelId, connectionState, isForward, channel, SceytChatClient, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, messageToSend, pendingMessage, activeChannelId, isCachedChannel, hasNextMessages, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t4;
@@ -19074,7 +19082,7 @@ function editMessage(action) {
19074
19082
  }, _marked6$1, null, [[0, 5]]);
19075
19083
  }
19076
19084
  function getMessagesQuery(action) {
19077
- var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
19085
+ var _action$payload, channel, loadWithLastMessage, messageId, limit, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, shouldReloadFromServer, secondResult, pendingMessages, messagesMap, uniqueMessagesMap, currentMessagesInState, preservedMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap, filteredPendingMessages, _secondResult4, updatedMessages, _currentMessagesInState, _messagesMap2, preservedFromRedux, _pendingMessages2, _messagesMap3, _filteredPendingMessages, _t9;
19078
19086
  return _regenerator().w(function (_context9) {
19079
19087
  while (1) switch (_context9.p = _context9.n) {
19080
19088
  case 0:
@@ -19082,9 +19090,9 @@ function getMessagesQuery(action) {
19082
19090
  _context9.n = 1;
19083
19091
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
19084
19092
  case 1:
19085
- _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
19093
+ _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
19086
19094
  if (!(channel.id && !channel.isMockChannel)) {
19087
- _context9.n = 48;
19095
+ _context9.n = 50;
19088
19096
  break;
19089
19097
  }
19090
19098
  SceytChatClient = getClient();
@@ -19102,13 +19110,14 @@ function getMessagesQuery(action) {
19102
19110
  hasNext: false
19103
19111
  };
19104
19112
  if (!loadWithLastMessage) {
19105
- _context9.n = 13;
19113
+ _context9.n = 14;
19106
19114
  break;
19107
19115
  }
19108
19116
  allMessages = getAllMessages();
19109
19117
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
19110
- if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
19111
- _context9.n = 8;
19118
+ shouldReloadFromServer = channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage;
19119
+ if (!shouldReloadFromServer) {
19120
+ _context9.n = 9;
19112
19121
  break;
19113
19122
  }
19114
19123
  setHasPrevCached(false);
@@ -19130,52 +19139,86 @@ function getMessagesQuery(action) {
19130
19139
  result.messages = [].concat(secondResult.messages, result.messages);
19131
19140
  result.hasNext = secondResult.hasNext;
19132
19141
  case 5:
19133
- sentMessages = [];
19134
- if (withDeliveredMessages) {
19135
- sentMessages = getFromAllMessagesByMessageId('', '', true);
19136
- }
19142
+ pendingMessages = getPendingMessages(channel.id) || [];
19137
19143
  messagesMap = {};
19138
19144
  result.messages.forEach(function (msg) {
19139
- messagesMap[msg.tid || ''] = msg;
19145
+ if (msg.id) messagesMap[msg.id] = msg;
19146
+ if (msg.tid) messagesMap[msg.tid] = msg;
19140
19147
  });
19141
- filteredSentMessages = sentMessages.filter(function (msg) {
19142
- return !messagesMap[msg.tid || ''];
19148
+ pendingMessages.forEach(function (msg) {
19149
+ var alreadyExists = msg.id && messagesMap[msg.id] || msg.tid && messagesMap[msg.tid] || msg.tid && msg.id && (messagesMap[msg.tid] || messagesMap[msg.id]);
19150
+ if (!alreadyExists) {
19151
+ if (msg.id) messagesMap[msg.id] = msg;
19152
+ if (msg.tid) messagesMap[msg.tid] = msg;
19153
+ }
19154
+ });
19155
+ uniqueMessagesMap = {};
19156
+ result.messages = result.messages.filter(function (msg) {
19157
+ var key = msg.id || msg.tid;
19158
+ if (key && !uniqueMessagesMap[key]) {
19159
+ uniqueMessagesMap[key] = msg;
19160
+ return true;
19161
+ }
19162
+ return false;
19163
+ });
19164
+ pendingMessages.forEach(function (msg) {
19165
+ var key = msg.id || msg.tid;
19166
+ var alreadyExists = msg.id && uniqueMessagesMap[msg.id] || msg.tid && uniqueMessagesMap[msg.tid];
19167
+ if (!alreadyExists && key && !uniqueMessagesMap[key]) {
19168
+ uniqueMessagesMap[key] = msg;
19169
+ result.messages.push(msg);
19170
+ }
19143
19171
  });
19144
- result.messages = [].concat(result.messages, filteredSentMessages).slice(filteredSentMessages.length);
19145
19172
  _context9.n = 6;
19146
- return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19173
+ return select(function (state) {
19174
+ return state.MessageReducer.activeChannelMessages;
19175
+ });
19147
19176
  case 6:
19148
- setMessagesToMap(channel.id, result.messages);
19149
- setAllMessages(result.messages);
19177
+ currentMessagesInState = _context9.v;
19178
+ preservedMessages = [];
19179
+ currentMessagesInState.forEach(function (msg) {
19180
+ var key = msg.id || msg.tid;
19181
+ var alreadyExists = msg.id && uniqueMessagesMap[msg.id] || msg.tid && uniqueMessagesMap[msg.tid];
19182
+ if (!alreadyExists && key && !uniqueMessagesMap[key]) {
19183
+ uniqueMessagesMap[key] = msg;
19184
+ result.messages.push(msg);
19185
+ preservedMessages.push(msg);
19186
+ }
19187
+ });
19150
19188
  _context9.n = 7;
19151
- return put(setMessagesHasPrevAC(true));
19189
+ return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19152
19190
  case 7:
19153
- _context9.n = 10;
19154
- break;
19191
+ setMessagesToMap(channel.id, result.messages);
19192
+ setAllMessages(result.messages);
19193
+ _context9.n = 8;
19194
+ return put(setMessagesHasPrevAC(result.hasNext));
19155
19195
  case 8:
19156
- result.messages = getFromAllMessagesByMessageId('', '', true);
19157
- _context9.n = 9;
19158
- return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19196
+ _context9.n = 11;
19197
+ break;
19159
19198
  case 9:
19199
+ result.messages = getFromAllMessagesByMessageId('', '', true);
19160
19200
  _context9.n = 10;
19161
- return put(setMessagesHasPrevAC(true));
19201
+ return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19162
19202
  case 10:
19163
19203
  _context9.n = 11;
19164
- return put(setMessagesHasNextAC(false));
19204
+ return put(setMessagesHasPrevAC(true));
19165
19205
  case 11:
19206
+ _context9.n = 12;
19207
+ return put(setMessagesHasNextAC(false));
19208
+ case 12:
19166
19209
  setHasNextCached(false);
19167
19210
  if (!messageId) {
19168
- _context9.n = 12;
19211
+ _context9.n = 13;
19169
19212
  break;
19170
19213
  }
19171
- _context9.n = 12;
19214
+ _context9.n = 13;
19172
19215
  return put(setScrollToMessagesAC(messageId, highlight, behavior));
19173
- case 12:
19174
- _context9.n = 46;
19175
- break;
19176
19216
  case 13:
19217
+ _context9.n = 49;
19218
+ break;
19219
+ case 14:
19177
19220
  if (!messageId) {
19178
- _context9.n = 26;
19221
+ _context9.n = 27;
19179
19222
  break;
19180
19223
  }
19181
19224
  _allMessages = getAllMessages();
@@ -19184,168 +19227,182 @@ function getMessagesQuery(action) {
19184
19227
  });
19185
19228
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
19186
19229
  if (!(messageIndex >= maxLengthPart)) {
19187
- _context9.n = 16;
19230
+ _context9.n = 17;
19188
19231
  break;
19189
19232
  }
19190
19233
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
19191
- _context9.n = 14;
19234
+ _context9.n = 15;
19192
19235
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19193
- case 14:
19236
+ case 15:
19194
19237
  setHasPrevCached(messageIndex > maxLengthPart);
19195
19238
  setHasNextCached(_allMessages.length > maxLengthPart);
19196
- _context9.n = 15;
19239
+ _context9.n = 16;
19197
19240
  return put(setMessagesHasPrevAC(true));
19198
- case 15:
19199
- _context9.n = 22;
19200
- break;
19201
19241
  case 16:
19242
+ _context9.n = 23;
19243
+ break;
19244
+ case 17:
19202
19245
  messageQuery.limit = MESSAGES_MAX_LENGTH;
19203
19246
  log.info('load by message id from server ...............', messageId);
19204
- _context9.n = 17;
19247
+ _context9.n = 18;
19205
19248
  return call(messageQuery.loadNearMessageId, messageId);
19206
- case 17:
19249
+ case 18:
19207
19250
  result = _context9.v;
19208
19251
  if (!(result.messages.length === 50)) {
19209
- _context9.n = 20;
19252
+ _context9.n = 21;
19210
19253
  break;
19211
19254
  }
19212
19255
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19213
- _context9.n = 18;
19256
+ _context9.n = 19;
19214
19257
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19215
- case 18:
19258
+ case 19:
19216
19259
  _secondResult = _context9.v;
19217
19260
  messageQuery.reverse = false;
19218
- _context9.n = 19;
19261
+ _context9.n = 20;
19219
19262
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
19220
- case 19:
19263
+ case 20:
19221
19264
  thirdResult = _context9.v;
19222
19265
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
19223
19266
  result.hasNext = _secondResult.hasNext;
19224
19267
  messageQuery.reverse = true;
19225
- _context9.n = 20;
19226
- return put(setMessagesHasPrevAC(_secondResult.hasNext));
19227
- case 20:
19228
19268
  _context9.n = 21;
19229
- return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19269
+ return put(setMessagesHasPrevAC(_secondResult.hasNext));
19230
19270
  case 21:
19271
+ _context9.n = 22;
19272
+ return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19273
+ case 22:
19231
19274
  setMessagesToMap(channel.id, result.messages);
19232
19275
  setAllMessages([].concat(result.messages));
19233
19276
  setHasPrevCached(false);
19234
19277
  setHasNextCached(false);
19235
- case 22:
19236
- _context9.n = 23;
19237
- return put(setMessagesHasNextAC(true));
19238
19278
  case 23:
19239
19279
  _context9.n = 24;
19240
- return put(setScrollToMessagesAC(messageId, true, behavior));
19280
+ return put(setMessagesHasNextAC(true));
19241
19281
  case 24:
19242
19282
  _context9.n = 25;
19243
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19283
+ return put(setScrollToMessagesAC(messageId, true, behavior));
19244
19284
  case 25:
19245
- _context9.n = 46;
19246
- break;
19285
+ _context9.n = 26;
19286
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19247
19287
  case 26:
19288
+ _context9.n = 49;
19289
+ break;
19290
+ case 27:
19248
19291
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
19249
- _context9.n = 39;
19292
+ _context9.n = 40;
19250
19293
  break;
19251
19294
  }
19252
19295
  setMessagesToMap(channel.id, []);
19253
19296
  setAllMessages([]);
19254
19297
  messageQuery.limit = MESSAGES_MAX_LENGTH;
19255
19298
  if (!Number(channel.lastDisplayedMessageId)) {
19256
- _context9.n = 32;
19299
+ _context9.n = 33;
19257
19300
  break;
19258
19301
  }
19259
- _context9.n = 27;
19302
+ _context9.n = 28;
19260
19303
  return call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
19261
- case 27:
19304
+ case 28:
19262
19305
  result = _context9.v;
19263
19306
  if (!(result.messages.length === 50)) {
19264
- _context9.n = 31;
19307
+ _context9.n = 32;
19265
19308
  break;
19266
19309
  }
19267
19310
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
19268
- _context9.n = 28;
19311
+ _context9.n = 29;
19269
19312
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19270
- case 28:
19313
+ case 29:
19271
19314
  _secondResult2 = _context9.v;
19272
19315
  if (!(channel.newMessageCount > 25)) {
19273
- _context9.n = 30;
19316
+ _context9.n = 31;
19274
19317
  break;
19275
19318
  }
19276
19319
  messageQuery.reverse = false;
19277
- _context9.n = 29;
19320
+ _context9.n = 30;
19278
19321
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
19279
- case 29:
19322
+ case 30:
19280
19323
  _thirdResult = _context9.v;
19281
19324
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
19282
19325
  messageQuery.reverse = true;
19283
- _context9.n = 31;
19326
+ _context9.n = 32;
19284
19327
  break;
19285
- case 30:
19286
- result.messages = [].concat(_secondResult2.messages, result.messages);
19287
19328
  case 31:
19288
- _context9.n = 35;
19289
- break;
19329
+ result.messages = [].concat(_secondResult2.messages, result.messages);
19290
19330
  case 32:
19291
- _context9.n = 33;
19292
- return call(messageQuery.loadPrevious);
19331
+ _context9.n = 36;
19332
+ break;
19293
19333
  case 33:
19334
+ _context9.n = 34;
19335
+ return call(messageQuery.loadPrevious);
19336
+ case 34:
19294
19337
  result = _context9.v;
19295
19338
  if (!(result.messages.length === 50)) {
19296
- _context9.n = 35;
19339
+ _context9.n = 36;
19297
19340
  break;
19298
19341
  }
19299
19342
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19300
- _context9.n = 34;
19343
+ _context9.n = 35;
19301
19344
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19302
- case 34:
19345
+ case 35:
19303
19346
  _secondResult3 = _context9.v;
19304
19347
  result.messages = [].concat(_secondResult3.messages, result.messages);
19305
19348
  result.hasNext = _secondResult3.hasNext;
19306
- case 35:
19307
- _context9.n = 36;
19308
- return put(setMessagesHasPrevAC(true));
19309
19349
  case 36:
19310
19350
  _context9.n = 37;
19311
- return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
19351
+ return put(setMessagesHasPrevAC(true));
19312
19352
  case 37:
19353
+ _context9.n = 38;
19354
+ return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
19355
+ case 38:
19356
+ _pendingMessages = getPendingMessages(channel.id);
19357
+ if (_pendingMessages && _pendingMessages.length) {
19358
+ _messagesMap = {};
19359
+ result.messages.forEach(function (msg) {
19360
+ if (msg.tid) _messagesMap[msg.tid] = true;
19361
+ if (msg.id) _messagesMap[msg.id] = true;
19362
+ });
19363
+ filteredPendingMessages = _pendingMessages.filter(function (msg) {
19364
+ return !(_messagesMap[msg.tid || ''] || _messagesMap[msg.id || '']);
19365
+ });
19366
+ if (filteredPendingMessages.length > 0) {
19367
+ result.messages = [].concat(result.messages, filteredPendingMessages);
19368
+ }
19369
+ }
19313
19370
  setMessagesToMap(channel.id, result.messages);
19314
19371
  setAllMessages([].concat(result.messages));
19315
- _context9.n = 38;
19372
+ _context9.n = 39;
19316
19373
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
19317
- case 38:
19318
- _context9.n = 46;
19319
- break;
19320
19374
  case 39:
19375
+ _context9.n = 49;
19376
+ break;
19377
+ case 40:
19321
19378
  setMessagesToMap(channel.id, []);
19322
19379
  setAllMessages([]);
19323
19380
  if (!(cachedMessages && cachedMessages.length)) {
19324
- _context9.n = 40;
19381
+ _context9.n = 41;
19325
19382
  break;
19326
19383
  }
19327
19384
  setMessagesToMap(channel.id, []);
19328
19385
  setAllMessages([].concat(cachedMessages));
19329
- _context9.n = 40;
19386
+ _context9.n = 41;
19330
19387
  return put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
19331
- case 40:
19388
+ case 41:
19332
19389
  log.info('load message from server');
19333
- _context9.n = 41;
19390
+ _context9.n = 42;
19334
19391
  return call(messageQuery.loadPrevious);
19335
- case 41:
19392
+ case 42:
19336
19393
  result = _context9.v;
19337
19394
  if (!(result.messages.length === 50)) {
19338
- _context9.n = 43;
19395
+ _context9.n = 44;
19339
19396
  break;
19340
19397
  }
19341
19398
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
19342
- _context9.n = 42;
19399
+ _context9.n = 43;
19343
19400
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
19344
- case 42:
19401
+ case 43:
19345
19402
  _secondResult4 = _context9.v;
19346
19403
  result.messages = [].concat(_secondResult4.messages, result.messages);
19347
19404
  result.hasNext = _secondResult4.hasNext;
19348
- case 43:
19405
+ case 44:
19349
19406
  updatedMessages = [];
19350
19407
  result.messages.forEach(function (msg) {
19351
19408
  var updatedMessage = updateMessageOnMap(channel.id, {
@@ -19355,58 +19412,86 @@ function getMessagesQuery(action) {
19355
19412
  updateMessageOnAllMessages(msg.id, updatedMessage || msg);
19356
19413
  updatedMessages.push(updatedMessage || msg);
19357
19414
  });
19415
+ _context9.n = 45;
19416
+ return select(function (state) {
19417
+ return state.MessageReducer.activeChannelMessages;
19418
+ });
19419
+ case 45:
19420
+ _currentMessagesInState = _context9.v;
19421
+ _messagesMap2 = {};
19422
+ updatedMessages.forEach(function (msg) {
19423
+ if (msg.tid) _messagesMap2[msg.tid] = true;
19424
+ if (msg.id) _messagesMap2[msg.id] = true;
19425
+ });
19426
+ preservedFromRedux = [];
19427
+ _currentMessagesInState.forEach(function (msg) {
19428
+ var alreadyExists = msg.id && _messagesMap2[msg.id] || msg.tid && _messagesMap2[msg.tid];
19429
+ if (!alreadyExists) {
19430
+ var key = msg.id || msg.tid;
19431
+ if (key && !_messagesMap2[key]) {
19432
+ _messagesMap2[key] = true;
19433
+ updatedMessages.push(msg);
19434
+ preservedFromRedux.push(msg);
19435
+ }
19436
+ }
19437
+ });
19358
19438
  setMessagesToMap(channel.id, updatedMessages);
19359
19439
  setAllMessages([].concat(updatedMessages));
19360
- _context9.n = 44;
19440
+ _context9.n = 46;
19361
19441
  return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
19362
- case 44:
19363
- _context9.n = 45;
19442
+ case 46:
19443
+ _context9.n = 47;
19364
19444
  return put(setMessagesHasPrevAC(result.hasNext));
19365
- case 45:
19366
- _context9.n = 46;
19445
+ case 47:
19446
+ _context9.n = 48;
19367
19447
  return put(setMessagesHasNextAC(false));
19368
- case 46:
19369
- pendingMessages = getPendingMessages(channel.id);
19370
- if (!(pendingMessages && pendingMessages.length)) {
19371
- _context9.n = 47;
19448
+ case 48:
19449
+ _pendingMessages2 = getPendingMessages(channel.id);
19450
+ if (!(_pendingMessages2 && _pendingMessages2.length)) {
19451
+ _context9.n = 49;
19372
19452
  break;
19373
19453
  }
19374
- _messagesMap = {};
19375
- result.messages.forEach(function (msg) {
19376
- _messagesMap[msg.tid || ''] = msg;
19454
+ _messagesMap3 = {};
19455
+ updatedMessages.forEach(function (msg) {
19456
+ if (msg.tid) _messagesMap3[msg.tid] = true;
19457
+ if (msg.id) _messagesMap3[msg.id] = true;
19377
19458
  });
19378
- filteredPendingMessages = pendingMessages.filter(function (msg) {
19379
- return !_messagesMap[msg.tid || ''];
19459
+ _filteredPendingMessages = _pendingMessages2.filter(function (msg) {
19460
+ return !(_messagesMap3[msg.tid || ''] || _messagesMap3[msg.id || '']);
19380
19461
  });
19381
- _context9.n = 47;
19382
- return put(addMessagesAC(filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
19383
- case 47:
19384
- _context9.n = 49;
19385
- break;
19386
- case 48:
19387
- if (!channel.isMockChannel) {
19462
+ if (!(_filteredPendingMessages.length > 0)) {
19388
19463
  _context9.n = 49;
19389
19464
  break;
19390
19465
  }
19391
19466
  _context9.n = 49;
19392
- return put(setMessagesAC([]));
19467
+ return put(addMessagesAC(_filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
19393
19468
  case 49:
19394
19469
  _context9.n = 51;
19395
19470
  break;
19396
19471
  case 50:
19397
- _context9.p = 50;
19398
- _t9 = _context9.v;
19399
- log.error('error in message query', _t9);
19472
+ if (!channel.isMockChannel) {
19473
+ _context9.n = 51;
19474
+ break;
19475
+ }
19476
+ _context9.n = 51;
19477
+ return put(setMessagesAC([]));
19400
19478
  case 51:
19401
- _context9.p = 51;
19402
- _context9.n = 52;
19403
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19479
+ _context9.n = 53;
19480
+ break;
19404
19481
  case 52:
19405
- return _context9.f(51);
19482
+ _context9.p = 52;
19483
+ _t9 = _context9.v;
19484
+ log.error('error in message query', _t9);
19406
19485
  case 53:
19486
+ _context9.p = 53;
19487
+ _context9.n = 54;
19488
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19489
+ case 54:
19490
+ return _context9.f(53);
19491
+ case 55:
19407
19492
  return _context9.a(2);
19408
19493
  }
19409
- }, _marked7$1, null, [[0, 50, 51, 53]]);
19494
+ }, _marked7$1, null, [[0, 52, 53, 55]]);
19410
19495
  }
19411
19496
  function getMessageQuery(action) {
19412
19497
  var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
@@ -39307,6 +39392,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
39307
39392
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
39308
39393
  var pendingMessagesMap = getPendingMessagesMap();
39309
39394
  var pendingMessagesMapCopy = JSON.parse(JSON.stringify(pendingMessagesMap));
39395
+ clearPendingMessagesMap();
39310
39396
  setTimeout(function () {
39311
39397
  Object.keys(pendingMessagesMapCopy).forEach(function (key) {
39312
39398
  pendingMessagesMapCopy[key].forEach(function (msg) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceyt-chat-react-uikit",
3
- "version": "1.7.4-beta.6",
3
+ "version": "1.7.4-beta.7",
4
4
  "description": "Interactive React UI Components for Sceyt Chat.",
5
5
  "author": "Sceyt",
6
6
  "license": "MIT",