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.modern.js CHANGED
@@ -10319,6 +10319,7 @@ var initialState$1 = {
10319
10319
  attachmentsUploadingState: {},
10320
10320
  scrollToMessage: null,
10321
10321
  scrollToMessageHighlight: true,
10322
+ scrollToMessageBehavior: 'smooth',
10322
10323
  scrollToMentionedMessage: false,
10323
10324
  reactionsList: [],
10324
10325
  reactionsHasNext: true,
@@ -10345,6 +10346,7 @@ var messageSlice = createSlice({
10345
10346
  setScrollToMessage: function setScrollToMessage(state, action) {
10346
10347
  state.scrollToMessage = action.payload.messageId;
10347
10348
  state.scrollToMessageHighlight = action.payload.highlight;
10349
+ state.scrollToMessageBehavior = action.payload.behavior || 'smooth';
10348
10350
  },
10349
10351
  setScrollToMentionedMessage: function setScrollToMentionedMessage(state, action) {
10350
10352
  state.scrollToMentionedMessage = action.payload.isScrollToMentionedMessage;
@@ -10374,7 +10376,7 @@ var messageSlice = createSlice({
10374
10376
  return msg.tid === message.tid || msg.id === message.id;
10375
10377
  });
10376
10378
  });
10377
- if (direction === MESSAGE_LOAD_DIRECTION.PREV) {
10379
+ if (direction === MESSAGE_LOAD_DIRECTION.PREV && newMessagesLength > 0) {
10378
10380
  if (currentMessagesLength + newMessagesLength >= MESSAGES_MAX_LENGTH) {
10379
10381
  var _state$activeChannelM;
10380
10382
  setHasNextCached(true);
@@ -10396,7 +10398,7 @@ var messageSlice = createSlice({
10396
10398
  var _state$activeChannelM3;
10397
10399
  (_state$activeChannelM3 = state.activeChannelMessages).splice.apply(_state$activeChannelM3, [0, 0].concat(messagesIsNotIncludeInActiveChannelMessages));
10398
10400
  }
10399
- } else if (direction === 'next') {
10401
+ } else if (direction === 'next' && newMessagesLength > 0) {
10400
10402
  if (currentMessagesLength >= MESSAGES_MAX_LENGTH) {
10401
10403
  var _state$activeChannelM4;
10402
10404
  setHasPrevCached(true);
@@ -11596,7 +11598,7 @@ function setMessageToEditAC(message) {
11596
11598
  message: message
11597
11599
  });
11598
11600
  }
11599
- function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight) {
11601
+ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior) {
11600
11602
  if (highlight === void 0) {
11601
11603
  highlight = true;
11602
11604
  }
@@ -11608,7 +11610,8 @@ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliv
11608
11610
  messageId: messageId,
11609
11611
  limit: limit,
11610
11612
  withDeliveredMessages: withDeliveredMessages,
11611
- highlight: highlight
11613
+ highlight: highlight,
11614
+ behavior: behavior
11612
11615
  }
11613
11616
  };
11614
11617
  }
@@ -11622,13 +11625,14 @@ function getMessageAC(channelId, messageId, limit) {
11622
11625
  }
11623
11626
  };
11624
11627
  }
11625
- function setScrollToMessagesAC(messageId, highlight) {
11628
+ function setScrollToMessagesAC(messageId, highlight, behavior) {
11626
11629
  if (highlight === void 0) {
11627
11630
  highlight = true;
11628
11631
  }
11629
11632
  return setScrollToMessage({
11630
11633
  messageId: messageId || '',
11631
- highlight: highlight
11634
+ highlight: highlight,
11635
+ behavior: behavior
11632
11636
  });
11633
11637
  }
11634
11638
  function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
@@ -17089,6 +17093,9 @@ var scrollToMessageSelector = function scrollToMessageSelector(store) {
17089
17093
  var scrollToMessageHighlightSelector = function scrollToMessageHighlightSelector(store) {
17090
17094
  return store.MessageReducer.scrollToMessageHighlight;
17091
17095
  };
17096
+ var scrollToMessageBehaviorSelector = function scrollToMessageBehaviorSelector(store) {
17097
+ return store.MessageReducer.scrollToMessageBehavior;
17098
+ };
17092
17099
  var reactionsListSelector = function reactionsListSelector(store) {
17093
17100
  return store.MessageReducer.reactionsList;
17094
17101
  };
@@ -18482,7 +18489,7 @@ function editMessage(action) {
18482
18489
  }, _marked6$1, null, [[0, 5]]);
18483
18490
  }
18484
18491
  function getMessagesQuery(action) {
18485
- 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;
18492
+ 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;
18486
18493
  return _regenerator().w(function (_context9) {
18487
18494
  while (1) switch (_context9.p = _context9.n) {
18488
18495
  case 0:
@@ -18490,9 +18497,9 @@ function getMessagesQuery(action) {
18490
18497
  _context9.n = 1;
18491
18498
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
18492
18499
  case 1:
18493
- _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;
18500
+ _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;
18494
18501
  if (!(channel.id && !channel.isMockChannel)) {
18495
- _context9.n = 47;
18502
+ _context9.n = 48;
18496
18503
  break;
18497
18504
  }
18498
18505
  SceytChatClient = getClient();
@@ -18520,6 +18527,7 @@ function getMessagesQuery(action) {
18520
18527
  break;
18521
18528
  }
18522
18529
  setHasPrevCached(false);
18530
+ setMessagesToMap(channel.id, []);
18523
18531
  setAllMessages([]);
18524
18532
  _context9.n = 3;
18525
18533
  return call(messageQuery.loadPreviousMessageId, '0');
@@ -18576,13 +18584,13 @@ function getMessagesQuery(action) {
18576
18584
  break;
18577
18585
  }
18578
18586
  _context9.n = 12;
18579
- return put(setScrollToMessagesAC(messageId, highlight));
18587
+ return put(setScrollToMessagesAC(messageId, highlight, behavior));
18580
18588
  case 12:
18581
- _context9.n = 45;
18589
+ _context9.n = 46;
18582
18590
  break;
18583
18591
  case 13:
18584
18592
  if (!messageId) {
18585
- _context9.n = 25;
18593
+ _context9.n = 26;
18586
18594
  break;
18587
18595
  }
18588
18596
  _allMessages = getAllMessages();
@@ -18591,7 +18599,7 @@ function getMessagesQuery(action) {
18591
18599
  });
18592
18600
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
18593
18601
  if (!(messageIndex >= maxLengthPart)) {
18594
- _context9.n = 15;
18602
+ _context9.n = 16;
18595
18603
  break;
18596
18604
  }
18597
18605
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
@@ -18600,151 +18608,160 @@ function getMessagesQuery(action) {
18600
18608
  case 14:
18601
18609
  setHasPrevCached(messageIndex > maxLengthPart);
18602
18610
  setHasNextCached(_allMessages.length > maxLengthPart);
18611
+ _context9.n = 15;
18612
+ return put(setMessagesHasPrevAC(true));
18613
+ case 15:
18603
18614
  _context9.n = 22;
18604
18615
  break;
18605
- case 15:
18616
+ case 16:
18606
18617
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18607
18618
  log.info('load by message id from server ...............', messageId);
18608
- _context9.n = 16;
18619
+ _context9.n = 17;
18609
18620
  return call(messageQuery.loadNearMessageId, messageId);
18610
- case 16:
18621
+ case 17:
18611
18622
  result = _context9.v;
18612
18623
  if (!(result.messages.length === 50)) {
18613
- _context9.n = 19;
18624
+ _context9.n = 20;
18614
18625
  break;
18615
18626
  }
18616
- messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
18617
- _context9.n = 17;
18627
+ messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18628
+ _context9.n = 18;
18618
18629
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18619
- case 17:
18630
+ case 18:
18620
18631
  _secondResult = _context9.v;
18621
18632
  messageQuery.reverse = false;
18622
- _context9.n = 18;
18633
+ _context9.n = 19;
18623
18634
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18624
- case 18:
18635
+ case 19:
18625
18636
  thirdResult = _context9.v;
18626
18637
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
18627
18638
  result.hasNext = _secondResult.hasNext;
18628
18639
  messageQuery.reverse = true;
18629
- case 19:
18630
- log.info('result from server ....... ', result);
18631
18640
  _context9.n = 20;
18632
- return put(setMessagesHasNextAC(true));
18641
+ return put(setMessagesHasPrevAC(_secondResult.hasNext));
18633
18642
  case 20:
18643
+ log.info('result from server ....... ', result);
18634
18644
  _context9.n = 21;
18635
18645
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18636
18646
  case 21:
18647
+ setMessagesToMap(channel.id, result.messages);
18637
18648
  setAllMessages([].concat(result.messages));
18638
18649
  setHasPrevCached(false);
18639
18650
  setHasNextCached(false);
18640
18651
  case 22:
18641
18652
  _context9.n = 23;
18642
- return put(setScrollToMessagesAC(messageId));
18653
+ return put(setMessagesHasNextAC(true));
18643
18654
  case 23:
18644
18655
  _context9.n = 24;
18645
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18656
+ return put(setScrollToMessagesAC(messageId, true, behavior));
18646
18657
  case 24:
18647
- _context9.n = 45;
18648
- break;
18658
+ _context9.n = 25;
18659
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18649
18660
  case 25:
18661
+ _context9.n = 46;
18662
+ break;
18663
+ case 26:
18650
18664
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
18651
- _context9.n = 38;
18665
+ _context9.n = 39;
18652
18666
  break;
18653
18667
  }
18668
+ setMessagesToMap(channel.id, []);
18654
18669
  setAllMessages([]);
18655
18670
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18656
18671
  if (!Number(channel.lastDisplayedMessageId)) {
18657
- _context9.n = 31;
18672
+ _context9.n = 32;
18658
18673
  break;
18659
18674
  }
18660
- _context9.n = 26;
18675
+ _context9.n = 27;
18661
18676
  return call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
18662
- case 26:
18677
+ case 27:
18663
18678
  result = _context9.v;
18664
18679
  if (!(result.messages.length === 50)) {
18665
- _context9.n = 30;
18680
+ _context9.n = 31;
18666
18681
  break;
18667
18682
  }
18668
18683
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
18669
- _context9.n = 27;
18684
+ _context9.n = 28;
18670
18685
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18671
- case 27:
18686
+ case 28:
18672
18687
  _secondResult2 = _context9.v;
18673
18688
  if (!(channel.newMessageCount > 25)) {
18674
- _context9.n = 29;
18689
+ _context9.n = 30;
18675
18690
  break;
18676
18691
  }
18677
18692
  messageQuery.reverse = false;
18678
- _context9.n = 28;
18693
+ _context9.n = 29;
18679
18694
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18680
- case 28:
18695
+ case 29:
18681
18696
  _thirdResult = _context9.v;
18682
18697
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
18683
18698
  messageQuery.reverse = true;
18684
- _context9.n = 30;
18699
+ _context9.n = 31;
18685
18700
  break;
18686
- case 29:
18687
- result.messages = [].concat(_secondResult2.messages, result.messages);
18688
18701
  case 30:
18689
- _context9.n = 34;
18690
- break;
18702
+ result.messages = [].concat(_secondResult2.messages, result.messages);
18691
18703
  case 31:
18692
- _context9.n = 32;
18693
- return call(messageQuery.loadPrevious);
18704
+ _context9.n = 35;
18705
+ break;
18694
18706
  case 32:
18707
+ _context9.n = 33;
18708
+ return call(messageQuery.loadPrevious);
18709
+ case 33:
18695
18710
  result = _context9.v;
18696
18711
  if (!(result.messages.length === 50)) {
18697
- _context9.n = 34;
18712
+ _context9.n = 35;
18698
18713
  break;
18699
18714
  }
18700
18715
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18701
- _context9.n = 33;
18716
+ _context9.n = 34;
18702
18717
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18703
- case 33:
18718
+ case 34:
18704
18719
  _secondResult3 = _context9.v;
18705
18720
  result.messages = [].concat(_secondResult3.messages, result.messages);
18706
18721
  result.hasNext = _secondResult3.hasNext;
18707
- case 34:
18708
- setMessagesToMap(channel.id, result.messages);
18709
- _context9.n = 35;
18710
- return put(setMessagesHasPrevAC(true));
18711
18722
  case 35:
18712
18723
  _context9.n = 36;
18713
- return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18724
+ return put(setMessagesHasPrevAC(true));
18714
18725
  case 36:
18715
- setAllMessages([].concat(result.messages));
18716
18726
  _context9.n = 37;
18717
- return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18727
+ return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18718
18728
  case 37:
18719
- _context9.n = 45;
18720
- break;
18729
+ setMessagesToMap(channel.id, result.messages);
18730
+ setAllMessages([].concat(result.messages));
18731
+ _context9.n = 38;
18732
+ return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18721
18733
  case 38:
18734
+ _context9.n = 46;
18735
+ break;
18736
+ case 39:
18737
+ setMessagesToMap(channel.id, []);
18722
18738
  setAllMessages([]);
18723
18739
  if (!(cachedMessages && cachedMessages.length)) {
18724
- _context9.n = 39;
18740
+ _context9.n = 40;
18725
18741
  break;
18726
18742
  }
18743
+ setMessagesToMap(channel.id, []);
18727
18744
  setAllMessages([].concat(cachedMessages));
18728
- _context9.n = 39;
18745
+ _context9.n = 40;
18729
18746
  return put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
18730
- case 39:
18747
+ case 40:
18731
18748
  log.info('load message from server');
18732
- _context9.n = 40;
18749
+ _context9.n = 41;
18733
18750
  return call(messageQuery.loadPrevious);
18734
- case 40:
18751
+ case 41:
18735
18752
  result = _context9.v;
18736
18753
  if (!(result.messages.length === 50)) {
18737
- _context9.n = 42;
18754
+ _context9.n = 43;
18738
18755
  break;
18739
18756
  }
18740
18757
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18741
- _context9.n = 41;
18758
+ _context9.n = 42;
18742
18759
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18743
- case 41:
18760
+ case 42:
18744
18761
  _secondResult4 = _context9.v;
18745
18762
  result.messages = [].concat(_secondResult4.messages, result.messages);
18746
18763
  result.hasNext = _secondResult4.hasNext;
18747
- case 42:
18764
+ case 43:
18748
18765
  updatedMessages = [];
18749
18766
  result.messages.forEach(function (msg) {
18750
18767
  var updatedMessage = updateMessageOnMap(channel.id, {
@@ -18756,18 +18773,18 @@ function getMessagesQuery(action) {
18756
18773
  });
18757
18774
  setMessagesToMap(channel.id, updatedMessages);
18758
18775
  setAllMessages([].concat(updatedMessages));
18759
- _context9.n = 43;
18760
- return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18761
- case 43:
18762
18776
  _context9.n = 44;
18763
- return put(setMessagesHasPrevAC(result.hasNext));
18777
+ return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18764
18778
  case 44:
18765
18779
  _context9.n = 45;
18766
- return put(setMessagesHasNextAC(false));
18780
+ return put(setMessagesHasPrevAC(result.hasNext));
18767
18781
  case 45:
18782
+ _context9.n = 46;
18783
+ return put(setMessagesHasNextAC(false));
18784
+ case 46:
18768
18785
  pendingMessages = getPendingMessages(channel.id);
18769
18786
  if (!(pendingMessages && pendingMessages.length)) {
18770
- _context9.n = 46;
18787
+ _context9.n = 47;
18771
18788
  break;
18772
18789
  }
18773
18790
  _messagesMap = {};
@@ -18777,35 +18794,35 @@ function getMessagesQuery(action) {
18777
18794
  filteredPendingMessages = pendingMessages.filter(function (msg) {
18778
18795
  return !_messagesMap[msg.tid || ''];
18779
18796
  });
18780
- _context9.n = 46;
18797
+ _context9.n = 47;
18781
18798
  return put(addMessagesAC(filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
18782
- case 46:
18783
- _context9.n = 48;
18784
- break;
18785
18799
  case 47:
18800
+ _context9.n = 49;
18801
+ break;
18802
+ case 48:
18786
18803
  if (!channel.isMockChannel) {
18787
- _context9.n = 48;
18804
+ _context9.n = 49;
18788
18805
  break;
18789
18806
  }
18790
- _context9.n = 48;
18807
+ _context9.n = 49;
18791
18808
  return put(setMessagesAC([]));
18792
- case 48:
18793
- _context9.n = 50;
18794
- break;
18795
18809
  case 49:
18796
- _context9.p = 49;
18797
- _t9 = _context9.v;
18798
- log.error('error in message query', _t9);
18810
+ _context9.n = 51;
18811
+ break;
18799
18812
  case 50:
18800
18813
  _context9.p = 50;
18801
- _context9.n = 51;
18802
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18814
+ _t9 = _context9.v;
18815
+ log.error('error in message query', _t9);
18803
18816
  case 51:
18804
- return _context9.f(50);
18817
+ _context9.p = 51;
18818
+ _context9.n = 52;
18819
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18805
18820
  case 52:
18821
+ return _context9.f(51);
18822
+ case 53:
18806
18823
  return _context9.a(2);
18807
18824
  }
18808
- }, _marked7$1, null, [[0, 49, 50, 52]]);
18825
+ }, _marked7$1, null, [[0, 50, 51, 53]]);
18809
18826
  }
18810
18827
  function getMessageQuery(action) {
18811
18828
  var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
@@ -18951,25 +18968,38 @@ function loadMoreMessages(action) {
18951
18968
  _context1.n = 11;
18952
18969
  return put(addMessagesAC(JSON.parse(JSON.stringify(result.messages)), direction));
18953
18970
  case 11:
18954
- _context1.n = 13;
18971
+ _context1.n = 16;
18955
18972
  break;
18956
18973
  case 12:
18957
18974
  _context1.n = 13;
18958
18975
  return put(addMessagesAC([], direction));
18959
18976
  case 13:
18977
+ if (!(direction === MESSAGE_LOAD_DIRECTION.NEXT)) {
18978
+ _context1.n = 15;
18979
+ break;
18980
+ }
18960
18981
  _context1.n = 14;
18961
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18982
+ return put(setMessagesHasNextAC(false));
18962
18983
  case 14:
18963
18984
  _context1.n = 16;
18964
18985
  break;
18965
18986
  case 15:
18966
- _context1.p = 15;
18987
+ _context1.n = 16;
18988
+ return put(setMessagesHasPrevAC(false));
18989
+ case 16:
18990
+ _context1.n = 17;
18991
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18992
+ case 17:
18993
+ _context1.n = 19;
18994
+ break;
18995
+ case 18:
18996
+ _context1.p = 18;
18967
18997
  _t1 = _context1.v;
18968
18998
  log.error('error in load more messages', _t1);
18969
- case 16:
18999
+ case 19:
18970
19000
  return _context1.a(2);
18971
19001
  }
18972
- }, _marked9$1, null, [[0, 15]]);
19002
+ }, _marked9$1, null, [[0, 18]]);
18973
19003
  }
18974
19004
  function addReaction(action) {
18975
19005
  var payload, channelId, messageId, key, score, reason, enforceUnique, user, channel, _yield$call, _message2, reaction, channelUpdateParam, _t10;
@@ -26121,6 +26151,7 @@ var Message = function Message(_ref) {
26121
26151
  var _useColor = useColors(),
26122
26152
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
26123
26153
  overlayBackground = _useColor[THEME_COLORS.OVERLAY_BACKGROUND];
26154
+ var scrollToNewMessage = useSelector(scrollToNewMessageSelector);
26124
26155
  var dispatch = useDispatch();
26125
26156
  var ChatClient = getClient();
26126
26157
  var user = ChatClient.user;
@@ -26139,7 +26170,19 @@ var Message = function Message(_ref) {
26139
26170
  };
26140
26171
  useEffect(function () {
26141
26172
  if (isVisible) {
26173
+ var _channel$lastMessage;
26142
26174
  handleSendReadMarker();
26175
+ if (!channel.isLinkedChannel) {
26176
+ setMessageToVisibleMessagesMap(message);
26177
+ }
26178
+ 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))) {
26179
+ dispatch(scrollToNewMessageAC(false, false, false));
26180
+ dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
26181
+ }
26182
+ } else {
26183
+ if (!channel.isLinkedChannel) {
26184
+ removeMessageFromVisibleMessagesMap(message);
26185
+ }
26143
26186
  }
26144
26187
  }, [isVisible]);
26145
26188
  useDidUpdate(function () {
@@ -32792,14 +32835,6 @@ var HiddenMessageProperty;
32792
32835
  })(HiddenMessageProperty || (HiddenMessageProperty = {}));
32793
32836
 
32794
32837
  var _templateObject$D, _templateObject2$y, _templateObject3$s, _templateObject4$o, _templateObject5$k, _templateObject6$h, _templateObject7$f, _templateObject8$e, _templateObject9$c, _templateObject0$b, _templateObject1$8;
32795
- var loadFromServer = false;
32796
- var loadDirection = '';
32797
- var nextDisable = false;
32798
- var prevDisable = false;
32799
- var scrollToBottom = false;
32800
- var shouldLoadMessages;
32801
- var loading = false;
32802
- var messagesIndexMap = {};
32803
32838
  var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
32804
32839
  var lastIndex = _ref.lastIndex,
32805
32840
  currentMessageDate = _ref.currentMessageDate,
@@ -33009,6 +33044,7 @@ var MessageList = function MessageList(_ref2) {
33009
33044
  var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, shallowEqual);
33010
33045
  var scrollToRepliedMessage = useSelector(scrollToMessageSelector, shallowEqual);
33011
33046
  var scrollToMessageHighlight = useSelector(scrollToMessageHighlightSelector, shallowEqual);
33047
+ var scrollToMessageBehavior = useSelector(scrollToMessageBehaviorSelector, shallowEqual);
33012
33048
  var browserTabIsActive = useSelector(browserTabIsActiveSelector, shallowEqual);
33013
33049
  var hasNextMessages = useSelector(messagesHasNextSelector, shallowEqual);
33014
33050
  var hasPrevMessages = useSelector(messagesHasPrevSelector, shallowEqual);
@@ -33049,35 +33085,40 @@ var MessageList = function MessageList(_ref2) {
33049
33085
  setShouldPreserveScroll = _useState0[1];
33050
33086
  var messageForReply = {};
33051
33087
  var attachmentsSelected = false;
33052
- var messageTopDateRef = useRef(null);
33088
+ var _useState1 = useState(''),
33089
+ topDateLabel = _useState1[0],
33090
+ setTopDateLabel = _useState1[1];
33053
33091
  var scrollRef = useRef(null);
33092
+ var loadFromServerRef = useRef(false);
33093
+ var loadDirectionRef = useRef('');
33094
+ var nextDisableRef = useRef(false);
33095
+ var prevDisableRef = useRef(false);
33096
+ var scrollToBottomRef = useRef(false);
33097
+ var shouldLoadMessagesRef = useRef('');
33098
+ var loadingRef = useRef(false);
33099
+ var messagesIndexMapRef = useRef({});
33100
+ var scrollRafRef = useRef(null);
33101
+ var loadingMessagesTimeoutRef = useRef(null);
33054
33102
  var renderTopDate = function renderTopDate() {
33055
- var dateLabels = document.querySelectorAll('.divider');
33056
- var messageTopDate = messageTopDateRef.current;
33103
+ var container = scrollRef.current;
33104
+ if (!container) return;
33105
+ var dateLabels = container.querySelectorAll('.divider');
33057
33106
  var text = '';
33058
33107
  for (var i = dateLabels.length - 1; i >= 0; i--) {
33059
- var _dateLabel$firstChild;
33060
33108
  var dateLabel = dateLabels[i];
33061
- var span = dateLabel === null || dateLabel === void 0 ? void 0 : (_dateLabel$firstChild = dateLabel.firstChild) === null || _dateLabel$firstChild === void 0 ? void 0 : _dateLabel$firstChild.firstChild;
33062
- if (!text && scrollRef.current.scrollTop > dateLabel.offsetTop) {
33063
- text = span && span.innerText;
33064
- span.style.display = 'none';
33065
- } else {
33066
- span.style.display = 'block';
33109
+ if (!text && container.scrollTop > dateLabel.offsetTop) {
33110
+ var span = (dateLabel === null || dateLabel === void 0 ? void 0 : dateLabel.firstChild) && dateLabel.firstChild.firstChild;
33111
+ text = span ? span.innerText || '' : '';
33067
33112
  }
33068
33113
  }
33069
- if (text) {
33070
- messageTopDate.innerText = text;
33071
- messageTopDate.style.display = 'inline';
33072
- } else {
33073
- messageTopDate.style.display = 'none';
33074
- }
33114
+ setTopDateLabel(text);
33075
33115
  };
33076
- var handleMessagesListScroll = useCallback(function (event) {
33116
+ var handleMessagesListScroll = useCallback(function () {
33077
33117
  try {
33118
+ var target = scrollRef.current;
33119
+ if (!target) return Promise.resolve();
33078
33120
  if (scrollToMentionedMessage) {
33079
- var _target = event.target;
33080
- if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33121
+ if (target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33081
33122
  dispatch(showScrollToNewMessageButtonAC(true));
33082
33123
  } else {
33083
33124
  dispatch(showScrollToNewMessageButtonAC(false));
@@ -33090,7 +33131,6 @@ var MessageList = function MessageList(_ref2) {
33090
33131
  setShowTopDate(false);
33091
33132
  }, 1000);
33092
33133
  renderTopDate();
33093
- var target = event.target;
33094
33134
  var forceLoadPrevMessages = false;
33095
33135
  if (-target.scrollTop + target.offsetHeight + 30 > target.scrollHeight) {
33096
33136
  forceLoadPrevMessages = true;
@@ -33105,51 +33145,68 @@ var MessageList = function MessageList(_ref2) {
33105
33145
  }
33106
33146
  if (scrollToReply) {
33107
33147
  target.scrollTop = scrollToReply;
33108
- } else {
33109
- if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
33110
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33111
- if (loading || messagesLoading === LOADING_STATE.LOADING || prevDisable) {
33112
- shouldLoadMessages = 'prev';
33113
- } else {
33114
- if (shouldLoadMessages === 'prev') {
33115
- shouldLoadMessages = '';
33116
- }
33117
- loadDirection = 'prev';
33118
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33119
- if (!getHasPrevCached()) {
33120
- loadFromServer = true;
33121
- }
33122
- nextDisable = true;
33148
+ return Promise.resolve();
33149
+ }
33150
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33151
+ var hasIndex = typeof currentIndex === 'number';
33152
+ if (hasIndex && currentIndex < 15 || forceLoadPrevMessages) {
33153
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33154
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || prevDisableRef.current) {
33155
+ shouldLoadMessagesRef.current = 'prev';
33156
+ } else {
33157
+ if (shouldLoadMessagesRef.current === 'prev') {
33158
+ shouldLoadMessagesRef.current = '';
33159
+ }
33160
+ loadDirectionRef.current = 'prev';
33161
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33162
+ if (!getHasPrevCached()) {
33163
+ loadFromServerRef.current = true;
33123
33164
  }
33165
+ nextDisableRef.current = true;
33124
33166
  }
33125
33167
  }
33126
- if (messagesIndexMap[lastVisibleMessageId] >= messages.length - 15 || target.scrollTop === 0) {
33127
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33128
- if (loading || messagesLoading === LOADING_STATE.LOADING || nextDisable) {
33129
- shouldLoadMessages = 'next';
33130
- } else {
33131
- if (shouldLoadMessages === 'next') {
33132
- shouldLoadMessages = '';
33133
- }
33134
- loadDirection = 'next';
33135
- prevDisable = true;
33136
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33168
+ }
33169
+ if (hasIndex && currentIndex >= messages.length - 15 || target.scrollTop === 0) {
33170
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33171
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || nextDisableRef.current) {
33172
+ shouldLoadMessagesRef.current = 'next';
33173
+ } else {
33174
+ if (shouldLoadMessagesRef.current === 'next') {
33175
+ shouldLoadMessagesRef.current = '';
33137
33176
  }
33177
+ loadDirectionRef.current = 'next';
33178
+ prevDisableRef.current = true;
33179
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33138
33180
  }
33139
33181
  }
33140
- if (messagesIndexMap[lastVisibleMessageId] > messages.length - 10) {
33141
- nextDisable = false;
33142
- }
33182
+ }
33183
+ if (hasIndex && currentIndex > messages.length - 10) {
33184
+ nextDisableRef.current = false;
33143
33185
  }
33144
33186
  return Promise.resolve();
33145
33187
  } catch (e) {
33146
33188
  return Promise.reject(e);
33147
33189
  }
33148
- }, [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]);
33190
+ }, [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]);
33191
+ var onScroll = useCallback(function () {
33192
+ if (scrollRafRef.current !== null) return;
33193
+ scrollRafRef.current = window.requestAnimationFrame(function () {
33194
+ scrollRafRef.current = null;
33195
+ handleMessagesListScroll();
33196
+ });
33197
+ }, [handleMessagesListScroll]);
33198
+ useEffect(function () {
33199
+ return function () {
33200
+ if (scrollRafRef.current !== null) {
33201
+ cancelAnimationFrame(scrollRafRef.current);
33202
+ scrollRafRef.current = null;
33203
+ }
33204
+ };
33205
+ }, []);
33149
33206
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
33150
33207
  try {
33151
- prevDisable = true;
33152
- nextDisable = true;
33208
+ prevDisableRef.current = true;
33209
+ nextDisableRef.current = true;
33153
33210
  if (messages.findIndex(function (msg) {
33154
33211
  return msg.id === messageId;
33155
33212
  }) >= 10) {
@@ -33163,8 +33220,8 @@ var MessageList = function MessageList(_ref2) {
33163
33220
  var positiveValue = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2 < 0 ? repliedMessage.offsetTop - scrollRef.current.offsetHeight * -1 : repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
33164
33221
  setTimeout(function () {
33165
33222
  repliedMessage.classList.remove('highlight');
33166
- prevDisable = false;
33167
- nextDisable = false;
33223
+ prevDisableRef.current = false;
33224
+ nextDisableRef.current = false;
33168
33225
  }, 1000 + positiveValue * 0.1);
33169
33226
  }
33170
33227
  } else {
@@ -33185,10 +33242,10 @@ var MessageList = function MessageList(_ref2) {
33185
33242
  var hasNextCached = getHasNextCached();
33186
33243
  if (messagesLoading === LOADING_STATE.LOADED && connectionStatus === CONNECTION_STATUS.CONNECTED) {
33187
33244
  if (direction === MESSAGE_LOAD_DIRECTION.PREV && firstMessageId && (hasPrevMessages || hasPrevCached)) {
33188
- loading = true;
33245
+ loadingRef.current = true;
33189
33246
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, firstMessageId, hasPrevMessages));
33190
33247
  } else if (direction === MESSAGE_LOAD_DIRECTION.NEXT && lastMessageId && (hasNextMessages || hasNextCached)) {
33191
- loading = true;
33248
+ loadingRef.current = true;
33192
33249
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, lastMessageId, hasNextMessages));
33193
33250
  }
33194
33251
  }
@@ -33219,39 +33276,42 @@ var MessageList = function MessageList(_ref2) {
33219
33276
  setIsDragging(false);
33220
33277
  }
33221
33278
  };
33279
+ var readDroppedFiles = function readDroppedFiles(e) {
33280
+ return new Promise(function (resolve) {
33281
+ var fileList = Object.values(e.dataTransfer.files);
33282
+ var attachmentsFiles = [];
33283
+ var readFiles = 0;
33284
+ var errorCount = 0;
33285
+ fileList.forEach(function (attachment) {
33286
+ var fileReader = new FileReader();
33287
+ fileReader.onload = function (event) {
33288
+ var file = event.target.result;
33289
+ attachmentsFiles.push({
33290
+ name: attachment.name,
33291
+ data: file,
33292
+ type: attachment.type
33293
+ });
33294
+ readFiles++;
33295
+ if (readFiles + errorCount === fileList.length) {
33296
+ resolve(attachmentsFiles);
33297
+ }
33298
+ };
33299
+ fileReader.onerror = function () {
33300
+ errorCount++;
33301
+ if (readFiles + errorCount === fileList.length) {
33302
+ resolve(attachmentsFiles);
33303
+ }
33304
+ };
33305
+ fileReader.readAsDataURL(attachment);
33306
+ });
33307
+ });
33308
+ };
33222
33309
  var handleDropFile = function handleDropFile(e) {
33223
33310
  e.preventDefault();
33224
33311
  e.stopPropagation();
33225
33312
  setIsDragging(false);
33226
33313
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33227
- var fileList = Object.values(e.dataTransfer.files);
33228
- new Promise(function (resolve) {
33229
- var attachmentsFiles = [];
33230
- var readFiles = 0;
33231
- var errorCount = 0;
33232
- fileList.forEach(function (attachment) {
33233
- var fileReader = new FileReader();
33234
- fileReader.onload = function (event) {
33235
- var file = event.target.result;
33236
- attachmentsFiles.push({
33237
- name: attachment.name,
33238
- data: file,
33239
- type: attachment.type
33240
- });
33241
- readFiles++;
33242
- if (readFiles + errorCount === fileList.length) {
33243
- resolve(attachmentsFiles);
33244
- }
33245
- };
33246
- fileReader.onerror = function () {
33247
- errorCount++;
33248
- if (readFiles + errorCount === fileList.length) {
33249
- resolve(attachmentsFiles);
33250
- }
33251
- };
33252
- fileReader.readAsDataURL(attachment);
33253
- });
33254
- }).then(function (result) {
33314
+ readDroppedFiles(e).then(function (result) {
33255
33315
  dispatch(setDraggedAttachmentsAC(result, 'file'));
33256
33316
  })["catch"](function (error) {
33257
33317
  console.error('Error in handleDropFile:', error);
@@ -33264,34 +33324,7 @@ var MessageList = function MessageList(_ref2) {
33264
33324
  e.stopPropagation();
33265
33325
  setIsDragging(false);
33266
33326
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33267
- var fileList = Object.values(e.dataTransfer.files);
33268
- new Promise(function (resolve) {
33269
- var attachmentsFiles = [];
33270
- var readFiles = 0;
33271
- var errorCount = 0;
33272
- fileList.forEach(function (attachment) {
33273
- var fileReader = new FileReader();
33274
- fileReader.onload = function (event) {
33275
- var file = event.target.result;
33276
- attachmentsFiles.push({
33277
- name: attachment.name,
33278
- data: file,
33279
- type: attachment.type
33280
- });
33281
- readFiles++;
33282
- if (readFiles + errorCount === fileList.length) {
33283
- resolve(attachmentsFiles);
33284
- }
33285
- };
33286
- fileReader.onerror = function () {
33287
- errorCount++;
33288
- if (readFiles + errorCount === fileList.length) {
33289
- resolve(attachmentsFiles);
33290
- }
33291
- };
33292
- fileReader.readAsDataURL(attachment);
33293
- });
33294
- }).then(function (result) {
33327
+ readDroppedFiles(e).then(function (result) {
33295
33328
  dispatch(setDraggedAttachmentsAC(result, 'media'));
33296
33329
  })["catch"](function (error) {
33297
33330
  console.error('Error in handleDropMedia:', error);
@@ -33303,21 +33336,21 @@ var MessageList = function MessageList(_ref2) {
33303
33336
  var _messages, _channel$lastMessage2;
33304
33337
  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) {
33305
33338
  dispatch(showScrollToNewMessageButtonAC(false));
33306
- prevDisable = false;
33339
+ prevDisableRef.current = false;
33307
33340
  }
33308
33341
  }, [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]);
33309
33342
  useEffect(function () {
33310
33343
  if (scrollToRepliedMessage) {
33311
- loading = false;
33344
+ loadingRef.current = false;
33312
33345
  scrollRef.current.style.scrollBehavior = 'inherit';
33313
33346
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
33314
33347
  if (repliedMessage) {
33315
33348
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
33316
33349
  scrollRef.current.scrollTo({
33317
33350
  top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
33318
- behavior: 'smooth'
33351
+ behavior: scrollToMessageBehavior
33319
33352
  });
33320
- scrollRef.current.style.scrollBehavior = 'smooth';
33353
+ scrollRef.current.style.scrollBehavior = scrollToMessageBehavior;
33321
33354
  if (!channel.backToLinkedChannel && scrollToMessageHighlight) {
33322
33355
  repliedMessage && repliedMessage.classList.add('highlight');
33323
33356
  }
@@ -33327,9 +33360,9 @@ var MessageList = function MessageList(_ref2) {
33327
33360
  var _repliedMessage = document.getElementById(scrollToRepliedMessage);
33328
33361
  _repliedMessage && _repliedMessage.classList.remove('highlight');
33329
33362
  }
33330
- prevDisable = false;
33363
+ prevDisableRef.current = false;
33331
33364
  setScrollToReply(null);
33332
- scrollRef.current.style.scrollBehavior = 'smooth';
33365
+ scrollRef.current.style.scrollBehavior = 'instant';
33333
33366
  }, 1000 + positiveValue * 0.1);
33334
33367
  }
33335
33368
  dispatch(setScrollToMessagesAC(null));
@@ -33345,15 +33378,15 @@ var MessageList = function MessageList(_ref2) {
33345
33378
  });
33346
33379
  }
33347
33380
  } else {
33348
- nextDisable = true;
33349
- prevDisable = true;
33381
+ nextDisableRef.current = true;
33382
+ prevDisableRef.current = true;
33350
33383
  scrollRef.current.scrollTo({
33351
33384
  top: 0,
33352
33385
  behavior: 'smooth'
33353
33386
  });
33354
33387
  dispatch(showScrollToNewMessageButtonAC(false));
33355
33388
  setTimeout(function () {
33356
- prevDisable = false;
33389
+ prevDisableRef.current = false;
33357
33390
  }, 800);
33358
33391
  }
33359
33392
  }
@@ -33371,11 +33404,18 @@ var MessageList = function MessageList(_ref2) {
33371
33404
  useEffect(function () {
33372
33405
  setHasNextCached(false);
33373
33406
  setHasPrevCached(false);
33407
+ messagesIndexMapRef.current = {};
33408
+ loadFromServerRef.current = false;
33409
+ loadDirectionRef.current = '';
33410
+ nextDisableRef.current = false;
33411
+ prevDisableRef.current = false;
33412
+ shouldLoadMessagesRef.current = '';
33413
+ loadingRef.current = false;
33374
33414
  if (channel.backToLinkedChannel) {
33375
33415
  var visibleMessages = getVisibleMessagesMap();
33376
33416
  var visibleMessagesIds = Object.keys(visibleMessages);
33377
33417
  var messageId = visibleMessagesIds[visibleMessagesIds.length - 1];
33378
- dispatch(getMessagesAC(channel, undefined, messageId));
33418
+ dispatch(getMessagesAC(channel, undefined, messageId, undefined, undefined, undefined, 'instant'));
33379
33419
  setUnreadMessageId(messageId);
33380
33420
  } else {
33381
33421
  if (!channel.isLinkedChannel) {
@@ -33398,9 +33438,9 @@ var MessageList = function MessageList(_ref2) {
33398
33438
  }
33399
33439
  setPreviousScrollTop(0);
33400
33440
  setShouldPreserveScroll(false);
33401
- nextDisable = false;
33402
- prevDisable = false;
33403
- scrollToBottom = true;
33441
+ nextDisableRef.current = false;
33442
+ prevDisableRef.current = false;
33443
+ scrollToBottomRef.current = true;
33404
33444
  setAllowEditDeleteIncomingMessage(allowEditDeleteIncomingMessage);
33405
33445
  }, [channel.id]);
33406
33446
  useEffect(function () {
@@ -33415,7 +33455,7 @@ var MessageList = function MessageList(_ref2) {
33415
33455
  setUnreadMessageId('');
33416
33456
  }
33417
33457
  }
33418
- }, [messages]);
33458
+ }, [messages, hiddenMessagesProperties, user === null || user === void 0 ? void 0 : user.id]);
33419
33459
  useEffect(function () {
33420
33460
  if (scrollRef.current) {
33421
33461
  var isAtBottom = scrollRef.current.scrollTop > -50;
@@ -33424,35 +33464,40 @@ var MessageList = function MessageList(_ref2) {
33424
33464
  setShouldPreserveScroll(true);
33425
33465
  }
33426
33466
  }
33427
- if (loading) {
33428
- if (loadDirection !== 'next') {
33467
+ if (loadingRef.current) {
33468
+ if (loadDirectionRef.current !== 'next') {
33429
33469
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
33430
33470
  if (lastVisibleMessage) {
33431
33471
  scrollRef.current.style.scrollBehavior = 'inherit';
33432
33472
  scrollRef.current.scrollTop = lastVisibleMessage.offsetTop;
33433
33473
  scrollRef.current.style.scrollBehavior = 'smooth';
33434
33474
  }
33435
- if (loadFromServer) {
33436
- setTimeout(function () {
33437
- loading = false;
33438
- loadFromServer = false;
33439
- nextDisable = false;
33440
- if (shouldLoadMessages === 'prev' && messagesIndexMap[lastVisibleMessageId] < 15) {
33475
+ if (loadFromServerRef.current) {
33476
+ var timeout = setTimeout(function () {
33477
+ loadingRef.current = false;
33478
+ loadFromServerRef.current = false;
33479
+ nextDisableRef.current = false;
33480
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33481
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33441
33482
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33442
33483
  }
33443
- if (shouldLoadMessages === 'next' && messagesIndexMap[lastVisibleMessageId] > messages.length - 15) {
33484
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33444
33485
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33445
33486
  }
33446
33487
  }, 50);
33488
+ if (loadingMessagesTimeoutRef.current) {
33489
+ clearTimeout(loadingMessagesTimeoutRef.current);
33490
+ }
33491
+ loadingMessagesTimeoutRef.current = timeout;
33447
33492
  } else {
33448
- loading = false;
33449
- if (shouldLoadMessages === 'prev') {
33493
+ loadingRef.current = false;
33494
+ if (shouldLoadMessagesRef.current === 'prev') {
33450
33495
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33451
- shouldLoadMessages = '';
33496
+ shouldLoadMessagesRef.current = '';
33452
33497
  }
33453
- if (shouldLoadMessages === 'next') {
33498
+ if (shouldLoadMessagesRef.current === 'next') {
33454
33499
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33455
- shouldLoadMessages = '';
33500
+ shouldLoadMessagesRef.current = '';
33456
33501
  }
33457
33502
  }
33458
33503
  } else {
@@ -33462,22 +33507,26 @@ var MessageList = function MessageList(_ref2) {
33462
33507
  scrollRef.current.scrollTop = _lastVisibleMessage.offsetTop - scrollRef.current.offsetHeight + _lastVisibleMessage.offsetHeight;
33463
33508
  scrollRef.current.style.scrollBehavior = 'smooth';
33464
33509
  }
33465
- loading = false;
33466
- prevDisable = false;
33467
- if (shouldLoadMessages === 'prev') {
33510
+ loadingRef.current = false;
33511
+ prevDisableRef.current = false;
33512
+ if (shouldLoadMessagesRef.current === 'prev') {
33468
33513
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33469
- shouldLoadMessages = '';
33514
+ shouldLoadMessagesRef.current = '';
33470
33515
  }
33471
- if (shouldLoadMessages === 'next') {
33516
+ if (shouldLoadMessagesRef.current === 'next') {
33472
33517
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33473
- shouldLoadMessages = '';
33518
+ shouldLoadMessagesRef.current = '';
33474
33519
  }
33475
33520
  }
33476
33521
  }
33477
33522
  renderTopDate();
33478
- if (scrollToBottom) {
33479
- dispatch(scrollToNewMessageAC(true));
33480
- scrollToBottom = false;
33523
+ if (scrollToBottomRef.current) {
33524
+ if (channel.backToLinkedChannel) {
33525
+ dispatch(scrollToNewMessageAC(false));
33526
+ } else {
33527
+ dispatch(scrollToNewMessageAC(true));
33528
+ }
33529
+ scrollToBottomRef.current = false;
33481
33530
  }
33482
33531
  if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
33483
33532
  requestAnimationFrame(function () {
@@ -33490,13 +33539,43 @@ var MessageList = function MessageList(_ref2) {
33490
33539
  setPreviousScrollTop(0);
33491
33540
  });
33492
33541
  }
33542
+ return function () {
33543
+ if (loadingMessagesTimeoutRef.current) {
33544
+ clearTimeout(loadingMessagesTimeoutRef.current);
33545
+ }
33546
+ };
33493
33547
  }, [messages]);
33548
+ useEffect(function () {
33549
+ if (messagesLoading === LOADING_STATE.LOADED) {
33550
+ var timeout = setTimeout(function () {
33551
+ loadingRef.current = false;
33552
+ loadFromServerRef.current = false;
33553
+ nextDisableRef.current = false;
33554
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33555
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33556
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33557
+ }
33558
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33559
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33560
+ }
33561
+ }, 50);
33562
+ if (loadingMessagesTimeoutRef.current) {
33563
+ clearTimeout(loadingMessagesTimeoutRef.current);
33564
+ }
33565
+ loadingMessagesTimeoutRef.current = timeout;
33566
+ }
33567
+ return function () {
33568
+ if (loadingMessagesTimeoutRef.current) {
33569
+ clearTimeout(loadingMessagesTimeoutRef.current);
33570
+ }
33571
+ };
33572
+ }, [messagesLoading, messages, lastVisibleMessageId]);
33494
33573
  useEffect(function () {
33495
33574
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
33496
33575
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
33497
- loading = false;
33498
- prevDisable = false;
33499
- nextDisable = false;
33576
+ loadingRef.current = false;
33577
+ prevDisableRef.current = false;
33578
+ nextDisableRef.current = false;
33500
33579
  clearMessagesMap();
33501
33580
  removeAllMessages();
33502
33581
  if (channel.id) {
@@ -33505,7 +33584,8 @@ var MessageList = function MessageList(_ref2) {
33505
33584
  }
33506
33585
  }, [connectionStatus]);
33507
33586
  useEffect(function () {
33508
- if (channel.newMessageCount && channel.newMessageCount > 0 && getUnreadScrollTo()) {
33587
+ var unreadScrollTo = getUnreadScrollTo();
33588
+ if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
33509
33589
  if (scrollRef.current) {
33510
33590
  scrollRef.current.style.scrollBehavior = 'inherit';
33511
33591
  }
@@ -33518,7 +33598,14 @@ var MessageList = function MessageList(_ref2) {
33518
33598
  setUnreadScrollTo(false);
33519
33599
  }
33520
33600
  }
33521
- });
33601
+ }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
33602
+ useEffect(function () {
33603
+ return function () {
33604
+ if (hideTopDateTimeout.current) {
33605
+ clearTimeout(hideTopDateTimeout.current);
33606
+ }
33607
+ };
33608
+ }, []);
33522
33609
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isDragging && !(attachmentsPreview !== null && attachmentsPreview !== void 0 && attachmentsPreview.show && mediaFile) && (/*#__PURE__*/React__default.createElement(DragAndDropContainer, {
33523
33610
  id: 'draggingContainer',
33524
33611
  draggable: true,
@@ -33561,14 +33648,12 @@ var MessageList = function MessageList(_ref2) {
33561
33648
  dateDividerBackgroundColor: dateDividerBackgroundColor || overlayBackground,
33562
33649
  dateDividerBorderRadius: dateDividerBorderRadius,
33563
33650
  topOffset: scrollRef && scrollRef.current && scrollRef.current.offsetTop
33564
- }, /*#__PURE__*/React__default.createElement("span", {
33565
- ref: messageTopDateRef
33566
- }))), /*#__PURE__*/React__default.createElement(Container$h, {
33651
+ }, /*#__PURE__*/React__default.createElement("span", null, topDateLabel))), /*#__PURE__*/React__default.createElement(Container$h, {
33567
33652
  id: 'scrollableDiv',
33568
33653
  className: isScrolling ? 'show-scrollbar' : '',
33569
33654
  ref: scrollRef,
33570
33655
  stopScrolling: stopScrolling,
33571
- onScroll: handleMessagesListScroll,
33656
+ onScroll: onScroll,
33572
33657
  onMouseEnter: function onMouseEnter() {
33573
33658
  return setIsScrolling(true);
33574
33659
  },
@@ -33587,8 +33672,10 @@ var MessageList = function MessageList(_ref2) {
33587
33672
  var prevMessage = messages[index - 1];
33588
33673
  var nextMessage = messages[index + 1];
33589
33674
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
33590
- messagesIndexMap[message.id] = index;
33591
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33675
+ messagesIndexMapRef.current[message.id] = index;
33676
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
33677
+ key: message.id || message.tid
33678
+ }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33592
33679
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
33593
33680
  theme: theme,
33594
33681
  lastIndex: false,
@@ -41118,10 +41205,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
41118
41205
  };
41119
41206
  var handleScrollToLastMessage = function handleScrollToLastMessage(messageId) {
41120
41207
  try {
41121
- dispatch(scrollToNewMessageAC(true, false, false));
41122
41208
  if (messages.findIndex(function (msg) {
41123
41209
  return msg.id === messageId;
41124
41210
  }) >= 10) {
41211
+ dispatch(scrollToNewMessageAC(true, false, false));
41125
41212
  dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
41126
41213
  var repliedMessage = document.getElementById(messageId);
41127
41214
  if (repliedMessage) {