sceyt-chat-react-uikit 1.7.6-beta.6 → 1.7.6-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 +196 -110
  2. package/index.modern.js +196 -110
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -9102,15 +9102,6 @@ var query = {
9102
9102
  ReactionsQuery: null,
9103
9103
  PollVotesQueries: {}
9104
9104
  };
9105
- var unreadScrollTo = {
9106
- isScrolled: true
9107
- };
9108
- function getUnreadScrollTo() {
9109
- return unreadScrollTo.isScrolled;
9110
- }
9111
- function setUnreadScrollTo(state) {
9112
- unreadScrollTo.isScrolled = state;
9113
- }
9114
9105
  function getUploadImageIcon() {
9115
9106
  return UploadImageIcon;
9116
9107
  }
@@ -10315,6 +10306,11 @@ function showScrollToNewMessageButtonAC(state) {
10315
10306
  state: state
10316
10307
  });
10317
10308
  }
10309
+ function setUnreadScrollToAC(state) {
10310
+ return setUnreadScrollTo({
10311
+ state: state
10312
+ });
10313
+ }
10318
10314
  function loadMoreMessagesAC(channelId, limit, direction, messageId, hasNext) {
10319
10315
  return {
10320
10316
  type: LOAD_MORE_MESSAGES,
@@ -10647,6 +10643,51 @@ var MESSAGE_LOAD_DIRECTION = {
10647
10643
  PREV: 'prev',
10648
10644
  NEXT: 'next'
10649
10645
  };
10646
+ var shouldSkipDeliveryStatusUpdate = function shouldSkipDeliveryStatusUpdate(markerName, currentDeliveryStatus) {
10647
+ if (markerName === MESSAGE_DELIVERY_STATUS.SENT && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10648
+ return true;
10649
+ }
10650
+ if (markerName === MESSAGE_DELIVERY_STATUS.DELIVERED && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10651
+ return true;
10652
+ }
10653
+ if (markerName === MESSAGE_DELIVERY_STATUS.READ && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10654
+ return true;
10655
+ }
10656
+ if (markerName === MESSAGE_DELIVERY_STATUS.PLAYED && currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED) {
10657
+ return true;
10658
+ }
10659
+ return false;
10660
+ };
10661
+ var updateMessageDeliveryStatusAndMarkers = function updateMessageDeliveryStatusAndMarkers(message, markerName) {
10662
+ var _message$markerTotals;
10663
+ if (shouldSkipDeliveryStatusUpdate(markerName, message.deliveryStatus)) {
10664
+ return {
10665
+ markerTotals: message.markerTotals,
10666
+ deliveryStatus: message.deliveryStatus
10667
+ };
10668
+ }
10669
+ var markerInMarkersTotal = message === null || message === void 0 ? void 0 : (_message$markerTotals = message.markerTotals) === null || _message$markerTotals === void 0 ? void 0 : _message$markerTotals.find(function (marker) {
10670
+ return marker.name === markerName;
10671
+ });
10672
+ if (!markerInMarkersTotal) {
10673
+ return {
10674
+ markerTotals: [].concat(message.markerTotals || [], [{
10675
+ name: markerName,
10676
+ count: 1
10677
+ }]),
10678
+ deliveryStatus: markerName
10679
+ };
10680
+ } else {
10681
+ return {
10682
+ markerTotals: message.markerTotals.map(function (marker) {
10683
+ return marker.name === markerName ? _extends({}, marker, {
10684
+ count: marker.count + 1
10685
+ }) : marker;
10686
+ }),
10687
+ deliveryStatus: markerName
10688
+ };
10689
+ }
10690
+ };
10650
10691
  var sendMessageHandler;
10651
10692
  var setSendMessageHandler = function setSendMessageHandler(handler) {
10652
10693
  sendMessageHandler = handler;
@@ -10678,7 +10719,8 @@ var updateMessageOnAllMessages = function updateMessageOnAllMessages(messageId,
10678
10719
  if (updatedParams.state === MESSAGE_STATUS.DELETE) {
10679
10720
  return _extends({}, updatedParams);
10680
10721
  }
10681
- var updatedMessage = _extends({}, message, updatedParams);
10722
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, updatedParams.deliveryStatus);
10723
+ var updatedMessage = _extends({}, message, updatedParams, statusUpdatedMessage);
10682
10724
  if (voteDetails) {
10683
10725
  updatedMessage = _extends({}, updatedMessage, {
10684
10726
  pollDetails: handleVoteDetails(voteDetails, updatedMessage)
@@ -10689,6 +10731,15 @@ var updateMessageOnAllMessages = function updateMessageOnAllMessages(messageId,
10689
10731
  return message;
10690
10732
  });
10691
10733
  };
10734
+ var updateMessageStatusOnAllMessages = function updateMessageStatusOnAllMessages(name, markersMap) {
10735
+ activeChannelAllMessages = activeChannelAllMessages.map(function (message) {
10736
+ if (markersMap[message.id]) {
10737
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, name);
10738
+ return _extends({}, message, statusUpdatedMessage);
10739
+ }
10740
+ return message;
10741
+ });
10742
+ };
10692
10743
  var removeMessageFromAllMessages = function removeMessageFromAllMessages(messageId) {
10693
10744
  activeChannelAllMessages = [].concat(activeChannelAllMessages).filter(function (msg) {
10694
10745
  return !(msg.id === messageId || msg.tid === messageId);
@@ -10696,12 +10747,11 @@ var removeMessageFromAllMessages = function removeMessageFromAllMessages(message
10696
10747
  };
10697
10748
  var updateMarkersOnAllMessages = function updateMarkersOnAllMessages(markersMap, name) {
10698
10749
  activeChannelAllMessages = activeChannelAllMessages.map(function (message) {
10699
- if (markersMap[message.id] && (message.deliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || name === MESSAGE_DELIVERY_STATUS.READ)) {
10700
- return _extends({}, message, {
10701
- deliveryStatus: name
10702
- });
10750
+ if (!markersMap[message.id]) {
10751
+ return message;
10703
10752
  }
10704
- return message;
10753
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, name);
10754
+ return _extends({}, message, statusUpdatedMessage);
10705
10755
  });
10706
10756
  };
10707
10757
  var getAllMessages = function getAllMessages() {
@@ -10779,7 +10829,8 @@ function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
10779
10829
  var _pendingMessagesMap$c;
10780
10830
  var updatedPendingMessages = (_pendingMessagesMap$c = pendingMessagesMap[channelId]) === null || _pendingMessagesMap$c === void 0 ? void 0 : _pendingMessagesMap$c.map(function (msg) {
10781
10831
  if (msg.tid === updatedMessage.messageId) {
10782
- return _extends({}, msg, updatedMessage.params);
10832
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(msg, updatedMessage.params.deliveryStatus);
10833
+ return _extends({}, msg, updatedMessage.params, statusUpdatedMessage);
10783
10834
  }
10784
10835
  return msg;
10785
10836
  });
@@ -10801,7 +10852,8 @@ function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
10801
10852
  messagesList.push(_extends({}, mes, updatedMessageData));
10802
10853
  continue;
10803
10854
  } else {
10804
- updatedMessageData = _extends({}, mes, updatedMessage.params);
10855
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(mes, updatedMessage.params.deliveryStatus);
10856
+ updatedMessageData = _extends({}, mes, updatedMessage.params, statusUpdatedMessage);
10805
10857
  var voteDetailsData = void 0;
10806
10858
  if (voteDetails) {
10807
10859
  voteDetailsData = handleVoteDetails(voteDetails, updatedMessageData);
@@ -10900,12 +10952,11 @@ function updateMessageStatusOnMap(channelId, newMarkers) {
10900
10952
  messagesMap[channelId] = messagesMap[channelId].map(function (mes) {
10901
10953
  var name = newMarkers.name;
10902
10954
  var markersMap = newMarkers.markersMap;
10903
- if (markersMap[mes.id] && (mes.deliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || name === MESSAGE_DELIVERY_STATUS.READ)) {
10904
- return _extends({}, mes, {
10905
- deliveryStatus: name
10906
- });
10955
+ if (!markersMap[mes.id]) {
10956
+ return mes;
10907
10957
  }
10908
- return mes;
10958
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(mes, name);
10959
+ return _extends({}, mes, statusUpdatedMessage);
10909
10960
  });
10910
10961
  }
10911
10962
  }
@@ -11126,7 +11177,8 @@ var initialState$1 = {
11126
11177
  pollVotesLoadingState: {},
11127
11178
  pollVotesInitialCount: null,
11128
11179
  pendingPollActions: {},
11129
- pendingMessagesMap: {}
11180
+ pendingMessagesMap: {},
11181
+ unreadScrollTo: true
11130
11182
  };
11131
11183
  var messageSlice = createSlice({
11132
11184
  name: 'messages',
@@ -11160,6 +11212,9 @@ var messageSlice = createSlice({
11160
11212
  setShowScrollToNewMessageButton: function setShowScrollToNewMessageButton(state, action) {
11161
11213
  state.showScrollToNewMessageButton = action.payload.state;
11162
11214
  },
11215
+ setUnreadScrollTo: function setUnreadScrollTo(state, action) {
11216
+ state.unreadScrollTo = action.payload.state;
11217
+ },
11163
11218
  setMessages: function setMessages(state, action) {
11164
11219
  state.activeChannelMessages = action.payload.messages;
11165
11220
  },
@@ -11220,17 +11275,18 @@ var messageSlice = createSlice({
11220
11275
  markersMap = _action$payload2.markersMap;
11221
11276
  var markerName = name;
11222
11277
  for (var index = 0; index < state.activeChannelMessages.length; index++) {
11223
- if (markerName === MESSAGE_DELIVERY_STATUS.DELIVERED && (state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.READ || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
11224
- continue;
11225
- }
11226
- if (markerName === MESSAGE_DELIVERY_STATUS.READ && (state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.READ || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
11278
+ if (!markersMap[state.activeChannelMessages[index].id]) {
11227
11279
  continue;
11228
11280
  }
11229
- if (markerName === MESSAGE_DELIVERY_STATUS.PLAYED && state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED) {
11230
- continue;
11231
- }
11232
- if (markersMap[state.activeChannelMessages[index].id] && state.activeChannelMessages[index].state !== 'Deleted') {
11233
- state.activeChannelMessages[index].deliveryStatus = markerName;
11281
+ if (state.activeChannelMessages[index].state !== 'Deleted') {
11282
+ var message = state.activeChannelMessages[index];
11283
+ var _updateMessageDeliver = updateMessageDeliveryStatusAndMarkers(message, markerName),
11284
+ markerTotals = _updateMessageDeliver.markerTotals,
11285
+ deliveryStatus = _updateMessageDeliver.deliveryStatus;
11286
+ state.activeChannelMessages[index] = _extends({}, message, {
11287
+ markerTotals: markerTotals,
11288
+ deliveryStatus: deliveryStatus
11289
+ });
11234
11290
  }
11235
11291
  }
11236
11292
  },
@@ -11247,10 +11303,15 @@ var messageSlice = createSlice({
11247
11303
  if (params.state === MESSAGE_STATUS.DELETE) {
11248
11304
  return _extends({}, params);
11249
11305
  } else {
11250
- var messageData = _extends({}, message, params);
11306
+ var statusUpdatedMessage = null;
11307
+ if (params !== null && params !== void 0 && params.deliveryStatus) {
11308
+ statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, params.deliveryStatus);
11309
+ }
11310
+ var messageOldData = _extends({}, message, params, statusUpdatedMessage);
11311
+ var messageData = _extends({}, messageOldData);
11251
11312
  if (voteDetails) {
11252
- messageData = _extends({}, messageData, {
11253
- pollDetails: handleVoteDetails(voteDetails, messageData)
11313
+ messageData = _extends({}, messageOldData, {
11314
+ pollDetails: handleVoteDetails(voteDetails, messageOldData)
11254
11315
  });
11255
11316
  }
11256
11317
  if (messageData.deliveryStatus !== MESSAGE_DELIVERY_STATUS.PENDING) {
@@ -11694,6 +11755,7 @@ var _messageSlice$actions = messageSlice.actions,
11694
11755
  setScrollToMentionedMessage = _messageSlice$actions.setScrollToMentionedMessage,
11695
11756
  setScrollToNewMessage = _messageSlice$actions.setScrollToNewMessage,
11696
11757
  setShowScrollToNewMessageButton = _messageSlice$actions.setShowScrollToNewMessageButton,
11758
+ setUnreadScrollTo = _messageSlice$actions.setUnreadScrollTo,
11697
11759
  setMessages = _messageSlice$actions.setMessages,
11698
11760
  addMessages = _messageSlice$actions.addMessages,
11699
11761
  updateMessagesStatus = _messageSlice$actions.updateMessagesStatus,
@@ -14787,9 +14849,7 @@ function watchForEvents() {
14787
14849
  _context2.n = 58;
14788
14850
  return effects.put(scrollToNewMessageAC(true, false, true));
14789
14851
  case 58:
14790
- if (getMessagesFromMap(_channel5.id) && getMessagesFromMap(_channel5.id).length) {
14791
- addMessageToMap(_channel5.id, message);
14792
- }
14852
+ addMessageToMap(_channel5.id, message);
14793
14853
  _context2.n = 59;
14794
14854
  return effects.put(updateChannelDataAC(_channel5.id, {
14795
14855
  messageCount: channelForAdd.messageCount,
@@ -14989,6 +15049,7 @@ function watchForEvents() {
14989
15049
  name: markerList.name,
14990
15050
  markersMap: markersMap
14991
15051
  });
15052
+ updateMessageStatusOnAllMessages(markerList.name, markersMap);
14992
15053
  _context2.n = 77;
14993
15054
  return effects.put(updateMessagesMarkersAC(channelId, markerList.name, markerList));
14994
15055
  case 77:
@@ -16857,7 +16918,7 @@ function switchChannel(action) {
16857
16918
  }
16858
16919
  currentActiveChannel = getChannelFromMap(getActiveChannelId());
16859
16920
  _context10.n = 11;
16860
- return effects.call(setUnreadScrollTo, true);
16921
+ return effects.put(setUnreadScrollToAC(true));
16861
16922
  case 11:
16862
16923
  _context10.n = 12;
16863
16924
  return effects.call(setActiveChannelId, channel && channel.id);
@@ -18501,6 +18562,9 @@ var pendingPollActionsSelector = function pendingPollActionsSelector(store) {
18501
18562
  var pendingMessagesMapSelector = function pendingMessagesMapSelector(store) {
18502
18563
  return store.MessageReducer.pendingMessagesMap;
18503
18564
  };
18565
+ var unreadScrollToSelector = function unreadScrollToSelector(store) {
18566
+ return store.MessageReducer.unreadScrollTo;
18567
+ };
18504
18568
 
18505
18569
  var getFrame = function getFrame(videoSrc, time) {
18506
18570
  try {
@@ -19222,15 +19286,12 @@ function sendTextMessage(action) {
19222
19286
  throw new Error('Connection required to send message');
19223
19287
  case 17:
19224
19288
  _context4.n = 18;
19225
- return effects.put(getMessagesAC(channel, true, channel.lastMessage.id, undefined, undefined, false));
19226
- case 18:
19227
- _context4.n = 19;
19228
19289
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19229
- case 19:
19230
- _context4.n = 22;
19290
+ case 18:
19291
+ _context4.n = 21;
19231
19292
  break;
19232
- case 20:
19233
- _context4.p = 20;
19293
+ case 19:
19294
+ _context4.p = 19;
19234
19295
  _t3 = _context4.v;
19235
19296
  log.error('error on send text message ... ', _t3);
19236
19297
  updateMessageOnMap(channel.id, {
@@ -19240,23 +19301,23 @@ function sendTextMessage(action) {
19240
19301
  }
19241
19302
  });
19242
19303
  if (!(activeChannelId === channel.id)) {
19243
- _context4.n = 21;
19304
+ _context4.n = 20;
19244
19305
  break;
19245
19306
  }
19246
19307
  updateMessageOnAllMessages(sendMessageTid, {
19247
19308
  state: MESSAGE_STATUS.FAILED
19248
19309
  });
19249
- _context4.n = 21;
19310
+ _context4.n = 20;
19250
19311
  return effects.put(updateMessageAC(sendMessageTid, {
19251
19312
  state: MESSAGE_STATUS.FAILED
19252
19313
  }));
19253
- case 21:
19254
- _context4.n = 22;
19314
+ case 20:
19315
+ _context4.n = 21;
19255
19316
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19256
- case 22:
19317
+ case 21:
19257
19318
  return _context4.a(2);
19258
19319
  }
19259
- }, _marked2$2, null, [[3, 20]]);
19320
+ }, _marked2$2, null, [[3, 19]]);
19260
19321
  }
19261
19322
  function forwardMessage(action) {
19262
19323
  var payload, message, channelId, connectionState, isForward, channel, SceytChatClient, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, pollDetails, messageToSend, pendingMessage, activeChannelId, isCachedChannel, hasNextMessages, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t4;
@@ -19928,7 +19989,7 @@ function editMessage(action) {
19928
19989
  }, _marked6$1, null, [[0, 5]]);
19929
19990
  }
19930
19991
  function getMessagesQuery(action) {
19931
- 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;
19992
+ 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, lastMessageId, _allMessages2, allMessagesAfterLastMessage, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
19932
19993
  return _regenerator().w(function (_context9) {
19933
19994
  while (1) switch (_context9.p = _context9.n) {
19934
19995
  case 0:
@@ -20209,13 +20270,19 @@ function getMessagesQuery(action) {
20209
20270
  updateMessageOnAllMessages(msg.id, updatedMessage || msg);
20210
20271
  updatedMessages.push(updatedMessage || msg);
20211
20272
  });
20273
+ lastMessageId = updatedMessages[updatedMessages.length - 1].id;
20274
+ _allMessages2 = getAllMessages();
20275
+ allMessagesAfterLastMessage = _allMessages2.filter(function (msg) {
20276
+ return msg.id > lastMessageId;
20277
+ });
20278
+ updatedMessages = [].concat(updatedMessages, allMessagesAfterLastMessage);
20212
20279
  setMessagesToMap(channel.id, updatedMessages);
20213
- setAllMessages([].concat(updatedMessages));
20280
+ setAllMessages(updatedMessages);
20214
20281
  _context9.n = 44;
20215
20282
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
20216
20283
  case 44:
20217
20284
  _context9.n = 45;
20218
- return effects.put(setMessagesHasPrevAC(result.hasNext));
20285
+ return effects.put(setMessagesHasPrevAC(true));
20219
20286
  case 45:
20220
20287
  _context9.n = 46;
20221
20288
  return effects.put(setMessagesHasNextAC(false));
@@ -36454,6 +36521,7 @@ var Message$1 = function Message(_ref) {
36454
36521
  reactionsPopupHorizontalPosition = _useState10[0],
36455
36522
  setReactionsPopupHorizontalPosition = _useState10[1];
36456
36523
  var scrollToNewMessage = useSelector(scrollToNewMessageSelector, reactRedux.shallowEqual);
36524
+ var unreadScrollTo = useSelector(unreadScrollToSelector, reactRedux.shallowEqual);
36457
36525
  var messageItemRef = React.useRef();
36458
36526
  var isVisible = useOnScreen(messageItemRef);
36459
36527
  var reactionsCount = message.reactionTotals && message.reactionTotals.reduce(function (prevValue, currentValue) {
@@ -36618,7 +36686,7 @@ var Message$1 = function Message(_ref) {
36618
36686
  }
36619
36687
  if (isVisible && message.incoming && !(message.userMarkers && message.userMarkers.length && message.userMarkers.find(function (marker) {
36620
36688
  return marker.name === MESSAGE_DELIVERY_STATUS.READ;
36621
- })) && channel.newMessageCount && channel.newMessageCount > 0 && connectionStatus === CONNECTION_STATUS.CONNECTED) {
36689
+ })) && channel.newMessageCount && channel.newMessageCount > 0 && connectionStatus === CONNECTION_STATUS.CONNECTED && !unreadScrollTo) {
36622
36690
  dispatch(markMessagesAsReadAC(channel.id, [message.id]));
36623
36691
  }
36624
36692
  };
@@ -36658,7 +36726,7 @@ var Message$1 = function Message(_ref) {
36658
36726
  }
36659
36727
  };
36660
36728
  React.useEffect(function () {
36661
- if (isVisible) {
36729
+ if (isVisible && !unreadScrollTo) {
36662
36730
  var _channel$lastMessage;
36663
36731
  if (setLastVisibleMessageId) {
36664
36732
  setLastVisibleMessageId(message.id);
@@ -37356,6 +37424,9 @@ var MessageList = function MessageList(_ref2) {
37356
37424
  var dispatch = useDispatch();
37357
37425
  var theme = useSelector(themeSelector);
37358
37426
  var channel = useSelector(activeChannelSelector);
37427
+ var _useState = React.useState(false),
37428
+ scrollIntoView = _useState[0],
37429
+ setScrollIntoView = _useState[1];
37359
37430
  var contactsMap = useSelector(contactsMapSelector, reactRedux.shallowEqual);
37360
37431
  var connectionStatus = useSelector(connectionStatusSelector, reactRedux.shallowEqual);
37361
37432
  var openedMessageMenuId = useSelector(openedMessageMenuSelector, reactRedux.shallowEqual);
@@ -37374,43 +37445,44 @@ var MessageList = function MessageList(_ref2) {
37374
37445
  var pollPendingPollActions = useSelector(pendingPollActionsSelector, reactRedux.shallowEqual);
37375
37446
  var pendingMessagesMap = useSelector(pendingMessagesMapSelector, reactRedux.shallowEqual);
37376
37447
  var showScrollToNewMessageButton = useSelector(showScrollToNewMessageButtonSelector, reactRedux.shallowEqual);
37448
+ var unreadScrollTo = useSelector(unreadScrollToSelector, reactRedux.shallowEqual);
37377
37449
  var messages = useSelector(activeChannelMessagesSelector, reactRedux.shallowEqual) || [];
37378
- var _useState = React.useState(''),
37379
- unreadMessageId = _useState[0],
37380
- setUnreadMessageId = _useState[1];
37381
- var _useState2 = React.useState(null),
37382
- mediaFile = _useState2[0],
37383
- setMediaFile = _useState2[1];
37450
+ var _useState2 = React.useState(''),
37451
+ unreadMessageId = _useState2[0],
37452
+ setUnreadMessageId = _useState2[1];
37384
37453
  var _useState3 = React.useState(null),
37385
- isDragging = _useState3[0],
37386
- setIsDragging = _useState3[1];
37454
+ mediaFile = _useState3[0],
37455
+ setMediaFile = _useState3[1];
37387
37456
  var _useState4 = React.useState(null),
37388
- showTopDate = _useState4[0],
37389
- setShowTopDate = _useState4[1];
37390
- var _useState5 = React.useState(false),
37391
- stopScrolling = _useState5[0],
37392
- setStopScrolling = _useState5[1];
37457
+ isDragging = _useState4[0],
37458
+ setIsDragging = _useState4[1];
37459
+ var _useState5 = React.useState(null),
37460
+ showTopDate = _useState5[0],
37461
+ setShowTopDate = _useState5[1];
37393
37462
  var _useState6 = React.useState(false),
37394
- isScrolling = _useState6[0],
37395
- setIsScrolling = _useState6[1];
37463
+ stopScrolling = _useState6[0],
37464
+ setStopScrolling = _useState6[1];
37465
+ var _useState7 = React.useState(false),
37466
+ isScrolling = _useState7[0],
37467
+ setIsScrolling = _useState7[1];
37396
37468
  var hideTopDateTimeout = React.useRef(null);
37397
- var _useState7 = React.useState(''),
37398
- lastVisibleMessageId = _useState7[0],
37399
- _setLastVisibleMessageId = _useState7[1];
37400
- var _useState8 = React.useState(null),
37401
- scrollToReply = _useState8[0],
37402
- setScrollToReply = _useState8[1];
37403
- var _useState9 = React.useState(0),
37404
- previousScrollTop = _useState9[0],
37405
- setPreviousScrollTop = _useState9[1];
37406
- var _useState0 = React.useState(false),
37407
- shouldPreserveScroll = _useState0[0],
37408
- setShouldPreserveScroll = _useState0[1];
37469
+ var _useState8 = React.useState(''),
37470
+ lastVisibleMessageId = _useState8[0],
37471
+ _setLastVisibleMessageId = _useState8[1];
37472
+ var _useState9 = React.useState(null),
37473
+ scrollToReply = _useState9[0],
37474
+ setScrollToReply = _useState9[1];
37475
+ var _useState0 = React.useState(0),
37476
+ previousScrollTop = _useState0[0],
37477
+ setPreviousScrollTop = _useState0[1];
37478
+ var _useState1 = React.useState(false),
37479
+ shouldPreserveScroll = _useState1[0],
37480
+ setShouldPreserveScroll = _useState1[1];
37409
37481
  var messageForReply = {};
37410
37482
  var attachmentsSelected = false;
37411
- var _useState1 = React.useState(''),
37412
- topDateLabel = _useState1[0],
37413
- setTopDateLabel = _useState1[1];
37483
+ var _useState10 = React.useState(''),
37484
+ topDateLabel = _useState10[0],
37485
+ setTopDateLabel = _useState10[1];
37414
37486
  var scrollRef = React.useRef(null);
37415
37487
  var loadFromServerRef = React.useRef(false);
37416
37488
  var loadDirectionRef = React.useRef('');
@@ -37899,6 +37971,8 @@ var MessageList = function MessageList(_ref2) {
37899
37971
  };
37900
37972
  }, [messagesLoading, messages, lastVisibleMessageId]);
37901
37973
  React.useEffect(function () {
37974
+ var interval = null;
37975
+ log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
37902
37976
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
37903
37977
  Object.keys(pendingMessagesMap).forEach(function (key) {
37904
37978
  pendingMessagesMap[key].forEach(function (msg) {
@@ -37908,37 +37982,49 @@ var MessageList = function MessageList(_ref2) {
37908
37982
  if (Object.keys(pollPendingPollActions).length > 0) {
37909
37983
  dispatch(resendPendingPollActionsAC(connectionStatus));
37910
37984
  }
37985
+ var count = 0;
37986
+ interval = setInterval(function () {
37987
+ if (count > 20) {
37988
+ clearInterval(interval);
37989
+ }
37990
+ count++;
37991
+ if (channel.id && Object.keys(pollPendingPollActions).length === 0 && Object.keys(pendingMessagesMap).length === 0) {
37992
+ clearInterval(interval);
37993
+ loadingRef.current = false;
37994
+ prevDisableRef.current = false;
37995
+ nextDisableRef.current = false;
37996
+ clearMessagesMap();
37997
+ removeAllMessages();
37998
+ dispatch(getMessagesAC(channel));
37999
+ }
38000
+ }, 100);
37911
38001
  }
37912
- }, [connectionStatus]);
37913
- React.useEffect(function () {
37914
- log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
37915
- if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
37916
- if (channel.id && Object.keys(pollPendingPollActions).length === 0 && Object.keys(pendingMessagesMap).length === 0) {
37917
- loadingRef.current = false;
37918
- prevDisableRef.current = false;
37919
- nextDisableRef.current = false;
37920
- clearMessagesMap();
37921
- removeAllMessages();
37922
- dispatch(getMessagesAC(channel));
38002
+ return function () {
38003
+ if (interval) {
38004
+ clearInterval(interval);
37923
38005
  }
37924
- }
37925
- }, [connectionStatus, pollPendingPollActions, pendingMessagesMap]);
38006
+ };
38007
+ }, [connectionStatus]);
37926
38008
  React.useEffect(function () {
37927
- var unreadScrollTo = getUnreadScrollTo();
37928
38009
  if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
37929
- if (scrollRef.current) {
37930
- scrollRef.current.style.scrollBehavior = 'inherit';
38010
+ var scrollElement = document.getElementById('scrollableDiv');
38011
+ if (scrollElement) {
38012
+ scrollElement.style.scrollBehavior = 'inherit';
37931
38013
  }
37932
38014
  var lastReadMessageNode = document.getElementById(channel.lastDisplayedMessageId);
37933
- if (lastReadMessageNode) {
37934
- scrollRef.current.scrollTop = lastReadMessageNode.offsetTop;
37935
- if (scrollRef.current) {
37936
- scrollRef.current.style.scrollBehavior = 'smooth';
37937
- }
37938
- setUnreadScrollTo(false);
38015
+ if (lastReadMessageNode && scrollElement) {
38016
+ scrollElement.scrollTo({
38017
+ top: lastReadMessageNode.offsetTop - 200,
38018
+ behavior: 'smooth'
38019
+ });
38020
+ setScrollIntoView(true);
38021
+ setTimeout(function () {
38022
+ dispatch(setUnreadScrollToAC(false));
38023
+ setScrollIntoView(false);
38024
+ }, 100);
37939
38025
  }
37940
38026
  }
37941
- }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
38027
+ }, [channel.id, channel.newMessageCount, scrollRef.current, unreadScrollTo, channel.lastDisplayedMessageId, scrollIntoView, messages.length]);
37942
38028
  React.useEffect(function () {
37943
38029
  return function () {
37944
38030
  if (hideTopDateTimeout.current) {
package/index.modern.js CHANGED
@@ -9101,15 +9101,6 @@ var query = {
9101
9101
  ReactionsQuery: null,
9102
9102
  PollVotesQueries: {}
9103
9103
  };
9104
- var unreadScrollTo = {
9105
- isScrolled: true
9106
- };
9107
- function getUnreadScrollTo() {
9108
- return unreadScrollTo.isScrolled;
9109
- }
9110
- function setUnreadScrollTo(state) {
9111
- unreadScrollTo.isScrolled = state;
9112
- }
9113
9104
  function getUploadImageIcon() {
9114
9105
  return UploadImageIcon;
9115
9106
  }
@@ -10314,6 +10305,11 @@ function showScrollToNewMessageButtonAC(state) {
10314
10305
  state: state
10315
10306
  });
10316
10307
  }
10308
+ function setUnreadScrollToAC(state) {
10309
+ return setUnreadScrollTo({
10310
+ state: state
10311
+ });
10312
+ }
10317
10313
  function loadMoreMessagesAC(channelId, limit, direction, messageId, hasNext) {
10318
10314
  return {
10319
10315
  type: LOAD_MORE_MESSAGES,
@@ -10646,6 +10642,51 @@ var MESSAGE_LOAD_DIRECTION = {
10646
10642
  PREV: 'prev',
10647
10643
  NEXT: 'next'
10648
10644
  };
10645
+ var shouldSkipDeliveryStatusUpdate = function shouldSkipDeliveryStatusUpdate(markerName, currentDeliveryStatus) {
10646
+ if (markerName === MESSAGE_DELIVERY_STATUS.SENT && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10647
+ return true;
10648
+ }
10649
+ if (markerName === MESSAGE_DELIVERY_STATUS.DELIVERED && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10650
+ return true;
10651
+ }
10652
+ if (markerName === MESSAGE_DELIVERY_STATUS.READ && (currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.READ || currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
10653
+ return true;
10654
+ }
10655
+ if (markerName === MESSAGE_DELIVERY_STATUS.PLAYED && currentDeliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED) {
10656
+ return true;
10657
+ }
10658
+ return false;
10659
+ };
10660
+ var updateMessageDeliveryStatusAndMarkers = function updateMessageDeliveryStatusAndMarkers(message, markerName) {
10661
+ var _message$markerTotals;
10662
+ if (shouldSkipDeliveryStatusUpdate(markerName, message.deliveryStatus)) {
10663
+ return {
10664
+ markerTotals: message.markerTotals,
10665
+ deliveryStatus: message.deliveryStatus
10666
+ };
10667
+ }
10668
+ var markerInMarkersTotal = message === null || message === void 0 ? void 0 : (_message$markerTotals = message.markerTotals) === null || _message$markerTotals === void 0 ? void 0 : _message$markerTotals.find(function (marker) {
10669
+ return marker.name === markerName;
10670
+ });
10671
+ if (!markerInMarkersTotal) {
10672
+ return {
10673
+ markerTotals: [].concat(message.markerTotals || [], [{
10674
+ name: markerName,
10675
+ count: 1
10676
+ }]),
10677
+ deliveryStatus: markerName
10678
+ };
10679
+ } else {
10680
+ return {
10681
+ markerTotals: message.markerTotals.map(function (marker) {
10682
+ return marker.name === markerName ? _extends({}, marker, {
10683
+ count: marker.count + 1
10684
+ }) : marker;
10685
+ }),
10686
+ deliveryStatus: markerName
10687
+ };
10688
+ }
10689
+ };
10649
10690
  var sendMessageHandler;
10650
10691
  var setSendMessageHandler = function setSendMessageHandler(handler) {
10651
10692
  sendMessageHandler = handler;
@@ -10677,7 +10718,8 @@ var updateMessageOnAllMessages = function updateMessageOnAllMessages(messageId,
10677
10718
  if (updatedParams.state === MESSAGE_STATUS.DELETE) {
10678
10719
  return _extends({}, updatedParams);
10679
10720
  }
10680
- var updatedMessage = _extends({}, message, updatedParams);
10721
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, updatedParams.deliveryStatus);
10722
+ var updatedMessage = _extends({}, message, updatedParams, statusUpdatedMessage);
10681
10723
  if (voteDetails) {
10682
10724
  updatedMessage = _extends({}, updatedMessage, {
10683
10725
  pollDetails: handleVoteDetails(voteDetails, updatedMessage)
@@ -10688,6 +10730,15 @@ var updateMessageOnAllMessages = function updateMessageOnAllMessages(messageId,
10688
10730
  return message;
10689
10731
  });
10690
10732
  };
10733
+ var updateMessageStatusOnAllMessages = function updateMessageStatusOnAllMessages(name, markersMap) {
10734
+ activeChannelAllMessages = activeChannelAllMessages.map(function (message) {
10735
+ if (markersMap[message.id]) {
10736
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, name);
10737
+ return _extends({}, message, statusUpdatedMessage);
10738
+ }
10739
+ return message;
10740
+ });
10741
+ };
10691
10742
  var removeMessageFromAllMessages = function removeMessageFromAllMessages(messageId) {
10692
10743
  activeChannelAllMessages = [].concat(activeChannelAllMessages).filter(function (msg) {
10693
10744
  return !(msg.id === messageId || msg.tid === messageId);
@@ -10695,12 +10746,11 @@ var removeMessageFromAllMessages = function removeMessageFromAllMessages(message
10695
10746
  };
10696
10747
  var updateMarkersOnAllMessages = function updateMarkersOnAllMessages(markersMap, name) {
10697
10748
  activeChannelAllMessages = activeChannelAllMessages.map(function (message) {
10698
- if (markersMap[message.id] && (message.deliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || name === MESSAGE_DELIVERY_STATUS.READ)) {
10699
- return _extends({}, message, {
10700
- deliveryStatus: name
10701
- });
10749
+ if (!markersMap[message.id]) {
10750
+ return message;
10702
10751
  }
10703
- return message;
10752
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, name);
10753
+ return _extends({}, message, statusUpdatedMessage);
10704
10754
  });
10705
10755
  };
10706
10756
  var getAllMessages = function getAllMessages() {
@@ -10778,7 +10828,8 @@ function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
10778
10828
  var _pendingMessagesMap$c;
10779
10829
  var updatedPendingMessages = (_pendingMessagesMap$c = pendingMessagesMap[channelId]) === null || _pendingMessagesMap$c === void 0 ? void 0 : _pendingMessagesMap$c.map(function (msg) {
10780
10830
  if (msg.tid === updatedMessage.messageId) {
10781
- return _extends({}, msg, updatedMessage.params);
10831
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(msg, updatedMessage.params.deliveryStatus);
10832
+ return _extends({}, msg, updatedMessage.params, statusUpdatedMessage);
10782
10833
  }
10783
10834
  return msg;
10784
10835
  });
@@ -10800,7 +10851,8 @@ function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
10800
10851
  messagesList.push(_extends({}, mes, updatedMessageData));
10801
10852
  continue;
10802
10853
  } else {
10803
- updatedMessageData = _extends({}, mes, updatedMessage.params);
10854
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(mes, updatedMessage.params.deliveryStatus);
10855
+ updatedMessageData = _extends({}, mes, updatedMessage.params, statusUpdatedMessage);
10804
10856
  var voteDetailsData = void 0;
10805
10857
  if (voteDetails) {
10806
10858
  voteDetailsData = handleVoteDetails(voteDetails, updatedMessageData);
@@ -10899,12 +10951,11 @@ function updateMessageStatusOnMap(channelId, newMarkers) {
10899
10951
  messagesMap[channelId] = messagesMap[channelId].map(function (mes) {
10900
10952
  var name = newMarkers.name;
10901
10953
  var markersMap = newMarkers.markersMap;
10902
- if (markersMap[mes.id] && (mes.deliveryStatus === MESSAGE_DELIVERY_STATUS.SENT || name === MESSAGE_DELIVERY_STATUS.READ)) {
10903
- return _extends({}, mes, {
10904
- deliveryStatus: name
10905
- });
10954
+ if (!markersMap[mes.id]) {
10955
+ return mes;
10906
10956
  }
10907
- return mes;
10957
+ var statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(mes, name);
10958
+ return _extends({}, mes, statusUpdatedMessage);
10908
10959
  });
10909
10960
  }
10910
10961
  }
@@ -11125,7 +11176,8 @@ var initialState$1 = {
11125
11176
  pollVotesLoadingState: {},
11126
11177
  pollVotesInitialCount: null,
11127
11178
  pendingPollActions: {},
11128
- pendingMessagesMap: {}
11179
+ pendingMessagesMap: {},
11180
+ unreadScrollTo: true
11129
11181
  };
11130
11182
  var messageSlice = createSlice({
11131
11183
  name: 'messages',
@@ -11159,6 +11211,9 @@ var messageSlice = createSlice({
11159
11211
  setShowScrollToNewMessageButton: function setShowScrollToNewMessageButton(state, action) {
11160
11212
  state.showScrollToNewMessageButton = action.payload.state;
11161
11213
  },
11214
+ setUnreadScrollTo: function setUnreadScrollTo(state, action) {
11215
+ state.unreadScrollTo = action.payload.state;
11216
+ },
11162
11217
  setMessages: function setMessages(state, action) {
11163
11218
  state.activeChannelMessages = action.payload.messages;
11164
11219
  },
@@ -11219,17 +11274,18 @@ var messageSlice = createSlice({
11219
11274
  markersMap = _action$payload2.markersMap;
11220
11275
  var markerName = name;
11221
11276
  for (var index = 0; index < state.activeChannelMessages.length; index++) {
11222
- if (markerName === MESSAGE_DELIVERY_STATUS.DELIVERED && (state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.DELIVERED || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.READ || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
11223
- continue;
11224
- }
11225
- if (markerName === MESSAGE_DELIVERY_STATUS.READ && (state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.READ || state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED)) {
11277
+ if (!markersMap[state.activeChannelMessages[index].id]) {
11226
11278
  continue;
11227
11279
  }
11228
- if (markerName === MESSAGE_DELIVERY_STATUS.PLAYED && state.activeChannelMessages[index].deliveryStatus === MESSAGE_DELIVERY_STATUS.PLAYED) {
11229
- continue;
11230
- }
11231
- if (markersMap[state.activeChannelMessages[index].id] && state.activeChannelMessages[index].state !== 'Deleted') {
11232
- state.activeChannelMessages[index].deliveryStatus = markerName;
11280
+ if (state.activeChannelMessages[index].state !== 'Deleted') {
11281
+ var message = state.activeChannelMessages[index];
11282
+ var _updateMessageDeliver = updateMessageDeliveryStatusAndMarkers(message, markerName),
11283
+ markerTotals = _updateMessageDeliver.markerTotals,
11284
+ deliveryStatus = _updateMessageDeliver.deliveryStatus;
11285
+ state.activeChannelMessages[index] = _extends({}, message, {
11286
+ markerTotals: markerTotals,
11287
+ deliveryStatus: deliveryStatus
11288
+ });
11233
11289
  }
11234
11290
  }
11235
11291
  },
@@ -11246,10 +11302,15 @@ var messageSlice = createSlice({
11246
11302
  if (params.state === MESSAGE_STATUS.DELETE) {
11247
11303
  return _extends({}, params);
11248
11304
  } else {
11249
- var messageData = _extends({}, message, params);
11305
+ var statusUpdatedMessage = null;
11306
+ if (params !== null && params !== void 0 && params.deliveryStatus) {
11307
+ statusUpdatedMessage = updateMessageDeliveryStatusAndMarkers(message, params.deliveryStatus);
11308
+ }
11309
+ var messageOldData = _extends({}, message, params, statusUpdatedMessage);
11310
+ var messageData = _extends({}, messageOldData);
11250
11311
  if (voteDetails) {
11251
- messageData = _extends({}, messageData, {
11252
- pollDetails: handleVoteDetails(voteDetails, messageData)
11312
+ messageData = _extends({}, messageOldData, {
11313
+ pollDetails: handleVoteDetails(voteDetails, messageOldData)
11253
11314
  });
11254
11315
  }
11255
11316
  if (messageData.deliveryStatus !== MESSAGE_DELIVERY_STATUS.PENDING) {
@@ -11693,6 +11754,7 @@ var _messageSlice$actions = messageSlice.actions,
11693
11754
  setScrollToMentionedMessage = _messageSlice$actions.setScrollToMentionedMessage,
11694
11755
  setScrollToNewMessage = _messageSlice$actions.setScrollToNewMessage,
11695
11756
  setShowScrollToNewMessageButton = _messageSlice$actions.setShowScrollToNewMessageButton,
11757
+ setUnreadScrollTo = _messageSlice$actions.setUnreadScrollTo,
11696
11758
  setMessages = _messageSlice$actions.setMessages,
11697
11759
  addMessages = _messageSlice$actions.addMessages,
11698
11760
  updateMessagesStatus = _messageSlice$actions.updateMessagesStatus,
@@ -14786,9 +14848,7 @@ function watchForEvents() {
14786
14848
  _context2.n = 58;
14787
14849
  return put(scrollToNewMessageAC(true, false, true));
14788
14850
  case 58:
14789
- if (getMessagesFromMap(_channel5.id) && getMessagesFromMap(_channel5.id).length) {
14790
- addMessageToMap(_channel5.id, message);
14791
- }
14851
+ addMessageToMap(_channel5.id, message);
14792
14852
  _context2.n = 59;
14793
14853
  return put(updateChannelDataAC(_channel5.id, {
14794
14854
  messageCount: channelForAdd.messageCount,
@@ -14988,6 +15048,7 @@ function watchForEvents() {
14988
15048
  name: markerList.name,
14989
15049
  markersMap: markersMap
14990
15050
  });
15051
+ updateMessageStatusOnAllMessages(markerList.name, markersMap);
14991
15052
  _context2.n = 77;
14992
15053
  return put(updateMessagesMarkersAC(channelId, markerList.name, markerList));
14993
15054
  case 77:
@@ -16856,7 +16917,7 @@ function switchChannel(action) {
16856
16917
  }
16857
16918
  currentActiveChannel = getChannelFromMap(getActiveChannelId());
16858
16919
  _context10.n = 11;
16859
- return call(setUnreadScrollTo, true);
16920
+ return put(setUnreadScrollToAC(true));
16860
16921
  case 11:
16861
16922
  _context10.n = 12;
16862
16923
  return call(setActiveChannelId, channel && channel.id);
@@ -18500,6 +18561,9 @@ var pendingPollActionsSelector = function pendingPollActionsSelector(store) {
18500
18561
  var pendingMessagesMapSelector = function pendingMessagesMapSelector(store) {
18501
18562
  return store.MessageReducer.pendingMessagesMap;
18502
18563
  };
18564
+ var unreadScrollToSelector = function unreadScrollToSelector(store) {
18565
+ return store.MessageReducer.unreadScrollTo;
18566
+ };
18503
18567
 
18504
18568
  var getFrame = function getFrame(videoSrc, time) {
18505
18569
  try {
@@ -19221,15 +19285,12 @@ function sendTextMessage(action) {
19221
19285
  throw new Error('Connection required to send message');
19222
19286
  case 17:
19223
19287
  _context4.n = 18;
19224
- return put(getMessagesAC(channel, true, channel.lastMessage.id, undefined, undefined, false));
19225
- case 18:
19226
- _context4.n = 19;
19227
19288
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19228
- case 19:
19229
- _context4.n = 22;
19289
+ case 18:
19290
+ _context4.n = 21;
19230
19291
  break;
19231
- case 20:
19232
- _context4.p = 20;
19292
+ case 19:
19293
+ _context4.p = 19;
19233
19294
  _t3 = _context4.v;
19234
19295
  log.error('error on send text message ... ', _t3);
19235
19296
  updateMessageOnMap(channel.id, {
@@ -19239,23 +19300,23 @@ function sendTextMessage(action) {
19239
19300
  }
19240
19301
  });
19241
19302
  if (!(activeChannelId === channel.id)) {
19242
- _context4.n = 21;
19303
+ _context4.n = 20;
19243
19304
  break;
19244
19305
  }
19245
19306
  updateMessageOnAllMessages(sendMessageTid, {
19246
19307
  state: MESSAGE_STATUS.FAILED
19247
19308
  });
19248
- _context4.n = 21;
19309
+ _context4.n = 20;
19249
19310
  return put(updateMessageAC(sendMessageTid, {
19250
19311
  state: MESSAGE_STATUS.FAILED
19251
19312
  }));
19252
- case 21:
19253
- _context4.n = 22;
19313
+ case 20:
19314
+ _context4.n = 21;
19254
19315
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19255
- case 22:
19316
+ case 21:
19256
19317
  return _context4.a(2);
19257
19318
  }
19258
- }, _marked2$2, null, [[3, 20]]);
19319
+ }, _marked2$2, null, [[3, 19]]);
19259
19320
  }
19260
19321
  function forwardMessage(action) {
19261
19322
  var payload, message, channelId, connectionState, isForward, channel, SceytChatClient, mentionedUserIds, attachments, attachmentBuilder, att, messageBuilder, pollDetails, messageToSend, pendingMessage, activeChannelId, isCachedChannel, hasNextMessages, messageResponse, messageUpdateData, messageToUpdate, channelUpdateParam, _t4;
@@ -19927,7 +19988,7 @@ function editMessage(action) {
19927
19988
  }, _marked6$1, null, [[0, 5]]);
19928
19989
  }
19929
19990
  function getMessagesQuery(action) {
19930
- 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;
19991
+ 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, lastMessageId, _allMessages2, allMessagesAfterLastMessage, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
19931
19992
  return _regenerator().w(function (_context9) {
19932
19993
  while (1) switch (_context9.p = _context9.n) {
19933
19994
  case 0:
@@ -20208,13 +20269,19 @@ function getMessagesQuery(action) {
20208
20269
  updateMessageOnAllMessages(msg.id, updatedMessage || msg);
20209
20270
  updatedMessages.push(updatedMessage || msg);
20210
20271
  });
20272
+ lastMessageId = updatedMessages[updatedMessages.length - 1].id;
20273
+ _allMessages2 = getAllMessages();
20274
+ allMessagesAfterLastMessage = _allMessages2.filter(function (msg) {
20275
+ return msg.id > lastMessageId;
20276
+ });
20277
+ updatedMessages = [].concat(updatedMessages, allMessagesAfterLastMessage);
20211
20278
  setMessagesToMap(channel.id, updatedMessages);
20212
- setAllMessages([].concat(updatedMessages));
20279
+ setAllMessages(updatedMessages);
20213
20280
  _context9.n = 44;
20214
20281
  return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
20215
20282
  case 44:
20216
20283
  _context9.n = 45;
20217
- return put(setMessagesHasPrevAC(result.hasNext));
20284
+ return put(setMessagesHasPrevAC(true));
20218
20285
  case 45:
20219
20286
  _context9.n = 46;
20220
20287
  return put(setMessagesHasNextAC(false));
@@ -36453,6 +36520,7 @@ var Message$1 = function Message(_ref) {
36453
36520
  reactionsPopupHorizontalPosition = _useState10[0],
36454
36521
  setReactionsPopupHorizontalPosition = _useState10[1];
36455
36522
  var scrollToNewMessage = useSelector(scrollToNewMessageSelector, shallowEqual);
36523
+ var unreadScrollTo = useSelector(unreadScrollToSelector, shallowEqual);
36456
36524
  var messageItemRef = useRef();
36457
36525
  var isVisible = useOnScreen(messageItemRef);
36458
36526
  var reactionsCount = message.reactionTotals && message.reactionTotals.reduce(function (prevValue, currentValue) {
@@ -36617,7 +36685,7 @@ var Message$1 = function Message(_ref) {
36617
36685
  }
36618
36686
  if (isVisible && message.incoming && !(message.userMarkers && message.userMarkers.length && message.userMarkers.find(function (marker) {
36619
36687
  return marker.name === MESSAGE_DELIVERY_STATUS.READ;
36620
- })) && channel.newMessageCount && channel.newMessageCount > 0 && connectionStatus === CONNECTION_STATUS.CONNECTED) {
36688
+ })) && channel.newMessageCount && channel.newMessageCount > 0 && connectionStatus === CONNECTION_STATUS.CONNECTED && !unreadScrollTo) {
36621
36689
  dispatch(markMessagesAsReadAC(channel.id, [message.id]));
36622
36690
  }
36623
36691
  };
@@ -36657,7 +36725,7 @@ var Message$1 = function Message(_ref) {
36657
36725
  }
36658
36726
  };
36659
36727
  useEffect(function () {
36660
- if (isVisible) {
36728
+ if (isVisible && !unreadScrollTo) {
36661
36729
  var _channel$lastMessage;
36662
36730
  if (setLastVisibleMessageId) {
36663
36731
  setLastVisibleMessageId(message.id);
@@ -37355,6 +37423,9 @@ var MessageList = function MessageList(_ref2) {
37355
37423
  var dispatch = useDispatch();
37356
37424
  var theme = useSelector(themeSelector);
37357
37425
  var channel = useSelector(activeChannelSelector);
37426
+ var _useState = useState(false),
37427
+ scrollIntoView = _useState[0],
37428
+ setScrollIntoView = _useState[1];
37358
37429
  var contactsMap = useSelector(contactsMapSelector, shallowEqual);
37359
37430
  var connectionStatus = useSelector(connectionStatusSelector, shallowEqual);
37360
37431
  var openedMessageMenuId = useSelector(openedMessageMenuSelector, shallowEqual);
@@ -37373,43 +37444,44 @@ var MessageList = function MessageList(_ref2) {
37373
37444
  var pollPendingPollActions = useSelector(pendingPollActionsSelector, shallowEqual);
37374
37445
  var pendingMessagesMap = useSelector(pendingMessagesMapSelector, shallowEqual);
37375
37446
  var showScrollToNewMessageButton = useSelector(showScrollToNewMessageButtonSelector, shallowEqual);
37447
+ var unreadScrollTo = useSelector(unreadScrollToSelector, shallowEqual);
37376
37448
  var messages = useSelector(activeChannelMessagesSelector, shallowEqual) || [];
37377
- var _useState = useState(''),
37378
- unreadMessageId = _useState[0],
37379
- setUnreadMessageId = _useState[1];
37380
- var _useState2 = useState(null),
37381
- mediaFile = _useState2[0],
37382
- setMediaFile = _useState2[1];
37449
+ var _useState2 = useState(''),
37450
+ unreadMessageId = _useState2[0],
37451
+ setUnreadMessageId = _useState2[1];
37383
37452
  var _useState3 = useState(null),
37384
- isDragging = _useState3[0],
37385
- setIsDragging = _useState3[1];
37453
+ mediaFile = _useState3[0],
37454
+ setMediaFile = _useState3[1];
37386
37455
  var _useState4 = useState(null),
37387
- showTopDate = _useState4[0],
37388
- setShowTopDate = _useState4[1];
37389
- var _useState5 = useState(false),
37390
- stopScrolling = _useState5[0],
37391
- setStopScrolling = _useState5[1];
37456
+ isDragging = _useState4[0],
37457
+ setIsDragging = _useState4[1];
37458
+ var _useState5 = useState(null),
37459
+ showTopDate = _useState5[0],
37460
+ setShowTopDate = _useState5[1];
37392
37461
  var _useState6 = useState(false),
37393
- isScrolling = _useState6[0],
37394
- setIsScrolling = _useState6[1];
37462
+ stopScrolling = _useState6[0],
37463
+ setStopScrolling = _useState6[1];
37464
+ var _useState7 = useState(false),
37465
+ isScrolling = _useState7[0],
37466
+ setIsScrolling = _useState7[1];
37395
37467
  var hideTopDateTimeout = useRef(null);
37396
- var _useState7 = useState(''),
37397
- lastVisibleMessageId = _useState7[0],
37398
- _setLastVisibleMessageId = _useState7[1];
37399
- var _useState8 = useState(null),
37400
- scrollToReply = _useState8[0],
37401
- setScrollToReply = _useState8[1];
37402
- var _useState9 = useState(0),
37403
- previousScrollTop = _useState9[0],
37404
- setPreviousScrollTop = _useState9[1];
37405
- var _useState0 = useState(false),
37406
- shouldPreserveScroll = _useState0[0],
37407
- setShouldPreserveScroll = _useState0[1];
37468
+ var _useState8 = useState(''),
37469
+ lastVisibleMessageId = _useState8[0],
37470
+ _setLastVisibleMessageId = _useState8[1];
37471
+ var _useState9 = useState(null),
37472
+ scrollToReply = _useState9[0],
37473
+ setScrollToReply = _useState9[1];
37474
+ var _useState0 = useState(0),
37475
+ previousScrollTop = _useState0[0],
37476
+ setPreviousScrollTop = _useState0[1];
37477
+ var _useState1 = useState(false),
37478
+ shouldPreserveScroll = _useState1[0],
37479
+ setShouldPreserveScroll = _useState1[1];
37408
37480
  var messageForReply = {};
37409
37481
  var attachmentsSelected = false;
37410
- var _useState1 = useState(''),
37411
- topDateLabel = _useState1[0],
37412
- setTopDateLabel = _useState1[1];
37482
+ var _useState10 = useState(''),
37483
+ topDateLabel = _useState10[0],
37484
+ setTopDateLabel = _useState10[1];
37413
37485
  var scrollRef = useRef(null);
37414
37486
  var loadFromServerRef = useRef(false);
37415
37487
  var loadDirectionRef = useRef('');
@@ -37898,6 +37970,8 @@ var MessageList = function MessageList(_ref2) {
37898
37970
  };
37899
37971
  }, [messagesLoading, messages, lastVisibleMessageId]);
37900
37972
  useEffect(function () {
37973
+ var interval = null;
37974
+ log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
37901
37975
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
37902
37976
  Object.keys(pendingMessagesMap).forEach(function (key) {
37903
37977
  pendingMessagesMap[key].forEach(function (msg) {
@@ -37907,37 +37981,49 @@ var MessageList = function MessageList(_ref2) {
37907
37981
  if (Object.keys(pollPendingPollActions).length > 0) {
37908
37982
  dispatch(resendPendingPollActionsAC(connectionStatus));
37909
37983
  }
37984
+ var count = 0;
37985
+ interval = setInterval(function () {
37986
+ if (count > 20) {
37987
+ clearInterval(interval);
37988
+ }
37989
+ count++;
37990
+ if (channel.id && Object.keys(pollPendingPollActions).length === 0 && Object.keys(pendingMessagesMap).length === 0) {
37991
+ clearInterval(interval);
37992
+ loadingRef.current = false;
37993
+ prevDisableRef.current = false;
37994
+ nextDisableRef.current = false;
37995
+ clearMessagesMap();
37996
+ removeAllMessages();
37997
+ dispatch(getMessagesAC(channel));
37998
+ }
37999
+ }, 100);
37910
38000
  }
37911
- }, [connectionStatus]);
37912
- useEffect(function () {
37913
- log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
37914
- if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
37915
- if (channel.id && Object.keys(pollPendingPollActions).length === 0 && Object.keys(pendingMessagesMap).length === 0) {
37916
- loadingRef.current = false;
37917
- prevDisableRef.current = false;
37918
- nextDisableRef.current = false;
37919
- clearMessagesMap();
37920
- removeAllMessages();
37921
- dispatch(getMessagesAC(channel));
38001
+ return function () {
38002
+ if (interval) {
38003
+ clearInterval(interval);
37922
38004
  }
37923
- }
37924
- }, [connectionStatus, pollPendingPollActions, pendingMessagesMap]);
38005
+ };
38006
+ }, [connectionStatus]);
37925
38007
  useEffect(function () {
37926
- var unreadScrollTo = getUnreadScrollTo();
37927
38008
  if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
37928
- if (scrollRef.current) {
37929
- scrollRef.current.style.scrollBehavior = 'inherit';
38009
+ var scrollElement = document.getElementById('scrollableDiv');
38010
+ if (scrollElement) {
38011
+ scrollElement.style.scrollBehavior = 'inherit';
37930
38012
  }
37931
38013
  var lastReadMessageNode = document.getElementById(channel.lastDisplayedMessageId);
37932
- if (lastReadMessageNode) {
37933
- scrollRef.current.scrollTop = lastReadMessageNode.offsetTop;
37934
- if (scrollRef.current) {
37935
- scrollRef.current.style.scrollBehavior = 'smooth';
37936
- }
37937
- setUnreadScrollTo(false);
38014
+ if (lastReadMessageNode && scrollElement) {
38015
+ scrollElement.scrollTo({
38016
+ top: lastReadMessageNode.offsetTop - 200,
38017
+ behavior: 'smooth'
38018
+ });
38019
+ setScrollIntoView(true);
38020
+ setTimeout(function () {
38021
+ dispatch(setUnreadScrollToAC(false));
38022
+ setScrollIntoView(false);
38023
+ }, 100);
37938
38024
  }
37939
38025
  }
37940
- }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
38026
+ }, [channel.id, channel.newMessageCount, scrollRef.current, unreadScrollTo, channel.lastDisplayedMessageId, scrollIntoView, messages.length]);
37941
38027
  useEffect(function () {
37942
38028
  return function () {
37943
38029
  if (hideTopDateTimeout.current) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceyt-chat-react-uikit",
3
- "version": "1.7.6-beta.6",
3
+ "version": "1.7.6-beta.7",
4
4
  "description": "Interactive React UI Components for Sceyt Chat.",
5
5
  "author": "Sceyt",
6
6
  "license": "MIT",