sceyt-chat-react-uikit 1.7.1-beta.16 → 1.7.1-beta.18

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 +350 -263
  2. package/index.modern.js +350 -263
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -10340,6 +10340,7 @@ var initialState$1 = {
10340
10340
  attachmentsUploadingState: {},
10341
10341
  scrollToMessage: null,
10342
10342
  scrollToMessageHighlight: true,
10343
+ scrollToMessageBehavior: 'smooth',
10343
10344
  scrollToMentionedMessage: false,
10344
10345
  reactionsList: [],
10345
10346
  reactionsHasNext: true,
@@ -10366,6 +10367,7 @@ var messageSlice = createSlice({
10366
10367
  setScrollToMessage: function setScrollToMessage(state, action) {
10367
10368
  state.scrollToMessage = action.payload.messageId;
10368
10369
  state.scrollToMessageHighlight = action.payload.highlight;
10370
+ state.scrollToMessageBehavior = action.payload.behavior || 'smooth';
10369
10371
  },
10370
10372
  setScrollToMentionedMessage: function setScrollToMentionedMessage(state, action) {
10371
10373
  state.scrollToMentionedMessage = action.payload.isScrollToMentionedMessage;
@@ -10395,7 +10397,7 @@ var messageSlice = createSlice({
10395
10397
  return msg.tid === message.tid || msg.id === message.id;
10396
10398
  });
10397
10399
  });
10398
- if (direction === MESSAGE_LOAD_DIRECTION.PREV) {
10400
+ if (direction === MESSAGE_LOAD_DIRECTION.PREV && newMessagesLength > 0) {
10399
10401
  if (currentMessagesLength + newMessagesLength >= MESSAGES_MAX_LENGTH) {
10400
10402
  var _state$activeChannelM;
10401
10403
  setHasNextCached(true);
@@ -10417,7 +10419,7 @@ var messageSlice = createSlice({
10417
10419
  var _state$activeChannelM3;
10418
10420
  (_state$activeChannelM3 = state.activeChannelMessages).splice.apply(_state$activeChannelM3, [0, 0].concat(messagesIsNotIncludeInActiveChannelMessages));
10419
10421
  }
10420
- } else if (direction === 'next') {
10422
+ } else if (direction === 'next' && newMessagesLength > 0) {
10421
10423
  if (currentMessagesLength >= MESSAGES_MAX_LENGTH) {
10422
10424
  var _state$activeChannelM4;
10423
10425
  setHasPrevCached(true);
@@ -11617,7 +11619,7 @@ function setMessageToEditAC(message) {
11617
11619
  message: message
11618
11620
  });
11619
11621
  }
11620
- function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight) {
11622
+ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior) {
11621
11623
  if (highlight === void 0) {
11622
11624
  highlight = true;
11623
11625
  }
@@ -11629,7 +11631,8 @@ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliv
11629
11631
  messageId: messageId,
11630
11632
  limit: limit,
11631
11633
  withDeliveredMessages: withDeliveredMessages,
11632
- highlight: highlight
11634
+ highlight: highlight,
11635
+ behavior: behavior
11633
11636
  }
11634
11637
  };
11635
11638
  }
@@ -11643,13 +11646,14 @@ function getMessageAC(channelId, messageId, limit) {
11643
11646
  }
11644
11647
  };
11645
11648
  }
11646
- function setScrollToMessagesAC(messageId, highlight) {
11649
+ function setScrollToMessagesAC(messageId, highlight, behavior) {
11647
11650
  if (highlight === void 0) {
11648
11651
  highlight = true;
11649
11652
  }
11650
11653
  return setScrollToMessage({
11651
11654
  messageId: messageId || '',
11652
- highlight: highlight
11655
+ highlight: highlight,
11656
+ behavior: behavior
11653
11657
  });
11654
11658
  }
11655
11659
  function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
@@ -17110,6 +17114,9 @@ var scrollToMessageSelector = function scrollToMessageSelector(store) {
17110
17114
  var scrollToMessageHighlightSelector = function scrollToMessageHighlightSelector(store) {
17111
17115
  return store.MessageReducer.scrollToMessageHighlight;
17112
17116
  };
17117
+ var scrollToMessageBehaviorSelector = function scrollToMessageBehaviorSelector(store) {
17118
+ return store.MessageReducer.scrollToMessageBehavior;
17119
+ };
17113
17120
  var reactionsListSelector = function reactionsListSelector(store) {
17114
17121
  return store.MessageReducer.reactionsList;
17115
17122
  };
@@ -18503,7 +18510,7 @@ function editMessage(action) {
18503
18510
  }, _marked6$1, null, [[0, 5]]);
18504
18511
  }
18505
18512
  function getMessagesQuery(action) {
18506
- var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, 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;
18513
+ 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;
18507
18514
  return _regenerator().w(function (_context9) {
18508
18515
  while (1) switch (_context9.p = _context9.n) {
18509
18516
  case 0:
@@ -18511,9 +18518,9 @@ function getMessagesQuery(action) {
18511
18518
  _context9.n = 1;
18512
18519
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
18513
18520
  case 1:
18514
- _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;
18521
+ _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;
18515
18522
  if (!(channel.id && !channel.isMockChannel)) {
18516
- _context9.n = 47;
18523
+ _context9.n = 48;
18517
18524
  break;
18518
18525
  }
18519
18526
  SceytChatClient = getClient();
@@ -18541,6 +18548,7 @@ function getMessagesQuery(action) {
18541
18548
  break;
18542
18549
  }
18543
18550
  setHasPrevCached(false);
18551
+ setMessagesToMap(channel.id, []);
18544
18552
  setAllMessages([]);
18545
18553
  _context9.n = 3;
18546
18554
  return effects.call(messageQuery.loadPreviousMessageId, '0');
@@ -18597,13 +18605,13 @@ function getMessagesQuery(action) {
18597
18605
  break;
18598
18606
  }
18599
18607
  _context9.n = 12;
18600
- return effects.put(setScrollToMessagesAC(messageId, highlight));
18608
+ return effects.put(setScrollToMessagesAC(messageId, highlight, behavior));
18601
18609
  case 12:
18602
- _context9.n = 45;
18610
+ _context9.n = 46;
18603
18611
  break;
18604
18612
  case 13:
18605
18613
  if (!messageId) {
18606
- _context9.n = 25;
18614
+ _context9.n = 26;
18607
18615
  break;
18608
18616
  }
18609
18617
  _allMessages = getAllMessages();
@@ -18612,7 +18620,7 @@ function getMessagesQuery(action) {
18612
18620
  });
18613
18621
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
18614
18622
  if (!(messageIndex >= maxLengthPart)) {
18615
- _context9.n = 15;
18623
+ _context9.n = 16;
18616
18624
  break;
18617
18625
  }
18618
18626
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
@@ -18621,151 +18629,160 @@ function getMessagesQuery(action) {
18621
18629
  case 14:
18622
18630
  setHasPrevCached(messageIndex > maxLengthPart);
18623
18631
  setHasNextCached(_allMessages.length > maxLengthPart);
18632
+ _context9.n = 15;
18633
+ return effects.put(setMessagesHasPrevAC(true));
18634
+ case 15:
18624
18635
  _context9.n = 22;
18625
18636
  break;
18626
- case 15:
18637
+ case 16:
18627
18638
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18628
18639
  log.info('load by message id from server ...............', messageId);
18629
- _context9.n = 16;
18640
+ _context9.n = 17;
18630
18641
  return effects.call(messageQuery.loadNearMessageId, messageId);
18631
- case 16:
18642
+ case 17:
18632
18643
  result = _context9.v;
18633
18644
  if (!(result.messages.length === 50)) {
18634
- _context9.n = 19;
18645
+ _context9.n = 20;
18635
18646
  break;
18636
18647
  }
18637
- messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
18638
- _context9.n = 17;
18648
+ messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18649
+ _context9.n = 18;
18639
18650
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18640
- case 17:
18651
+ case 18:
18641
18652
  _secondResult = _context9.v;
18642
18653
  messageQuery.reverse = false;
18643
- _context9.n = 18;
18654
+ _context9.n = 19;
18644
18655
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18645
- case 18:
18656
+ case 19:
18646
18657
  thirdResult = _context9.v;
18647
18658
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
18648
18659
  result.hasNext = _secondResult.hasNext;
18649
18660
  messageQuery.reverse = true;
18650
- case 19:
18651
- log.info('result from server ....... ', result);
18652
18661
  _context9.n = 20;
18653
- return effects.put(setMessagesHasNextAC(true));
18662
+ return effects.put(setMessagesHasPrevAC(_secondResult.hasNext));
18654
18663
  case 20:
18664
+ log.info('result from server ....... ', result);
18655
18665
  _context9.n = 21;
18656
18666
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18657
18667
  case 21:
18668
+ setMessagesToMap(channel.id, result.messages);
18658
18669
  setAllMessages([].concat(result.messages));
18659
18670
  setHasPrevCached(false);
18660
18671
  setHasNextCached(false);
18661
18672
  case 22:
18662
18673
  _context9.n = 23;
18663
- return effects.put(setScrollToMessagesAC(messageId));
18674
+ return effects.put(setMessagesHasNextAC(true));
18664
18675
  case 23:
18665
18676
  _context9.n = 24;
18666
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18677
+ return effects.put(setScrollToMessagesAC(messageId, true, behavior));
18667
18678
  case 24:
18668
- _context9.n = 45;
18669
- break;
18679
+ _context9.n = 25;
18680
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18670
18681
  case 25:
18682
+ _context9.n = 46;
18683
+ break;
18684
+ case 26:
18671
18685
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
18672
- _context9.n = 38;
18686
+ _context9.n = 39;
18673
18687
  break;
18674
18688
  }
18689
+ setMessagesToMap(channel.id, []);
18675
18690
  setAllMessages([]);
18676
18691
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18677
18692
  if (!Number(channel.lastDisplayedMessageId)) {
18678
- _context9.n = 31;
18693
+ _context9.n = 32;
18679
18694
  break;
18680
18695
  }
18681
- _context9.n = 26;
18696
+ _context9.n = 27;
18682
18697
  return effects.call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
18683
- case 26:
18698
+ case 27:
18684
18699
  result = _context9.v;
18685
18700
  if (!(result.messages.length === 50)) {
18686
- _context9.n = 30;
18701
+ _context9.n = 31;
18687
18702
  break;
18688
18703
  }
18689
18704
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
18690
- _context9.n = 27;
18705
+ _context9.n = 28;
18691
18706
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18692
- case 27:
18707
+ case 28:
18693
18708
  _secondResult2 = _context9.v;
18694
18709
  if (!(channel.newMessageCount > 25)) {
18695
- _context9.n = 29;
18710
+ _context9.n = 30;
18696
18711
  break;
18697
18712
  }
18698
18713
  messageQuery.reverse = false;
18699
- _context9.n = 28;
18714
+ _context9.n = 29;
18700
18715
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18701
- case 28:
18716
+ case 29:
18702
18717
  _thirdResult = _context9.v;
18703
18718
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
18704
18719
  messageQuery.reverse = true;
18705
- _context9.n = 30;
18720
+ _context9.n = 31;
18706
18721
  break;
18707
- case 29:
18708
- result.messages = [].concat(_secondResult2.messages, result.messages);
18709
18722
  case 30:
18710
- _context9.n = 34;
18711
- break;
18723
+ result.messages = [].concat(_secondResult2.messages, result.messages);
18712
18724
  case 31:
18713
- _context9.n = 32;
18714
- return effects.call(messageQuery.loadPrevious);
18725
+ _context9.n = 35;
18726
+ break;
18715
18727
  case 32:
18728
+ _context9.n = 33;
18729
+ return effects.call(messageQuery.loadPrevious);
18730
+ case 33:
18716
18731
  result = _context9.v;
18717
18732
  if (!(result.messages.length === 50)) {
18718
- _context9.n = 34;
18733
+ _context9.n = 35;
18719
18734
  break;
18720
18735
  }
18721
18736
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18722
- _context9.n = 33;
18737
+ _context9.n = 34;
18723
18738
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18724
- case 33:
18739
+ case 34:
18725
18740
  _secondResult3 = _context9.v;
18726
18741
  result.messages = [].concat(_secondResult3.messages, result.messages);
18727
18742
  result.hasNext = _secondResult3.hasNext;
18728
- case 34:
18729
- setMessagesToMap(channel.id, result.messages);
18730
- _context9.n = 35;
18731
- return effects.put(setMessagesHasPrevAC(true));
18732
18743
  case 35:
18733
18744
  _context9.n = 36;
18734
- return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18745
+ return effects.put(setMessagesHasPrevAC(true));
18735
18746
  case 36:
18736
- setAllMessages([].concat(result.messages));
18737
18747
  _context9.n = 37;
18738
- return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18748
+ return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18739
18749
  case 37:
18740
- _context9.n = 45;
18741
- break;
18750
+ setMessagesToMap(channel.id, result.messages);
18751
+ setAllMessages([].concat(result.messages));
18752
+ _context9.n = 38;
18753
+ return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18742
18754
  case 38:
18755
+ _context9.n = 46;
18756
+ break;
18757
+ case 39:
18758
+ setMessagesToMap(channel.id, []);
18743
18759
  setAllMessages([]);
18744
18760
  if (!(cachedMessages && cachedMessages.length)) {
18745
- _context9.n = 39;
18761
+ _context9.n = 40;
18746
18762
  break;
18747
18763
  }
18764
+ setMessagesToMap(channel.id, []);
18748
18765
  setAllMessages([].concat(cachedMessages));
18749
- _context9.n = 39;
18766
+ _context9.n = 40;
18750
18767
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
18751
- case 39:
18768
+ case 40:
18752
18769
  log.info('load message from server');
18753
- _context9.n = 40;
18770
+ _context9.n = 41;
18754
18771
  return effects.call(messageQuery.loadPrevious);
18755
- case 40:
18772
+ case 41:
18756
18773
  result = _context9.v;
18757
18774
  if (!(result.messages.length === 50)) {
18758
- _context9.n = 42;
18775
+ _context9.n = 43;
18759
18776
  break;
18760
18777
  }
18761
18778
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18762
- _context9.n = 41;
18779
+ _context9.n = 42;
18763
18780
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18764
- case 41:
18781
+ case 42:
18765
18782
  _secondResult4 = _context9.v;
18766
18783
  result.messages = [].concat(_secondResult4.messages, result.messages);
18767
18784
  result.hasNext = _secondResult4.hasNext;
18768
- case 42:
18785
+ case 43:
18769
18786
  updatedMessages = [];
18770
18787
  result.messages.forEach(function (msg) {
18771
18788
  var updatedMessage = updateMessageOnMap(channel.id, {
@@ -18777,18 +18794,18 @@ function getMessagesQuery(action) {
18777
18794
  });
18778
18795
  setMessagesToMap(channel.id, updatedMessages);
18779
18796
  setAllMessages([].concat(updatedMessages));
18780
- _context9.n = 43;
18781
- return effects.put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18782
- case 43:
18783
18797
  _context9.n = 44;
18784
- return effects.put(setMessagesHasPrevAC(result.hasNext));
18798
+ return effects.put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18785
18799
  case 44:
18786
18800
  _context9.n = 45;
18787
- return effects.put(setMessagesHasNextAC(false));
18801
+ return effects.put(setMessagesHasPrevAC(result.hasNext));
18788
18802
  case 45:
18803
+ _context9.n = 46;
18804
+ return effects.put(setMessagesHasNextAC(false));
18805
+ case 46:
18789
18806
  pendingMessages = getPendingMessages(channel.id);
18790
18807
  if (!(pendingMessages && pendingMessages.length)) {
18791
- _context9.n = 46;
18808
+ _context9.n = 47;
18792
18809
  break;
18793
18810
  }
18794
18811
  _messagesMap = {};
@@ -18798,35 +18815,35 @@ function getMessagesQuery(action) {
18798
18815
  filteredPendingMessages = pendingMessages.filter(function (msg) {
18799
18816
  return !_messagesMap[msg.tid || ''];
18800
18817
  });
18801
- _context9.n = 46;
18818
+ _context9.n = 47;
18802
18819
  return effects.put(addMessagesAC(filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
18803
- case 46:
18804
- _context9.n = 48;
18805
- break;
18806
18820
  case 47:
18821
+ _context9.n = 49;
18822
+ break;
18823
+ case 48:
18807
18824
  if (!channel.isMockChannel) {
18808
- _context9.n = 48;
18825
+ _context9.n = 49;
18809
18826
  break;
18810
18827
  }
18811
- _context9.n = 48;
18828
+ _context9.n = 49;
18812
18829
  return effects.put(setMessagesAC([]));
18813
- case 48:
18814
- _context9.n = 50;
18815
- break;
18816
18830
  case 49:
18817
- _context9.p = 49;
18818
- _t9 = _context9.v;
18819
- log.error('error in message query', _t9);
18831
+ _context9.n = 51;
18832
+ break;
18820
18833
  case 50:
18821
18834
  _context9.p = 50;
18822
- _context9.n = 51;
18823
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18835
+ _t9 = _context9.v;
18836
+ log.error('error in message query', _t9);
18824
18837
  case 51:
18825
- return _context9.f(50);
18838
+ _context9.p = 51;
18839
+ _context9.n = 52;
18840
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18826
18841
  case 52:
18842
+ return _context9.f(51);
18843
+ case 53:
18827
18844
  return _context9.a(2);
18828
18845
  }
18829
- }, _marked7$1, null, [[0, 49, 50, 52]]);
18846
+ }, _marked7$1, null, [[0, 50, 51, 53]]);
18830
18847
  }
18831
18848
  function getMessageQuery(action) {
18832
18849
  var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
@@ -18972,25 +18989,38 @@ function loadMoreMessages(action) {
18972
18989
  _context1.n = 11;
18973
18990
  return effects.put(addMessagesAC(JSON.parse(JSON.stringify(result.messages)), direction));
18974
18991
  case 11:
18975
- _context1.n = 13;
18992
+ _context1.n = 16;
18976
18993
  break;
18977
18994
  case 12:
18978
18995
  _context1.n = 13;
18979
18996
  return effects.put(addMessagesAC([], direction));
18980
18997
  case 13:
18998
+ if (!(direction === MESSAGE_LOAD_DIRECTION.NEXT)) {
18999
+ _context1.n = 15;
19000
+ break;
19001
+ }
18981
19002
  _context1.n = 14;
18982
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19003
+ return effects.put(setMessagesHasNextAC(false));
18983
19004
  case 14:
18984
19005
  _context1.n = 16;
18985
19006
  break;
18986
19007
  case 15:
18987
- _context1.p = 15;
19008
+ _context1.n = 16;
19009
+ return effects.put(setMessagesHasPrevAC(false));
19010
+ case 16:
19011
+ _context1.n = 17;
19012
+ return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19013
+ case 17:
19014
+ _context1.n = 19;
19015
+ break;
19016
+ case 18:
19017
+ _context1.p = 18;
18988
19018
  _t1 = _context1.v;
18989
19019
  log.error('error in load more messages', _t1);
18990
- case 16:
19020
+ case 19:
18991
19021
  return _context1.a(2);
18992
19022
  }
18993
- }, _marked9$1, null, [[0, 15]]);
19023
+ }, _marked9$1, null, [[0, 18]]);
18994
19024
  }
18995
19025
  function addReaction(action) {
18996
19026
  var payload, channelId, messageId, key, score, reason, enforceUnique, user, channel, _yield$call, _message2, reaction, channelUpdateParam, _t10;
@@ -26142,6 +26172,7 @@ var Message = function Message(_ref) {
26142
26172
  var _useColor = useColors(),
26143
26173
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
26144
26174
  overlayBackground = _useColor[THEME_COLORS.OVERLAY_BACKGROUND];
26175
+ var scrollToNewMessage = useSelector(scrollToNewMessageSelector);
26145
26176
  var dispatch = useDispatch();
26146
26177
  var ChatClient = getClient();
26147
26178
  var user = ChatClient.user;
@@ -26160,7 +26191,19 @@ var Message = function Message(_ref) {
26160
26191
  };
26161
26192
  React.useEffect(function () {
26162
26193
  if (isVisible) {
26194
+ var _channel$lastMessage;
26163
26195
  handleSendReadMarker();
26196
+ if (!channel.isLinkedChannel) {
26197
+ setMessageToVisibleMessagesMap(message);
26198
+ }
26199
+ if (scrollToNewMessage.scrollToBottom && ((message === null || message === void 0 ? void 0 : message.id) === ((_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id) || !(message !== null && message !== void 0 && message.id))) {
26200
+ dispatch(scrollToNewMessageAC(false, false, false));
26201
+ dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
26202
+ }
26203
+ } else {
26204
+ if (!channel.isLinkedChannel) {
26205
+ removeMessageFromVisibleMessagesMap(message);
26206
+ }
26164
26207
  }
26165
26208
  }, [isVisible]);
26166
26209
  useDidUpdate(function () {
@@ -32813,14 +32856,6 @@ var HiddenMessageProperty;
32813
32856
  })(HiddenMessageProperty || (HiddenMessageProperty = {}));
32814
32857
 
32815
32858
  var _templateObject$D, _templateObject2$y, _templateObject3$s, _templateObject4$o, _templateObject5$k, _templateObject6$h, _templateObject7$f, _templateObject8$e, _templateObject9$c, _templateObject0$b, _templateObject1$8;
32816
- var loadFromServer = false;
32817
- var loadDirection = '';
32818
- var nextDisable = false;
32819
- var prevDisable = false;
32820
- var scrollToBottom = false;
32821
- var shouldLoadMessages;
32822
- var loading = false;
32823
- var messagesIndexMap = {};
32824
32859
  var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
32825
32860
  var lastIndex = _ref.lastIndex,
32826
32861
  currentMessageDate = _ref.currentMessageDate,
@@ -33030,6 +33065,7 @@ var MessageList = function MessageList(_ref2) {
33030
33065
  var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, reactRedux.shallowEqual);
33031
33066
  var scrollToRepliedMessage = useSelector(scrollToMessageSelector, reactRedux.shallowEqual);
33032
33067
  var scrollToMessageHighlight = useSelector(scrollToMessageHighlightSelector, reactRedux.shallowEqual);
33068
+ var scrollToMessageBehavior = useSelector(scrollToMessageBehaviorSelector, reactRedux.shallowEqual);
33033
33069
  var browserTabIsActive = useSelector(browserTabIsActiveSelector, reactRedux.shallowEqual);
33034
33070
  var hasNextMessages = useSelector(messagesHasNextSelector, reactRedux.shallowEqual);
33035
33071
  var hasPrevMessages = useSelector(messagesHasPrevSelector, reactRedux.shallowEqual);
@@ -33070,35 +33106,40 @@ var MessageList = function MessageList(_ref2) {
33070
33106
  setShouldPreserveScroll = _useState0[1];
33071
33107
  var messageForReply = {};
33072
33108
  var attachmentsSelected = false;
33073
- var messageTopDateRef = React.useRef(null);
33109
+ var _useState1 = React.useState(''),
33110
+ topDateLabel = _useState1[0],
33111
+ setTopDateLabel = _useState1[1];
33074
33112
  var scrollRef = React.useRef(null);
33113
+ var loadFromServerRef = React.useRef(false);
33114
+ var loadDirectionRef = React.useRef('');
33115
+ var nextDisableRef = React.useRef(false);
33116
+ var prevDisableRef = React.useRef(false);
33117
+ var scrollToBottomRef = React.useRef(false);
33118
+ var shouldLoadMessagesRef = React.useRef('');
33119
+ var loadingRef = React.useRef(false);
33120
+ var messagesIndexMapRef = React.useRef({});
33121
+ var scrollRafRef = React.useRef(null);
33122
+ var loadingMessagesTimeoutRef = React.useRef(null);
33075
33123
  var renderTopDate = function renderTopDate() {
33076
- var dateLabels = document.querySelectorAll('.divider');
33077
- var messageTopDate = messageTopDateRef.current;
33124
+ var container = scrollRef.current;
33125
+ if (!container) return;
33126
+ var dateLabels = container.querySelectorAll('.divider');
33078
33127
  var text = '';
33079
33128
  for (var i = dateLabels.length - 1; i >= 0; i--) {
33080
- var _dateLabel$firstChild;
33081
33129
  var dateLabel = dateLabels[i];
33082
- var span = dateLabel === null || dateLabel === void 0 ? void 0 : (_dateLabel$firstChild = dateLabel.firstChild) === null || _dateLabel$firstChild === void 0 ? void 0 : _dateLabel$firstChild.firstChild;
33083
- if (!text && scrollRef.current.scrollTop > dateLabel.offsetTop) {
33084
- text = span && span.innerText;
33085
- span.style.display = 'none';
33086
- } else {
33087
- span.style.display = 'block';
33130
+ if (!text && container.scrollTop > dateLabel.offsetTop) {
33131
+ var span = (dateLabel === null || dateLabel === void 0 ? void 0 : dateLabel.firstChild) && dateLabel.firstChild.firstChild;
33132
+ text = span ? span.innerText || '' : '';
33088
33133
  }
33089
33134
  }
33090
- if (text) {
33091
- messageTopDate.innerText = text;
33092
- messageTopDate.style.display = 'inline';
33093
- } else {
33094
- messageTopDate.style.display = 'none';
33095
- }
33135
+ setTopDateLabel(text);
33096
33136
  };
33097
- var handleMessagesListScroll = React.useCallback(function (event) {
33137
+ var handleMessagesListScroll = React.useCallback(function () {
33098
33138
  try {
33139
+ var target = scrollRef.current;
33140
+ if (!target) return Promise.resolve();
33099
33141
  if (scrollToMentionedMessage) {
33100
- var _target = event.target;
33101
- if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33142
+ if (target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33102
33143
  dispatch(showScrollToNewMessageButtonAC(true));
33103
33144
  } else {
33104
33145
  dispatch(showScrollToNewMessageButtonAC(false));
@@ -33111,7 +33152,6 @@ var MessageList = function MessageList(_ref2) {
33111
33152
  setShowTopDate(false);
33112
33153
  }, 1000);
33113
33154
  renderTopDate();
33114
- var target = event.target;
33115
33155
  var forceLoadPrevMessages = false;
33116
33156
  if (-target.scrollTop + target.offsetHeight + 30 > target.scrollHeight) {
33117
33157
  forceLoadPrevMessages = true;
@@ -33126,51 +33166,68 @@ var MessageList = function MessageList(_ref2) {
33126
33166
  }
33127
33167
  if (scrollToReply) {
33128
33168
  target.scrollTop = scrollToReply;
33129
- } else {
33130
- if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
33131
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33132
- if (loading || messagesLoading === LOADING_STATE.LOADING || prevDisable) {
33133
- shouldLoadMessages = 'prev';
33134
- } else {
33135
- if (shouldLoadMessages === 'prev') {
33136
- shouldLoadMessages = '';
33137
- }
33138
- loadDirection = 'prev';
33139
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33140
- if (!getHasPrevCached()) {
33141
- loadFromServer = true;
33142
- }
33143
- nextDisable = true;
33169
+ return Promise.resolve();
33170
+ }
33171
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33172
+ var hasIndex = typeof currentIndex === 'number';
33173
+ if (hasIndex && currentIndex < 15 || forceLoadPrevMessages) {
33174
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33175
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || prevDisableRef.current) {
33176
+ shouldLoadMessagesRef.current = 'prev';
33177
+ } else {
33178
+ if (shouldLoadMessagesRef.current === 'prev') {
33179
+ shouldLoadMessagesRef.current = '';
33180
+ }
33181
+ loadDirectionRef.current = 'prev';
33182
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33183
+ if (!getHasPrevCached()) {
33184
+ loadFromServerRef.current = true;
33144
33185
  }
33186
+ nextDisableRef.current = true;
33145
33187
  }
33146
33188
  }
33147
- if (messagesIndexMap[lastVisibleMessageId] >= messages.length - 15 || target.scrollTop === 0) {
33148
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33149
- if (loading || messagesLoading === LOADING_STATE.LOADING || nextDisable) {
33150
- shouldLoadMessages = 'next';
33151
- } else {
33152
- if (shouldLoadMessages === 'next') {
33153
- shouldLoadMessages = '';
33154
- }
33155
- loadDirection = 'next';
33156
- prevDisable = true;
33157
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33189
+ }
33190
+ if (hasIndex && currentIndex >= messages.length - 15 || target.scrollTop === 0) {
33191
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33192
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || nextDisableRef.current) {
33193
+ shouldLoadMessagesRef.current = 'next';
33194
+ } else {
33195
+ if (shouldLoadMessagesRef.current === 'next') {
33196
+ shouldLoadMessagesRef.current = '';
33158
33197
  }
33198
+ loadDirectionRef.current = 'next';
33199
+ prevDisableRef.current = true;
33200
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33159
33201
  }
33160
33202
  }
33161
- if (messagesIndexMap[lastVisibleMessageId] > messages.length - 10) {
33162
- nextDisable = false;
33163
- }
33203
+ }
33204
+ if (hasIndex && currentIndex > messages.length - 10) {
33205
+ nextDisableRef.current = false;
33164
33206
  }
33165
33207
  return Promise.resolve();
33166
33208
  } catch (e) {
33167
33209
  return Promise.reject(e);
33168
33210
  }
33169
- }, [channel === null || channel === void 0 ? void 0 : (_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id, messages, scrollToMentionedMessage, scrollToNewMessage, messagesLoading, hasPrevMessages, hasNextMessages, messagesIndexMap, lastVisibleMessageId, connectionStatus, shouldLoadMessages, loadDirection, getHasPrevCached, getHasNextCached, scrollToReply, loading, prevDisable, nextDisable]);
33211
+ }, [channel === null || channel === void 0 ? void 0 : (_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id, messages, scrollToMentionedMessage, scrollToNewMessage, messagesLoading, hasPrevMessages, hasNextMessages, lastVisibleMessageId, connectionStatus, getHasPrevCached, getHasNextCached, scrollToReply]);
33212
+ var onScroll = React.useCallback(function () {
33213
+ if (scrollRafRef.current !== null) return;
33214
+ scrollRafRef.current = window.requestAnimationFrame(function () {
33215
+ scrollRafRef.current = null;
33216
+ handleMessagesListScroll();
33217
+ });
33218
+ }, [handleMessagesListScroll]);
33219
+ React.useEffect(function () {
33220
+ return function () {
33221
+ if (scrollRafRef.current !== null) {
33222
+ cancelAnimationFrame(scrollRafRef.current);
33223
+ scrollRafRef.current = null;
33224
+ }
33225
+ };
33226
+ }, []);
33170
33227
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
33171
33228
  try {
33172
- prevDisable = true;
33173
- nextDisable = true;
33229
+ prevDisableRef.current = true;
33230
+ nextDisableRef.current = true;
33174
33231
  if (messages.findIndex(function (msg) {
33175
33232
  return msg.id === messageId;
33176
33233
  }) >= 10) {
@@ -33184,8 +33241,8 @@ var MessageList = function MessageList(_ref2) {
33184
33241
  var positiveValue = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2 < 0 ? repliedMessage.offsetTop - scrollRef.current.offsetHeight * -1 : repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
33185
33242
  setTimeout(function () {
33186
33243
  repliedMessage.classList.remove('highlight');
33187
- prevDisable = false;
33188
- nextDisable = false;
33244
+ prevDisableRef.current = false;
33245
+ nextDisableRef.current = false;
33189
33246
  }, 1000 + positiveValue * 0.1);
33190
33247
  }
33191
33248
  } else {
@@ -33206,10 +33263,10 @@ var MessageList = function MessageList(_ref2) {
33206
33263
  var hasNextCached = getHasNextCached();
33207
33264
  if (messagesLoading === LOADING_STATE.LOADED && connectionStatus === CONNECTION_STATUS.CONNECTED) {
33208
33265
  if (direction === MESSAGE_LOAD_DIRECTION.PREV && firstMessageId && (hasPrevMessages || hasPrevCached)) {
33209
- loading = true;
33266
+ loadingRef.current = true;
33210
33267
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, firstMessageId, hasPrevMessages));
33211
33268
  } else if (direction === MESSAGE_LOAD_DIRECTION.NEXT && lastMessageId && (hasNextMessages || hasNextCached)) {
33212
- loading = true;
33269
+ loadingRef.current = true;
33213
33270
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, lastMessageId, hasNextMessages));
33214
33271
  }
33215
33272
  }
@@ -33240,39 +33297,42 @@ var MessageList = function MessageList(_ref2) {
33240
33297
  setIsDragging(false);
33241
33298
  }
33242
33299
  };
33300
+ var readDroppedFiles = function readDroppedFiles(e) {
33301
+ return new Promise(function (resolve) {
33302
+ var fileList = Object.values(e.dataTransfer.files);
33303
+ var attachmentsFiles = [];
33304
+ var readFiles = 0;
33305
+ var errorCount = 0;
33306
+ fileList.forEach(function (attachment) {
33307
+ var fileReader = new FileReader();
33308
+ fileReader.onload = function (event) {
33309
+ var file = event.target.result;
33310
+ attachmentsFiles.push({
33311
+ name: attachment.name,
33312
+ data: file,
33313
+ type: attachment.type
33314
+ });
33315
+ readFiles++;
33316
+ if (readFiles + errorCount === fileList.length) {
33317
+ resolve(attachmentsFiles);
33318
+ }
33319
+ };
33320
+ fileReader.onerror = function () {
33321
+ errorCount++;
33322
+ if (readFiles + errorCount === fileList.length) {
33323
+ resolve(attachmentsFiles);
33324
+ }
33325
+ };
33326
+ fileReader.readAsDataURL(attachment);
33327
+ });
33328
+ });
33329
+ };
33243
33330
  var handleDropFile = function handleDropFile(e) {
33244
33331
  e.preventDefault();
33245
33332
  e.stopPropagation();
33246
33333
  setIsDragging(false);
33247
33334
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33248
- var fileList = Object.values(e.dataTransfer.files);
33249
- new Promise(function (resolve) {
33250
- var attachmentsFiles = [];
33251
- var readFiles = 0;
33252
- var errorCount = 0;
33253
- fileList.forEach(function (attachment) {
33254
- var fileReader = new FileReader();
33255
- fileReader.onload = function (event) {
33256
- var file = event.target.result;
33257
- attachmentsFiles.push({
33258
- name: attachment.name,
33259
- data: file,
33260
- type: attachment.type
33261
- });
33262
- readFiles++;
33263
- if (readFiles + errorCount === fileList.length) {
33264
- resolve(attachmentsFiles);
33265
- }
33266
- };
33267
- fileReader.onerror = function () {
33268
- errorCount++;
33269
- if (readFiles + errorCount === fileList.length) {
33270
- resolve(attachmentsFiles);
33271
- }
33272
- };
33273
- fileReader.readAsDataURL(attachment);
33274
- });
33275
- }).then(function (result) {
33335
+ readDroppedFiles(e).then(function (result) {
33276
33336
  dispatch(setDraggedAttachmentsAC(result, 'file'));
33277
33337
  })["catch"](function (error) {
33278
33338
  console.error('Error in handleDropFile:', error);
@@ -33285,34 +33345,7 @@ var MessageList = function MessageList(_ref2) {
33285
33345
  e.stopPropagation();
33286
33346
  setIsDragging(false);
33287
33347
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33288
- var fileList = Object.values(e.dataTransfer.files);
33289
- new Promise(function (resolve) {
33290
- var attachmentsFiles = [];
33291
- var readFiles = 0;
33292
- var errorCount = 0;
33293
- fileList.forEach(function (attachment) {
33294
- var fileReader = new FileReader();
33295
- fileReader.onload = function (event) {
33296
- var file = event.target.result;
33297
- attachmentsFiles.push({
33298
- name: attachment.name,
33299
- data: file,
33300
- type: attachment.type
33301
- });
33302
- readFiles++;
33303
- if (readFiles + errorCount === fileList.length) {
33304
- resolve(attachmentsFiles);
33305
- }
33306
- };
33307
- fileReader.onerror = function () {
33308
- errorCount++;
33309
- if (readFiles + errorCount === fileList.length) {
33310
- resolve(attachmentsFiles);
33311
- }
33312
- };
33313
- fileReader.readAsDataURL(attachment);
33314
- });
33315
- }).then(function (result) {
33348
+ readDroppedFiles(e).then(function (result) {
33316
33349
  dispatch(setDraggedAttachmentsAC(result, 'media'));
33317
33350
  })["catch"](function (error) {
33318
33351
  console.error('Error in handleDropMedia:', error);
@@ -33324,21 +33357,21 @@ var MessageList = function MessageList(_ref2) {
33324
33357
  var _messages, _channel$lastMessage2;
33325
33358
  if (messages.length > 0 && ((_messages = messages[messages.length - 1]) === null || _messages === void 0 ? void 0 : _messages.id) === ((_channel$lastMessage2 = channel.lastMessage) === null || _channel$lastMessage2 === void 0 ? void 0 : _channel$lastMessage2.id) && scrollRef.current && scrollRef.current.scrollTop > -50 && !showScrollToNewMessageButton) {
33326
33359
  dispatch(showScrollToNewMessageButtonAC(false));
33327
- prevDisable = false;
33360
+ prevDisableRef.current = false;
33328
33361
  }
33329
33362
  }, [messages, channel === null || channel === void 0 ? void 0 : (_channel$lastMessage3 = channel.lastMessage) === null || _channel$lastMessage3 === void 0 ? void 0 : _channel$lastMessage3.id, scrollRef === null || scrollRef === void 0 ? void 0 : (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollTop, showScrollToNewMessageButton]);
33330
33363
  React.useEffect(function () {
33331
33364
  if (scrollToRepliedMessage) {
33332
- loading = false;
33365
+ loadingRef.current = false;
33333
33366
  scrollRef.current.style.scrollBehavior = 'inherit';
33334
33367
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
33335
33368
  if (repliedMessage) {
33336
33369
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
33337
33370
  scrollRef.current.scrollTo({
33338
33371
  top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
33339
- behavior: 'smooth'
33372
+ behavior: scrollToMessageBehavior
33340
33373
  });
33341
- scrollRef.current.style.scrollBehavior = 'smooth';
33374
+ scrollRef.current.style.scrollBehavior = scrollToMessageBehavior;
33342
33375
  if (!channel.backToLinkedChannel && scrollToMessageHighlight) {
33343
33376
  repliedMessage && repliedMessage.classList.add('highlight');
33344
33377
  }
@@ -33348,9 +33381,9 @@ var MessageList = function MessageList(_ref2) {
33348
33381
  var _repliedMessage = document.getElementById(scrollToRepliedMessage);
33349
33382
  _repliedMessage && _repliedMessage.classList.remove('highlight');
33350
33383
  }
33351
- prevDisable = false;
33384
+ prevDisableRef.current = false;
33352
33385
  setScrollToReply(null);
33353
- scrollRef.current.style.scrollBehavior = 'smooth';
33386
+ scrollRef.current.style.scrollBehavior = 'instant';
33354
33387
  }, 1000 + positiveValue * 0.1);
33355
33388
  }
33356
33389
  dispatch(setScrollToMessagesAC(null));
@@ -33366,15 +33399,15 @@ var MessageList = function MessageList(_ref2) {
33366
33399
  });
33367
33400
  }
33368
33401
  } else {
33369
- nextDisable = true;
33370
- prevDisable = true;
33402
+ nextDisableRef.current = true;
33403
+ prevDisableRef.current = true;
33371
33404
  scrollRef.current.scrollTo({
33372
33405
  top: 0,
33373
33406
  behavior: 'smooth'
33374
33407
  });
33375
33408
  dispatch(showScrollToNewMessageButtonAC(false));
33376
33409
  setTimeout(function () {
33377
- prevDisable = false;
33410
+ prevDisableRef.current = false;
33378
33411
  }, 800);
33379
33412
  }
33380
33413
  }
@@ -33392,11 +33425,18 @@ var MessageList = function MessageList(_ref2) {
33392
33425
  React.useEffect(function () {
33393
33426
  setHasNextCached(false);
33394
33427
  setHasPrevCached(false);
33428
+ messagesIndexMapRef.current = {};
33429
+ loadFromServerRef.current = false;
33430
+ loadDirectionRef.current = '';
33431
+ nextDisableRef.current = false;
33432
+ prevDisableRef.current = false;
33433
+ shouldLoadMessagesRef.current = '';
33434
+ loadingRef.current = false;
33395
33435
  if (channel.backToLinkedChannel) {
33396
33436
  var visibleMessages = getVisibleMessagesMap();
33397
33437
  var visibleMessagesIds = Object.keys(visibleMessages);
33398
33438
  var messageId = visibleMessagesIds[visibleMessagesIds.length - 1];
33399
- dispatch(getMessagesAC(channel, undefined, messageId));
33439
+ dispatch(getMessagesAC(channel, undefined, messageId, undefined, undefined, undefined, 'instant'));
33400
33440
  setUnreadMessageId(messageId);
33401
33441
  } else {
33402
33442
  if (!channel.isLinkedChannel) {
@@ -33419,9 +33459,9 @@ var MessageList = function MessageList(_ref2) {
33419
33459
  }
33420
33460
  setPreviousScrollTop(0);
33421
33461
  setShouldPreserveScroll(false);
33422
- nextDisable = false;
33423
- prevDisable = false;
33424
- scrollToBottom = true;
33462
+ nextDisableRef.current = false;
33463
+ prevDisableRef.current = false;
33464
+ scrollToBottomRef.current = true;
33425
33465
  setAllowEditDeleteIncomingMessage(allowEditDeleteIncomingMessage);
33426
33466
  }, [channel.id]);
33427
33467
  React.useEffect(function () {
@@ -33436,7 +33476,7 @@ var MessageList = function MessageList(_ref2) {
33436
33476
  setUnreadMessageId('');
33437
33477
  }
33438
33478
  }
33439
- }, [messages]);
33479
+ }, [messages, hiddenMessagesProperties, user === null || user === void 0 ? void 0 : user.id]);
33440
33480
  React.useEffect(function () {
33441
33481
  if (scrollRef.current) {
33442
33482
  var isAtBottom = scrollRef.current.scrollTop > -50;
@@ -33445,35 +33485,40 @@ var MessageList = function MessageList(_ref2) {
33445
33485
  setShouldPreserveScroll(true);
33446
33486
  }
33447
33487
  }
33448
- if (loading) {
33449
- if (loadDirection !== 'next') {
33488
+ if (loadingRef.current) {
33489
+ if (loadDirectionRef.current !== 'next') {
33450
33490
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
33451
33491
  if (lastVisibleMessage) {
33452
33492
  scrollRef.current.style.scrollBehavior = 'inherit';
33453
33493
  scrollRef.current.scrollTop = lastVisibleMessage.offsetTop;
33454
33494
  scrollRef.current.style.scrollBehavior = 'smooth';
33455
33495
  }
33456
- if (loadFromServer) {
33457
- setTimeout(function () {
33458
- loading = false;
33459
- loadFromServer = false;
33460
- nextDisable = false;
33461
- if (shouldLoadMessages === 'prev' && messagesIndexMap[lastVisibleMessageId] < 15) {
33496
+ if (loadFromServerRef.current) {
33497
+ var timeout = setTimeout(function () {
33498
+ loadingRef.current = false;
33499
+ loadFromServerRef.current = false;
33500
+ nextDisableRef.current = false;
33501
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33502
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33462
33503
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33463
33504
  }
33464
- if (shouldLoadMessages === 'next' && messagesIndexMap[lastVisibleMessageId] > messages.length - 15) {
33505
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33465
33506
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33466
33507
  }
33467
33508
  }, 50);
33509
+ if (loadingMessagesTimeoutRef.current) {
33510
+ clearTimeout(loadingMessagesTimeoutRef.current);
33511
+ }
33512
+ loadingMessagesTimeoutRef.current = timeout;
33468
33513
  } else {
33469
- loading = false;
33470
- if (shouldLoadMessages === 'prev') {
33514
+ loadingRef.current = false;
33515
+ if (shouldLoadMessagesRef.current === 'prev') {
33471
33516
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33472
- shouldLoadMessages = '';
33517
+ shouldLoadMessagesRef.current = '';
33473
33518
  }
33474
- if (shouldLoadMessages === 'next') {
33519
+ if (shouldLoadMessagesRef.current === 'next') {
33475
33520
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33476
- shouldLoadMessages = '';
33521
+ shouldLoadMessagesRef.current = '';
33477
33522
  }
33478
33523
  }
33479
33524
  } else {
@@ -33483,22 +33528,26 @@ var MessageList = function MessageList(_ref2) {
33483
33528
  scrollRef.current.scrollTop = _lastVisibleMessage.offsetTop - scrollRef.current.offsetHeight + _lastVisibleMessage.offsetHeight;
33484
33529
  scrollRef.current.style.scrollBehavior = 'smooth';
33485
33530
  }
33486
- loading = false;
33487
- prevDisable = false;
33488
- if (shouldLoadMessages === 'prev') {
33531
+ loadingRef.current = false;
33532
+ prevDisableRef.current = false;
33533
+ if (shouldLoadMessagesRef.current === 'prev') {
33489
33534
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33490
- shouldLoadMessages = '';
33535
+ shouldLoadMessagesRef.current = '';
33491
33536
  }
33492
- if (shouldLoadMessages === 'next') {
33537
+ if (shouldLoadMessagesRef.current === 'next') {
33493
33538
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33494
- shouldLoadMessages = '';
33539
+ shouldLoadMessagesRef.current = '';
33495
33540
  }
33496
33541
  }
33497
33542
  }
33498
33543
  renderTopDate();
33499
- if (scrollToBottom) {
33500
- dispatch(scrollToNewMessageAC(true));
33501
- scrollToBottom = false;
33544
+ if (scrollToBottomRef.current) {
33545
+ if (channel.backToLinkedChannel) {
33546
+ dispatch(scrollToNewMessageAC(false));
33547
+ } else {
33548
+ dispatch(scrollToNewMessageAC(true));
33549
+ }
33550
+ scrollToBottomRef.current = false;
33502
33551
  }
33503
33552
  if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
33504
33553
  requestAnimationFrame(function () {
@@ -33511,13 +33560,43 @@ var MessageList = function MessageList(_ref2) {
33511
33560
  setPreviousScrollTop(0);
33512
33561
  });
33513
33562
  }
33563
+ return function () {
33564
+ if (loadingMessagesTimeoutRef.current) {
33565
+ clearTimeout(loadingMessagesTimeoutRef.current);
33566
+ }
33567
+ };
33514
33568
  }, [messages]);
33569
+ React.useEffect(function () {
33570
+ if (messagesLoading === LOADING_STATE.LOADED) {
33571
+ var timeout = setTimeout(function () {
33572
+ loadingRef.current = false;
33573
+ loadFromServerRef.current = false;
33574
+ nextDisableRef.current = false;
33575
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33576
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33577
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33578
+ }
33579
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33580
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33581
+ }
33582
+ }, 50);
33583
+ if (loadingMessagesTimeoutRef.current) {
33584
+ clearTimeout(loadingMessagesTimeoutRef.current);
33585
+ }
33586
+ loadingMessagesTimeoutRef.current = timeout;
33587
+ }
33588
+ return function () {
33589
+ if (loadingMessagesTimeoutRef.current) {
33590
+ clearTimeout(loadingMessagesTimeoutRef.current);
33591
+ }
33592
+ };
33593
+ }, [messagesLoading, messages, lastVisibleMessageId]);
33515
33594
  React.useEffect(function () {
33516
33595
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
33517
33596
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
33518
- loading = false;
33519
- prevDisable = false;
33520
- nextDisable = false;
33597
+ loadingRef.current = false;
33598
+ prevDisableRef.current = false;
33599
+ nextDisableRef.current = false;
33521
33600
  clearMessagesMap();
33522
33601
  removeAllMessages();
33523
33602
  if (channel.id) {
@@ -33526,7 +33605,8 @@ var MessageList = function MessageList(_ref2) {
33526
33605
  }
33527
33606
  }, [connectionStatus]);
33528
33607
  React.useEffect(function () {
33529
- if (channel.newMessageCount && channel.newMessageCount > 0 && getUnreadScrollTo()) {
33608
+ var unreadScrollTo = getUnreadScrollTo();
33609
+ if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
33530
33610
  if (scrollRef.current) {
33531
33611
  scrollRef.current.style.scrollBehavior = 'inherit';
33532
33612
  }
@@ -33539,7 +33619,14 @@ var MessageList = function MessageList(_ref2) {
33539
33619
  setUnreadScrollTo(false);
33540
33620
  }
33541
33621
  }
33542
- });
33622
+ }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
33623
+ React.useEffect(function () {
33624
+ return function () {
33625
+ if (hideTopDateTimeout.current) {
33626
+ clearTimeout(hideTopDateTimeout.current);
33627
+ }
33628
+ };
33629
+ }, []);
33543
33630
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isDragging && !(attachmentsPreview !== null && attachmentsPreview !== void 0 && attachmentsPreview.show && mediaFile) && (/*#__PURE__*/React__default.createElement(DragAndDropContainer, {
33544
33631
  id: 'draggingContainer',
33545
33632
  draggable: true,
@@ -33582,14 +33669,12 @@ var MessageList = function MessageList(_ref2) {
33582
33669
  dateDividerBackgroundColor: dateDividerBackgroundColor || overlayBackground,
33583
33670
  dateDividerBorderRadius: dateDividerBorderRadius,
33584
33671
  topOffset: scrollRef && scrollRef.current && scrollRef.current.offsetTop
33585
- }, /*#__PURE__*/React__default.createElement("span", {
33586
- ref: messageTopDateRef
33587
- }))), /*#__PURE__*/React__default.createElement(Container$h, {
33672
+ }, /*#__PURE__*/React__default.createElement("span", null, topDateLabel))), /*#__PURE__*/React__default.createElement(Container$h, {
33588
33673
  id: 'scrollableDiv',
33589
33674
  className: isScrolling ? 'show-scrollbar' : '',
33590
33675
  ref: scrollRef,
33591
33676
  stopScrolling: stopScrolling,
33592
- onScroll: handleMessagesListScroll,
33677
+ onScroll: onScroll,
33593
33678
  onMouseEnter: function onMouseEnter() {
33594
33679
  return setIsScrolling(true);
33595
33680
  },
@@ -33608,8 +33693,10 @@ var MessageList = function MessageList(_ref2) {
33608
33693
  var prevMessage = messages[index - 1];
33609
33694
  var nextMessage = messages[index + 1];
33610
33695
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
33611
- messagesIndexMap[message.id] = index;
33612
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33696
+ messagesIndexMapRef.current[message.id] = index;
33697
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
33698
+ key: message.id || message.tid
33699
+ }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33613
33700
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
33614
33701
  theme: theme,
33615
33702
  lastIndex: false,
@@ -41139,10 +41226,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
41139
41226
  };
41140
41227
  var handleScrollToLastMessage = function handleScrollToLastMessage(messageId) {
41141
41228
  try {
41142
- dispatch(scrollToNewMessageAC(true, false, false));
41143
41229
  if (messages.findIndex(function (msg) {
41144
41230
  return msg.id === messageId;
41145
41231
  }) >= 10) {
41232
+ dispatch(scrollToNewMessageAC(true, false, false));
41146
41233
  dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
41147
41234
  var repliedMessage = document.getElementById(messageId);
41148
41235
  if (repliedMessage) {