sceyt-chat-react-uikit 1.7.1-beta.9 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -9091,7 +9091,7 @@ function updateChannelLastMessageOnAllChannels(channelId, message) {
9091
9091
  var updateChannel = allChannels.find(function (chan) {
9092
9092
  return chan.id === channelId;
9093
9093
  });
9094
- if (message.state === 'Deleted' || message.state === 'Edited') {
9094
+ if ((message === null || message === void 0 ? void 0 : message.state) === 'Deleted' || (message === null || message === void 0 ? void 0 : message.state) === 'Edited') {
9095
9095
  var _updateChannel;
9096
9096
  if (((_updateChannel = updateChannel) === null || _updateChannel === void 0 ? void 0 : _updateChannel.lastMessage.id) === message.id) {
9097
9097
  allChannels = allChannels.map(function (chan) {
@@ -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);
@@ -10606,8 +10608,8 @@ var messageSlice = createSlice({
10606
10608
  var _action$payload8 = action.payload,
10607
10609
  uploaded = _action$payload8.uploaded,
10608
10610
  total = _action$payload8.total,
10609
- attachmentId = _action$payload8.attachmentId,
10610
- progress = _action$payload8.progress;
10611
+ attachmentId = _action$payload8.attachmentId;
10612
+ var progress = uploaded / total;
10611
10613
  var updateData = {
10612
10614
  uploaded: uploaded,
10613
10615
  total: total,
@@ -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,38 +18815,38 @@ 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
- var payload, channelId, messageId, channel, messages, _t0;
18849
+ var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
18833
18850
  return _regenerator().w(function (_context0) {
18834
18851
  while (1) switch (_context0.p = _context0.n) {
18835
18852
  case 0:
@@ -18837,34 +18854,53 @@ function getMessageQuery(action) {
18837
18854
  payload = action.payload;
18838
18855
  channelId = payload.channelId, messageId = payload.messageId;
18839
18856
  _context0.n = 1;
18840
- return effects.call(getChannelFromMap, channelId);
18857
+ return effects.call(getChannelFromAllChannels, channelId);
18841
18858
  case 1:
18842
18859
  channel = _context0.v;
18843
- _context0.n = 2;
18844
- return effects.call(channel.getMessagesById, [messageId]);
18860
+ if (channel) {
18861
+ _context0.n = 2;
18862
+ break;
18863
+ }
18864
+ return _context0.a(2);
18845
18865
  case 2:
18846
- messages = _context0.v;
18847
18866
  _context0.n = 3;
18848
- return effects.put(updateMessageAC(messageId, messages[0]));
18867
+ return effects.call(channel.getMessagesById, [messageId]);
18849
18868
  case 3:
18869
+ messages = _context0.v;
18870
+ fetchedMessage = messages && messages[0] ? JSON.parse(JSON.stringify(messages[0])) : null;
18871
+ if (!fetchedMessage) {
18872
+ _context0.n = 6;
18873
+ break;
18874
+ }
18875
+ _context0.n = 4;
18876
+ return effects.put(updateMessageAC(messageId, fetchedMessage));
18877
+ case 4:
18850
18878
  updateMessageOnMap(channel.id, {
18851
18879
  messageId: messageId,
18852
- params: messages[0]
18880
+ params: fetchedMessage
18853
18881
  });
18854
- updateMessageOnAllMessages(messageId, messages[0]);
18855
- _context0.n = 4;
18882
+ updateMessageOnAllMessages(messageId, fetchedMessage);
18883
+ _context0.n = 5;
18856
18884
  return effects.put(setScrollToMessagesAC(messageId, false));
18857
- case 4:
18885
+ case 5:
18886
+ if (!(channel.lastMessage && channel.lastMessage.id === messageId)) {
18887
+ _context0.n = 6;
18888
+ break;
18889
+ }
18890
+ updateChannelLastMessageOnAllChannels(channel.id, fetchedMessage);
18858
18891
  _context0.n = 6;
18892
+ return effects.put(updateChannelLastMessageAC(fetchedMessage, channel));
18893
+ case 6:
18894
+ _context0.n = 8;
18859
18895
  break;
18860
- case 5:
18861
- _context0.p = 5;
18896
+ case 7:
18897
+ _context0.p = 7;
18862
18898
  _t0 = _context0.v;
18863
18899
  log.error('error in message query', _t0);
18864
- case 6:
18900
+ case 8:
18865
18901
  return _context0.a(2);
18866
18902
  }
18867
- }, _marked8$1, null, [[0, 5]]);
18903
+ }, _marked8$1, null, [[0, 7]]);
18868
18904
  }
18869
18905
  function loadMoreMessages(action) {
18870
18906
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result, _t1;
@@ -18953,25 +18989,38 @@ function loadMoreMessages(action) {
18953
18989
  _context1.n = 11;
18954
18990
  return effects.put(addMessagesAC(JSON.parse(JSON.stringify(result.messages)), direction));
18955
18991
  case 11:
18956
- _context1.n = 13;
18992
+ _context1.n = 16;
18957
18993
  break;
18958
18994
  case 12:
18959
18995
  _context1.n = 13;
18960
18996
  return effects.put(addMessagesAC([], direction));
18961
18997
  case 13:
18998
+ if (!(direction === MESSAGE_LOAD_DIRECTION.NEXT)) {
18999
+ _context1.n = 15;
19000
+ break;
19001
+ }
18962
19002
  _context1.n = 14;
18963
- return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
19003
+ return effects.put(setMessagesHasNextAC(false));
18964
19004
  case 14:
18965
19005
  _context1.n = 16;
18966
19006
  break;
18967
19007
  case 15:
18968
- _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;
18969
19018
  _t1 = _context1.v;
18970
19019
  log.error('error in load more messages', _t1);
18971
- case 16:
19020
+ case 19:
18972
19021
  return _context1.a(2);
18973
19022
  }
18974
- }, _marked9$1, null, [[0, 15]]);
19023
+ }, _marked9$1, null, [[0, 18]]);
18975
19024
  }
18976
19025
  function addReaction(action) {
18977
19026
  var payload, channelId, messageId, key, score, reason, enforceUnique, user, channel, _yield$call, _message2, reaction, channelUpdateParam, _t10;
@@ -19395,7 +19444,7 @@ function MessageSaga() {
19395
19444
  return effects.takeLatest(GET_MESSAGES, getMessagesQuery);
19396
19445
  case 7:
19397
19446
  _context18.n = 8;
19398
- return effects.takeLatest(GET_MESSAGE, getMessageQuery);
19447
+ return effects.takeEvery(GET_MESSAGE, getMessageQuery);
19399
19448
  case 8:
19400
19449
  _context18.n = 9;
19401
19450
  return effects.takeLatest(GET_MESSAGES_ATTACHMENTS, getMessageAttachments);
@@ -21000,6 +21049,50 @@ function SvgAvatar(props) {
21000
21049
  })));
21001
21050
  }
21002
21051
 
21052
+ var ATTACHMENTS_CACHE = 'attachments-cache';
21053
+ var isBrowser = typeof window !== 'undefined';
21054
+ var cacheAvailable;
21055
+ if (isBrowser) {
21056
+ cacheAvailable = 'caches' in window;
21057
+ } else {
21058
+ cacheAvailable = 'caches' in global;
21059
+ }
21060
+ var setAttachmentToCache = function setAttachmentToCache(attachmentUrl, attachmentResponse) {
21061
+ if (cacheAvailable) {
21062
+ caches.open(ATTACHMENTS_CACHE).then(function (cache) {
21063
+ try {
21064
+ cache.put(attachmentUrl, attachmentResponse).then(function () {
21065
+ log.info('Cache success');
21066
+ })["catch"](function (e) {
21067
+ log.info('Error on cache attachment ... ', e);
21068
+ caches["delete"](attachmentUrl);
21069
+ });
21070
+ return Promise.resolve();
21071
+ } catch (e) {
21072
+ return Promise.reject(e);
21073
+ }
21074
+ });
21075
+ }
21076
+ };
21077
+ var getAttachmentUrlFromCache = function getAttachmentUrlFromCache(attachmentUrl) {
21078
+ try {
21079
+ if (!cacheAvailable) {
21080
+ log.error('Cache is not available');
21081
+ return Promise.reject(new Error('Cache not available'));
21082
+ }
21083
+ return Promise.resolve(caches.match(attachmentUrl)).then(function (response) {
21084
+ if (response) {
21085
+ return Promise.resolve(response.blob()).then(URL.createObjectURL);
21086
+ } else {
21087
+ log.info('The image or video is not cached', attachmentUrl);
21088
+ return false;
21089
+ }
21090
+ });
21091
+ } catch (e) {
21092
+ return Promise.reject(e);
21093
+ }
21094
+ };
21095
+
21003
21096
  var _templateObject$3, _templateObject2$3, _templateObject3$2, _templateObject4$2;
21004
21097
  var Avatar = function Avatar(_ref) {
21005
21098
  var image = _ref.image,
@@ -21016,6 +21109,9 @@ var Avatar = function Avatar(_ref) {
21016
21109
  var theme = useSelector(themeSelector);
21017
21110
  var _useColor = useColors(),
21018
21111
  iconInactive = _useColor[THEME_COLORS.ICON_INACTIVE];
21112
+ var _useState = React.useState(image || null),
21113
+ resolvedImageSrc = _useState[0],
21114
+ setResolvedImageSrc = _useState[1];
21019
21115
  var isDeletedUserAvatar = !image && !name;
21020
21116
  var avatarText = '';
21021
21117
  if (!image && name) {
@@ -21032,11 +21128,68 @@ var Avatar = function Avatar(_ref) {
21032
21128
  avatarText = _firstCharOfFirstWord ? String.fromCodePoint(_firstCharOfFirstWord) : '';
21033
21129
  }
21034
21130
  }
21131
+ React.useEffect(function () {
21132
+ var isCancelled = false;
21133
+ if (!image) {
21134
+ setResolvedImageSrc(null);
21135
+ return;
21136
+ }
21137
+ var isHttpUrl = /^https?:\/\//i.test(image);
21138
+ if (!isHttpUrl) {
21139
+ setResolvedImageSrc(image);
21140
+ return;
21141
+ }
21142
+ getAttachmentUrlFromCache(image).then(function (cachedUrl) {
21143
+ try {
21144
+ if (isCancelled) return Promise.resolve();
21145
+ var _temp2 = function () {
21146
+ if (cachedUrl) {
21147
+ setResolvedImageSrc(cachedUrl);
21148
+ } else {
21149
+ var _temp = _catch(function () {
21150
+ return Promise.resolve(fetch(image, {
21151
+ credentials: 'same-origin'
21152
+ })).then(function (response) {
21153
+ setAttachmentToCache(image, response.clone());
21154
+ setResolvedImageSrc(image);
21155
+ });
21156
+ }, function () {
21157
+ setResolvedImageSrc(image);
21158
+ });
21159
+ if (_temp && _temp.then) return _temp.then(function () {});
21160
+ }
21161
+ }();
21162
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
21163
+ } catch (e) {
21164
+ return Promise.reject(e);
21165
+ }
21166
+ })["catch"](function () {
21167
+ try {
21168
+ if (isCancelled) return Promise.resolve();
21169
+ var _temp3 = _catch(function () {
21170
+ return Promise.resolve(fetch(image, {
21171
+ credentials: 'same-origin'
21172
+ })).then(function (response) {
21173
+ setAttachmentToCache(image, response.clone());
21174
+ setResolvedImageSrc(image);
21175
+ });
21176
+ }, function () {
21177
+ setResolvedImageSrc(image);
21178
+ });
21179
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
21180
+ } catch (e) {
21181
+ return Promise.reject(e);
21182
+ }
21183
+ });
21184
+ return function () {
21185
+ isCancelled = true;
21186
+ };
21187
+ }, [image]);
21035
21188
  return /*#__PURE__*/React__default.createElement(Container$1, {
21036
21189
  border: border,
21037
21190
  marginAuto: marginAuto,
21038
21191
  size: size,
21039
- isImage: !!(image || setDefaultAvatar),
21192
+ isImage: !!(resolvedImageSrc || setDefaultAvatar),
21040
21193
  avatarName: name,
21041
21194
  textSize: textSize,
21042
21195
  onClick: handleAvatarClick,
@@ -21050,7 +21203,7 @@ var Avatar = function Avatar(_ref) {
21050
21203
  }) : (/*#__PURE__*/React__default.createElement("span", null, avatarText)) : (/*#__PURE__*/React__default.createElement(AvatarImage, {
21051
21204
  draggable: false,
21052
21205
  showImage: true,
21053
- src: image,
21206
+ src: resolvedImageSrc || image,
21054
21207
  size: size,
21055
21208
  alt: ''
21056
21209
  })));
@@ -21164,7 +21317,10 @@ var Channel = function Channel(_ref3) {
21164
21317
  channelLastMessageTimeFontSize = _ref3.channelLastMessageTimeFontSize,
21165
21318
  channelLastMessageHeight = _ref3.channelLastMessageHeight,
21166
21319
  channelAvatarSize = _ref3.channelAvatarSize,
21167
- channelAvatarTextSize = _ref3.channelAvatarTextSize;
21320
+ channelAvatarTextSize = _ref3.channelAvatarTextSize,
21321
+ setSelectedChannel = _ref3.setSelectedChannel,
21322
+ getCustomLatestMessage = _ref3.getCustomLatestMessage,
21323
+ doNotShowMessageDeliveryTypes = _ref3.doNotShowMessageDeliveryTypes;
21168
21324
  var _useColor = useColors(),
21169
21325
  accentColor = _useColor[THEME_COLORS.ACCENT],
21170
21326
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -21202,13 +21358,6 @@ var Channel = function Channel(_ref3) {
21202
21358
  statusWidth = _useState3[0],
21203
21359
  setStatusWidth = _useState3[1];
21204
21360
  var avatarName = channel.subject || (isDirectChannel && directChannelUser ? directChannelUser.firstName || directChannelUser.id : isSelfChannel ? 'Me' : '');
21205
- var handleChangeActiveChannel = function handleChangeActiveChannel(chan) {
21206
- if (activeChannel.id !== chan.id) {
21207
- dispatch(sendTypingAC(false));
21208
- dispatch(clearMessagesAC());
21209
- dispatch(switchChannelActionAC(chan));
21210
- }
21211
- };
21212
21361
  var messageAuthorRef = React.useRef(null);
21213
21362
  var messageTimeAndStatusRef = React.useRef(null);
21214
21363
  useUpdatePresence(channel, true);
@@ -21293,6 +21442,43 @@ var Channel = function Channel(_ref3) {
21293
21442
  isDirectChannel: isDirectChannel
21294
21443
  });
21295
21444
  }, [typingOrRecording === null || typingOrRecording === void 0 ? void 0 : typingOrRecording.isTyping, typingOrRecording === null || typingOrRecording === void 0 ? void 0 : typingOrRecording.isRecording, draftMessageText, lastMessage, user, contactsMap, getFromContacts, lastMessageMetas, accentColor, typingOrRecording, channel, isDirectChannel]);
21445
+ var getCustomLatestMessageComponent = React.useCallback(function (_ref4) {
21446
+ var lastMessage = _ref4.lastMessage,
21447
+ typingOrRecording = _ref4.typingOrRecording,
21448
+ draftMessageText = _ref4.draftMessageText,
21449
+ textSecondary = _ref4.textSecondary,
21450
+ channel = _ref4.channel,
21451
+ channelLastMessageFontSize = _ref4.channelLastMessageFontSize,
21452
+ channelLastMessageHeight = _ref4.channelLastMessageHeight,
21453
+ isDirectChannel = _ref4.isDirectChannel,
21454
+ textPrimary = _ref4.textPrimary,
21455
+ messageAuthorRef = _ref4.messageAuthorRef,
21456
+ contactsMap = _ref4.contactsMap,
21457
+ getFromContacts = _ref4.getFromContacts,
21458
+ warningColor = _ref4.warningColor,
21459
+ user = _ref4.user,
21460
+ MessageText = _ref4.MessageText;
21461
+ return getCustomLatestMessage && getCustomLatestMessage({
21462
+ lastMessage: lastMessage,
21463
+ typingOrRecording: typingOrRecording,
21464
+ draftMessageText: draftMessageText,
21465
+ textSecondary: textSecondary,
21466
+ channel: channel,
21467
+ channelLastMessageFontSize: channelLastMessageFontSize,
21468
+ channelLastMessageHeight: channelLastMessageHeight,
21469
+ isDirectChannel: isDirectChannel,
21470
+ textPrimary: textPrimary,
21471
+ messageAuthorRef: messageAuthorRef,
21472
+ contactsMap: contactsMap,
21473
+ getFromContacts: getFromContacts,
21474
+ warningColor: warningColor,
21475
+ user: user,
21476
+ MessageText: MessageText
21477
+ });
21478
+ }, [getCustomLatestMessage, lastMessage, typingOrRecording, draftMessageText, textSecondary, channel, channelLastMessageFontSize, channelLastMessageHeight, isDirectChannel, textPrimary, messageAuthorRef, contactsMap, getFromContacts, warningColor, user, MessageText]);
21479
+ var isTypeValid = React.useCallback(function (type) {
21480
+ return !doNotShowMessageDeliveryTypes.includes(type);
21481
+ }, [doNotShowMessageDeliveryTypes]);
21296
21482
  return /*#__PURE__*/React__default.createElement(Container$2, {
21297
21483
  theme: theme,
21298
21484
  selectedChannel: channel.id === activeChannel.id,
@@ -21303,7 +21489,7 @@ var Channel = function Channel(_ref3) {
21303
21489
  selectedChannelBorderRadius: selectedChannelBorderRadius,
21304
21490
  channelsMargin: channelsMargin,
21305
21491
  onClick: function onClick() {
21306
- return handleChangeActiveChannel(channel);
21492
+ return setSelectedChannel(channel);
21307
21493
  },
21308
21494
  hoverBackground: channelHoverBackground || backgroundHovered
21309
21495
  }, showAvatar && (/*#__PURE__*/React__default.createElement(AvatarWrapper, null, /*#__PURE__*/React__default.createElement(Avatar, {
@@ -21329,7 +21515,23 @@ var Channel = function Channel(_ref3) {
21329
21515
  avatarSize: channelAvatarSize
21330
21516
  }, /*#__PURE__*/React__default.createElement("h3", null, channel.subject || (isDirectChannel && directChannelUser ? makeUsername(contactsMap && contactsMap[directChannelUser.id], directChannelUser, getFromContacts) : isSelfChannel ? 'Me' : '')), channel.muted && (/*#__PURE__*/React__default.createElement(MutedIcon, {
21331
21517
  color: notificationsIsMutedIconColor || iconInactive
21332
- }, notificationsIsMutedIcon || /*#__PURE__*/React__default.createElement(SvgUnmuteNotifications, null))), (lastMessage || typingOrRecording.items.length > 0 || draftMessageText) && (/*#__PURE__*/React__default.createElement(LastMessage, {
21518
+ }, notificationsIsMutedIcon || /*#__PURE__*/React__default.createElement(SvgUnmuteNotifications, null))), getCustomLatestMessage ? getCustomLatestMessageComponent({
21519
+ lastMessage: lastMessage,
21520
+ typingOrRecording: typingOrRecording,
21521
+ draftMessageText: draftMessageText,
21522
+ textSecondary: textSecondary,
21523
+ channel: channel,
21524
+ channelLastMessageFontSize: channelLastMessageFontSize || '14px',
21525
+ channelLastMessageHeight: channelLastMessageHeight || '20px',
21526
+ isDirectChannel: isDirectChannel,
21527
+ textPrimary: textPrimary,
21528
+ messageAuthorRef: messageAuthorRef,
21529
+ contactsMap: contactsMap || {},
21530
+ getFromContacts: getFromContacts,
21531
+ warningColor: warningColor,
21532
+ user: user,
21533
+ MessageText: MessageText
21534
+ }) : (lastMessage || typingOrRecording.items.length > 0 || draftMessageText) && (/*#__PURE__*/React__default.createElement(LastMessage, {
21333
21535
  color: textSecondary,
21334
21536
  markedAsUnread: !!(channel.unread || channel.newMessageCount && channel.newMessageCount > 0),
21335
21537
  unreadMentions: !!(channel.newMentionCount && channel.newMentionCount > 0),
@@ -21365,7 +21567,7 @@ var Channel = function Channel(_ref3) {
21365
21567
  }, MessageText)))), /*#__PURE__*/React__default.createElement(ChannelStatus, {
21366
21568
  color: iconInactive,
21367
21569
  ref: messageTimeAndStatusRef
21368
- }, lastMessage && lastMessage.state !== MESSAGE_STATUS.DELETE && (/*#__PURE__*/React__default.createElement(DeliveryIconCont, null, lastMessage && lastMessage.user && lastMessage.user.id === user.id && lastMessage.type !== 'system' && MessageStatusIcon({
21570
+ }, lastMessage && lastMessage.state !== MESSAGE_STATUS.DELETE && (/*#__PURE__*/React__default.createElement(DeliveryIconCont, null, lastMessage && lastMessage.user && lastMessage.user.id === user.id && isTypeValid(lastMessage.type) && MessageStatusIcon({
21369
21571
  messageStatus: lastMessage.deliveryStatus,
21370
21572
  messageStatusDisplayingType: 'ticks',
21371
21573
  readIconColor: accentColor,
@@ -21432,9 +21634,9 @@ var Container$2 = styled__default.div(_templateObject6$1 || (_templateObject6$1
21432
21634
  return props.channelsMargin || '0 8px';
21433
21635
  }, function (props) {
21434
21636
  return props.selectedChannelBorderRadius || '12px';
21435
- }, function (_ref4) {
21436
- var selectedChannel = _ref4.selectedChannel,
21437
- hoverBackground = _ref4.hoverBackground;
21637
+ }, function (_ref5) {
21638
+ var selectedChannel = _ref5.selectedChannel,
21639
+ hoverBackground = _ref5.hoverBackground;
21438
21640
  return !selectedChannel && "\n background-color: " + hoverBackground + ";\n ";
21439
21641
  }, UserStatus, function (props) {
21440
21642
  return props.selectedChannel ? props.selectedBackgroundColor : props.hoverBackground;
@@ -21449,9 +21651,9 @@ var DraftMessageText = styled__default.span(_templateObject8$1 || (_templateObje
21449
21651
  });
21450
21652
  var LastMessageAuthor = styled__default.div(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["\n max-width: 120px;\n font-weight: 500;\n color: ", ";\n\n ", "\n & > span {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n }\n"])), function (props) {
21451
21653
  return props.color;
21452
- }, function (_ref5) {
21453
- var typing = _ref5.typing,
21454
- recording = _ref5.recording;
21654
+ }, function (_ref6) {
21655
+ var typing = _ref6.typing,
21656
+ recording = _ref6.recording;
21455
21657
  return (typing || recording) && "\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: calc(100% - " + (typing ? 62 : 76) + "px);\n ";
21456
21658
  });
21457
21659
  var Points = styled__default.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
@@ -21508,7 +21710,7 @@ var MessageTextContainer = styled__default.div(_templateObject20$1 || (_template
21508
21710
 
21509
21711
  var _templateObject$5, _templateObject2$5;
21510
21712
  var SearchInputContainer = styled__default.div(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n max-width: ", ";\n box-sizing: border-box;\n padding: ", ";\n\n & ", " {\n ", ";\n }\n"])), function (props) {
21511
- return props.inline && 'calc(100% - 24px)';
21713
+ return props.width || props.inline && 'calc(100% - 24px)';
21512
21714
  }, function (props) {
21513
21715
  return !props.inline && '0 12px 16px';
21514
21716
  }, ClearTypedText, function (props) {
@@ -21535,14 +21737,16 @@ var ChannelSearch = function ChannelSearch(_ref) {
21535
21737
  borderRadius = _ref.borderRadius,
21536
21738
  searchInputBackgroundColor = _ref.searchInputBackgroundColor,
21537
21739
  searchInputTextColor = _ref.searchInputTextColor,
21538
- fontSize = _ref.fontSize;
21740
+ fontSize = _ref.fontSize,
21741
+ width = _ref.width;
21539
21742
  var _useColor = useColors(),
21540
21743
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
21541
21744
  surface1 = _useColor[THEME_COLORS.SURFACE_1],
21542
21745
  iconInactive = _useColor[THEME_COLORS.ICON_INACTIVE],
21543
21746
  footnoteColor = _useColor[THEME_COLORS.TEXT_FOOTNOTE];
21544
21747
  return /*#__PURE__*/React__default.createElement(SearchInputContainer, {
21545
- inline: inline
21748
+ inline: inline,
21749
+ width: width
21546
21750
  }, /*#__PURE__*/React__default.createElement(StyledSearchSvg, {
21547
21751
  left: !inline ? '22px' : '',
21548
21752
  color: iconInactive
@@ -23323,6 +23527,7 @@ var ChannelList = function ChannelList(_ref) {
23323
23527
  searchInputTextColor = _ref.searchInputTextColor,
23324
23528
  _ref$searchChannelsPo = _ref.searchChannelsPosition,
23325
23529
  searchChannelsPosition = _ref$searchChannelsPo === void 0 ? 'bottom' : _ref$searchChannelsPo,
23530
+ channelSearchWidth = _ref.channelSearchWidth,
23326
23531
  searchInputBorderRadius = _ref.searchInputBorderRadius,
23327
23532
  selectedChannelBorderRadius = _ref.selectedChannelBorderRadius,
23328
23533
  selectedChannelPaddings = _ref.selectedChannelPaddings,
@@ -23369,7 +23574,10 @@ var ChannelList = function ChannelList(_ref) {
23369
23574
  channelAvatarTextSize = _ref.channelAvatarTextSize,
23370
23575
  searchChannelInputFontSize = _ref.searchChannelInputFontSize,
23371
23576
  searchedChannelsTitleFontSize = _ref.searchedChannelsTitleFontSize,
23372
- searchChannelsPadding = _ref.searchChannelsPadding;
23577
+ searchChannelsPadding = _ref.searchChannelsPadding,
23578
+ getCustomLatestMessage = _ref.getCustomLatestMessage,
23579
+ _ref$doNotShowMessage = _ref.doNotShowMessageDeliveryTypes,
23580
+ doNotShowMessageDeliveryTypes = _ref$doNotShowMessage === void 0 ? ['system'] : _ref$doNotShowMessage;
23373
23581
  var _useColor = useColors(),
23374
23582
  background = _useColor[THEME_COLORS.BACKGROUND],
23375
23583
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -23437,11 +23645,6 @@ var ChannelList = function ChannelList(_ref) {
23437
23645
  handleLoadMoreChannels();
23438
23646
  }
23439
23647
  };
23440
- var handleChangeActiveChannel = function handleChangeActiveChannel(chan) {
23441
- if (activeChannel.id !== chan.id) {
23442
- dispatch(switchChannelActionAC(chan));
23443
- }
23444
- };
23445
23648
  var handleCrateChatWithContact = function handleCrateChatWithContact(contact) {
23446
23649
  if (contact) {
23447
23650
  var channelData = {
@@ -23597,6 +23800,13 @@ var ChannelList = function ChannelList(_ref) {
23597
23800
  setListWidthIsSet(false);
23598
23801
  }
23599
23802
  }, [channels]);
23803
+ var setSelectedChannel = function setSelectedChannel(channel) {
23804
+ if (activeChannel.id !== channel.id) {
23805
+ dispatch(sendTypingAC(false));
23806
+ dispatch(clearMessagesAC());
23807
+ dispatch(switchChannelActionAC(channel));
23808
+ }
23809
+ };
23600
23810
  return /*#__PURE__*/React__default.createElement(Container$7, {
23601
23811
  className: className,
23602
23812
  withCustomList: !!List,
@@ -23610,6 +23820,7 @@ var ChannelList = function ChannelList(_ref) {
23610
23820
  padding: searchChannelsPadding
23611
23821
  }, Profile, showSearch && searchChannelsPosition === 'inline' ? (/*#__PURE__*/React__default.createElement(ChannelSearch, {
23612
23822
  inline: true,
23823
+ width: channelSearchWidth,
23613
23824
  borderRadius: searchInputBorderRadius,
23614
23825
  searchValue: searchValue,
23615
23826
  handleSearchValueChange: handleSearchValueChange,
@@ -23631,6 +23842,7 @@ var ChannelList = function ChannelList(_ref) {
23631
23842
  })))), showSearch && searchChannelsPosition === 'bottom' && (/*#__PURE__*/React__default.createElement(ChannelSearch, {
23632
23843
  searchValue: searchValue,
23633
23844
  theme: theme,
23845
+ width: channelSearchWidth,
23634
23846
  borderRadius: searchInputBorderRadius,
23635
23847
  handleSearchValueChange: handleSearchValueChange,
23636
23848
  getMyChannels: getMyChannels,
@@ -23641,13 +23853,13 @@ var ChannelList = function ChannelList(_ref) {
23641
23853
  channels: channels,
23642
23854
  searchedChannels: searchedChannels,
23643
23855
  selectedChannel: activeChannel,
23644
- setSelectedChannel: handleChangeActiveChannel,
23856
+ setSelectedChannel: setSelectedChannel,
23645
23857
  loadMoreChannels: handleLoadMoreChannels,
23646
23858
  searchValue: searchValue
23647
23859
  }, !searchValue ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, channels.map(function (channel) {
23648
23860
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23649
23861
  channel: channel,
23650
- setSelectedChannel: handleChangeActiveChannel,
23862
+ setSelectedChannel: setSelectedChannel,
23651
23863
  key: channel.id
23652
23864
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23653
23865
  theme: theme,
@@ -23673,7 +23885,10 @@ var ChannelList = function ChannelList(_ref) {
23673
23885
  avatarBorderRadius: avatarBorderRadius,
23674
23886
  channel: channel,
23675
23887
  key: channel.id,
23676
- contactsMap: contactsMap
23888
+ contactsMap: contactsMap,
23889
+ setSelectedChannel: setSelectedChannel,
23890
+ getCustomLatestMessage: getCustomLatestMessage,
23891
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23677
23892
  }));
23678
23893
  }))) : channelsLoading === LOADING_STATE.LOADED && searchValue ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, searchedChannels !== null && searchedChannels !== void 0 && (_searchedChannels$cha = searchedChannels.chats_groups) !== null && _searchedChannels$cha !== void 0 && _searchedChannels$cha.length || searchedChannels !== null && searchedChannels !== void 0 && (_searchedChannels$cha2 = searchedChannels.channels) !== null && _searchedChannels$cha2 !== void 0 && _searchedChannels$cha2.length || searchedChannels !== null && searchedChannels !== void 0 && (_searchedChannels$con = searchedChannels.contacts) !== null && _searchedChannels$con !== void 0 && _searchedChannels$con.length ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, !!(searchedChannels.chats_groups && searchedChannels.chats_groups.length) && (/*#__PURE__*/React__default.createElement(DirectChannels, null, /*#__PURE__*/React__default.createElement(SearchedChannelsHeader, {
23679
23894
  color: textSecondary,
@@ -23681,7 +23896,7 @@ var ChannelList = function ChannelList(_ref) {
23681
23896
  }, "Chats & Groups"), searchedChannels.chats_groups.map(function (channel) {
23682
23897
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23683
23898
  channel: channel,
23684
- setSelectedChannel: handleChangeActiveChannel,
23899
+ setSelectedChannel: setSelectedChannel,
23685
23900
  key: channel.id
23686
23901
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23687
23902
  theme: theme,
@@ -23707,7 +23922,10 @@ var ChannelList = function ChannelList(_ref) {
23707
23922
  avatarBorderRadius: avatarBorderRadius,
23708
23923
  channel: channel,
23709
23924
  key: channel.id,
23710
- contactsMap: contactsMap
23925
+ contactsMap: contactsMap,
23926
+ setSelectedChannel: setSelectedChannel,
23927
+ getCustomLatestMessage: getCustomLatestMessage,
23928
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23711
23929
  }));
23712
23930
  }))), !!(searchedChannels.contacts && searchedChannels.contacts.length) && (/*#__PURE__*/React__default.createElement(GroupChannels, null, /*#__PURE__*/React__default.createElement(SearchedChannelsHeader, {
23713
23931
  color: textSecondary,
@@ -23716,7 +23934,7 @@ var ChannelList = function ChannelList(_ref) {
23716
23934
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23717
23935
  contact: contact,
23718
23936
  createChatWithContact: handleCrateChatWithContact,
23719
- setSelectedChannel: handleChangeActiveChannel,
23937
+ setSelectedChannel: setSelectedChannel,
23720
23938
  key: contact.id
23721
23939
  })) : (/*#__PURE__*/React__default.createElement(ContactItem, {
23722
23940
  theme: theme,
@@ -23747,7 +23965,7 @@ var ChannelList = function ChannelList(_ref) {
23747
23965
  }, "Channels"), searchedChannels.channels.map(function (channel) {
23748
23966
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23749
23967
  channel: channel,
23750
- setSelectedChannel: handleChangeActiveChannel,
23968
+ setSelectedChannel: setSelectedChannel,
23751
23969
  key: channel.id
23752
23970
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23753
23971
  theme: theme,
@@ -23773,7 +23991,10 @@ var ChannelList = function ChannelList(_ref) {
23773
23991
  avatarBorderRadius: avatarBorderRadius,
23774
23992
  channel: channel,
23775
23993
  key: channel.id,
23776
- contactsMap: contactsMap
23994
+ contactsMap: contactsMap,
23995
+ setSelectedChannel: setSelectedChannel,
23996
+ getCustomLatestMessage: getCustomLatestMessage,
23997
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23777
23998
  }));
23778
23999
  }))))) : (/*#__PURE__*/React__default.createElement(NoData, {
23779
24000
  color: textSecondary,
@@ -23794,7 +24015,7 @@ var ChannelList = function ChannelList(_ref) {
23794
24015
  }, channels.map(function (channel) {
23795
24016
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23796
24017
  channel: channel,
23797
- setSelectedChannel: handleChangeActiveChannel,
24018
+ setSelectedChannel: setSelectedChannel,
23798
24019
  key: channel.id
23799
24020
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23800
24021
  theme: theme,
@@ -23820,7 +24041,10 @@ var ChannelList = function ChannelList(_ref) {
23820
24041
  avatarBorderRadius: avatarBorderRadius,
23821
24042
  channel: channel,
23822
24043
  key: channel.id,
23823
- contactsMap: contactsMap
24044
+ contactsMap: contactsMap,
24045
+ setSelectedChannel: setSelectedChannel,
24046
+ getCustomLatestMessage: getCustomLatestMessage,
24047
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23824
24048
  }));
23825
24049
  }))), !!searchValue && (channelsLoading === LOADING_STATE.LOADED ? !((_searchedChannels$cha4 = searchedChannels.chats_groups) !== null && _searchedChannels$cha4 !== void 0 && _searchedChannels$cha4.length) && !((_searchedChannels$cha5 = searchedChannels.chats_groups) !== null && _searchedChannels$cha5 !== void 0 && _searchedChannels$cha5.length) && !((_searchedChannels$cha6 = searchedChannels.channels) !== null && _searchedChannels$cha6 !== void 0 && _searchedChannels$cha6.length) ? (/*#__PURE__*/React__default.createElement(NoData, {
23826
24050
  color: textSecondary,
@@ -23831,7 +24055,7 @@ var ChannelList = function ChannelList(_ref) {
23831
24055
  }, "Chats & Groups"), searchedChannels.chats_groups.map(function (channel) {
23832
24056
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23833
24057
  channel: channel,
23834
- setSelectedChannel: handleChangeActiveChannel,
24058
+ setSelectedChannel: setSelectedChannel,
23835
24059
  key: channel.id
23836
24060
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23837
24061
  theme: theme,
@@ -23857,7 +24081,10 @@ var ChannelList = function ChannelList(_ref) {
23857
24081
  avatarBorderRadius: avatarBorderRadius,
23858
24082
  channel: channel,
23859
24083
  contactsMap: contactsMap,
23860
- key: channel.id
24084
+ key: channel.id,
24085
+ setSelectedChannel: setSelectedChannel,
24086
+ getCustomLatestMessage: getCustomLatestMessage,
24087
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23861
24088
  }));
23862
24089
  }))), !!searchedChannels.channels.length && (/*#__PURE__*/React__default.createElement(GroupChannels, null, /*#__PURE__*/React__default.createElement(SearchedChannelsHeader, {
23863
24090
  color: textSecondary,
@@ -23865,7 +24092,7 @@ var ChannelList = function ChannelList(_ref) {
23865
24092
  }, "Channels"), searchedChannels.channels.map(function (channel) {
23866
24093
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23867
24094
  channel: channel,
23868
- setSelectedChannel: handleChangeActiveChannel,
24095
+ setSelectedChannel: setSelectedChannel,
23869
24096
  key: channel.id
23870
24097
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23871
24098
  theme: theme,
@@ -23891,7 +24118,10 @@ var ChannelList = function ChannelList(_ref) {
23891
24118
  avatarBorderRadius: avatarBorderRadius,
23892
24119
  channel: channel,
23893
24120
  key: channel.id,
23894
- contactsMap: contactsMap
24121
+ contactsMap: contactsMap,
24122
+ setSelectedChannel: setSelectedChannel,
24123
+ getCustomLatestMessage: getCustomLatestMessage,
24124
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23895
24125
  }));
23896
24126
  }))))) : (/*#__PURE__*/React__default.createElement(LoadingWrapper, null, /*#__PURE__*/React__default.createElement(UploadingIcon, {
23897
24127
  color: textFootnote
@@ -23930,7 +24160,7 @@ var NoData = styled__default.div(_templateObject8$4 || (_templateObject8$4 = _ta
23930
24160
  return props.color;
23931
24161
  });
23932
24162
  var LoadingWrapper = styled__default.div(_templateObject9$4 || (_templateObject9$4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n left: calc(50% - 20px);\n top: calc(50% - 20px);\n"])));
23933
- var ChannelListHeader = styled__default.div(_templateObject0$3 || (_templateObject0$3 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n max-width: ", ";\n padding: ", ";\n padding-left: 22px;\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
24163
+ var ChannelListHeader = styled__default.div(_templateObject0$3 || (_templateObject0$3 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n max-width: ", ";\n padding: ", ";\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
23934
24164
  return props.maxWidth ? props.maxWidth + "px" : 'inherit';
23935
24165
  }, function (props) {
23936
24166
  return props.padding || '12px';
@@ -24544,50 +24774,6 @@ function SvgDeleteChannel(props) {
24544
24774
  })));
24545
24775
  }
24546
24776
 
24547
- var ATTACHMENTS_CACHE = 'attachments-cache';
24548
- var isBrowser = typeof window !== 'undefined';
24549
- var cacheAvailable;
24550
- if (isBrowser) {
24551
- cacheAvailable = 'caches' in window;
24552
- } else {
24553
- cacheAvailable = 'caches' in global;
24554
- }
24555
- var setAttachmentToCache = function setAttachmentToCache(attachmentUrl, attachmentResponse) {
24556
- if (cacheAvailable) {
24557
- caches.open(ATTACHMENTS_CACHE).then(function (cache) {
24558
- try {
24559
- cache.put(attachmentUrl, attachmentResponse).then(function () {
24560
- log.info('Cache success');
24561
- })["catch"](function (e) {
24562
- log.info('Error on cache attachment ... ', e);
24563
- caches["delete"](attachmentUrl);
24564
- });
24565
- return Promise.resolve();
24566
- } catch (e) {
24567
- return Promise.reject(e);
24568
- }
24569
- });
24570
- }
24571
- };
24572
- var getAttachmentUrlFromCache = function getAttachmentUrlFromCache(attachmentUrl) {
24573
- try {
24574
- if (!cacheAvailable) {
24575
- log.error('Cache is not available');
24576
- return Promise.reject(new Error('Cache not available'));
24577
- }
24578
- return Promise.resolve(caches.match(attachmentUrl)).then(function (response) {
24579
- if (response) {
24580
- return Promise.resolve(response.blob()).then(URL.createObjectURL);
24581
- } else {
24582
- log.info('The image or video is not cached', attachmentUrl);
24583
- return false;
24584
- }
24585
- });
24586
- } catch (e) {
24587
- return Promise.reject(e);
24588
- }
24589
- };
24590
-
24591
24777
  var _path$A;
24592
24778
  function _extends$B() {
24593
24779
  return _extends$B = Object.assign ? Object.assign.bind() : function (n) {
@@ -26051,6 +26237,7 @@ var Message = function Message(_ref) {
26051
26237
  var _useColor = useColors(),
26052
26238
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
26053
26239
  overlayBackground = _useColor[THEME_COLORS.OVERLAY_BACKGROUND];
26240
+ var scrollToNewMessage = useSelector(scrollToNewMessageSelector);
26054
26241
  var dispatch = useDispatch();
26055
26242
  var ChatClient = getClient();
26056
26243
  var user = ChatClient.user;
@@ -26069,7 +26256,19 @@ var Message = function Message(_ref) {
26069
26256
  };
26070
26257
  React.useEffect(function () {
26071
26258
  if (isVisible) {
26259
+ var _channel$lastMessage;
26072
26260
  handleSendReadMarker();
26261
+ if (!channel.isLinkedChannel) {
26262
+ setMessageToVisibleMessagesMap(message);
26263
+ }
26264
+ 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))) {
26265
+ dispatch(scrollToNewMessageAC(false, false, false));
26266
+ dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
26267
+ }
26268
+ } else {
26269
+ if (!channel.isLinkedChannel) {
26270
+ removeMessageFromVisibleMessagesMap(message);
26271
+ }
26073
26272
  }
26074
26273
  }, [isVisible]);
26075
26274
  useDidUpdate(function () {
@@ -31185,7 +31384,7 @@ var validateUrl = function validateUrl(url) {
31185
31384
  }
31186
31385
  };
31187
31386
  var OGMetadata = function OGMetadata(_ref) {
31188
- var _metadata$og4, _metadata$og4$image, _metadata$og4$image$, _metadata$og5, _metadata$og5$image, _metadata$og5$image$, _metadata$og6, _metadata$og7, _metadata$og7$favicon, _metadata$og8, _metadata$og8$favicon, _metadata$og9, _metadata$og0, _metadata$og1;
31387
+ var _metadata$og6, _metadata$og6$image, _metadata$og6$image$, _metadata$og7, _metadata$og7$image, _metadata$og7$image$, _metadata$og8, _metadata$og8$image, _metadata$og8$image$, _metadata$og9, _metadata$og0, _metadata$og0$favicon, _metadata$og1, _metadata$og1$favicon, _metadata$og10, _metadata$og11, _metadata$og12;
31189
31388
  var attachments = _ref.attachments,
31190
31389
  state = _ref.state;
31191
31390
  var _useState = React.useState(null),
@@ -31197,6 +31396,15 @@ var OGMetadata = function OGMetadata(_ref) {
31197
31396
  var _useState3 = React.useState(true),
31198
31397
  faviconLoadError = _useState3[0],
31199
31398
  setFaviconLoadError = _useState3[1];
31399
+ var _useState4 = React.useState(false),
31400
+ imageLoaded = _useState4[0],
31401
+ setImageLoaded = _useState4[1];
31402
+ var _useState5 = React.useState(0),
31403
+ imageWidth = _useState5[0],
31404
+ setImageWidth = _useState5[1];
31405
+ var _useState6 = React.useState(0),
31406
+ imageHeight = _useState6[0],
31407
+ setImageHeight = _useState6[1];
31200
31408
  var attachment = React.useMemo(function () {
31201
31409
  return attachments.find(function (attachment) {
31202
31410
  return attachment.type === attachmentTypes.link;
@@ -31211,7 +31419,7 @@ var OGMetadata = function OGMetadata(_ref) {
31211
31419
  var queryBuilder = new client.MessageLinkOGQueryBuilder(url);
31212
31420
  return Promise.resolve(queryBuilder.build()).then(function (query) {
31213
31421
  return Promise.resolve(query.loadOGData()).then(function (metadata) {
31214
- return Promise.resolve(storeMetadata(url.replace('https://', '').replace('http://', ''), metadata)).then(function () {
31422
+ return Promise.resolve(storeMetadata(url, metadata)).then(function () {
31215
31423
  setMetadata(metadata);
31216
31424
  });
31217
31425
  });
@@ -31234,7 +31442,7 @@ var OGMetadata = function OGMetadata(_ref) {
31234
31442
  if (attachment !== null && attachment !== void 0 && attachment.id && attachment !== null && attachment !== void 0 && attachment.url) {
31235
31443
  var url = attachment === null || attachment === void 0 ? void 0 : attachment.url;
31236
31444
  if (url) {
31237
- getMetadata(url.replace('https://', '').replace('http://', '')).then(function (cachedMetadata) {
31445
+ getMetadata(url).then(function (cachedMetadata) {
31238
31446
  try {
31239
31447
  if (cachedMetadata) {
31240
31448
  setMetadata(cachedMetadata);
@@ -31263,6 +31471,29 @@ var OGMetadata = function OGMetadata(_ref) {
31263
31471
  var _metadata$og, _metadata$og2, _metadata$og2$image, _metadata$og2$image$, _metadata$og3;
31264
31472
  return state !== 'deleted' && (metadata === null || metadata === void 0 ? void 0 : (_metadata$og = metadata.og) === null || _metadata$og === void 0 ? void 0 : _metadata$og.title) && (metadata === null || metadata === void 0 ? void 0 : (_metadata$og2 = metadata.og) === null || _metadata$og2 === void 0 ? void 0 : (_metadata$og2$image = _metadata$og2.image) === null || _metadata$og2$image === void 0 ? void 0 : (_metadata$og2$image$ = _metadata$og2$image[0]) === null || _metadata$og2$image$ === void 0 ? void 0 : _metadata$og2$image$.url) && (metadata === null || metadata === void 0 ? void 0 : (_metadata$og3 = metadata.og) === null || _metadata$og3 === void 0 ? void 0 : _metadata$og3.description) && metadata;
31265
31473
  }, [state, metadata]);
31474
+ React.useEffect(function () {
31475
+ var _metadata$og4, _metadata$og4$image, _metadata$og4$image$;
31476
+ if (metadata !== null && metadata !== void 0 && (_metadata$og4 = metadata.og) !== null && _metadata$og4 !== void 0 && (_metadata$og4$image = _metadata$og4.image) !== null && _metadata$og4$image !== void 0 && (_metadata$og4$image$ = _metadata$og4$image[0]) !== null && _metadata$og4$image$ !== void 0 && _metadata$og4$image$.url) {
31477
+ var _metadata$og5, _metadata$og5$image, _metadata$og5$image$;
31478
+ var image = new Image();
31479
+ image.src = metadata === null || metadata === void 0 ? void 0 : (_metadata$og5 = metadata.og) === null || _metadata$og5 === void 0 ? void 0 : (_metadata$og5$image = _metadata$og5.image) === null || _metadata$og5$image === void 0 ? void 0 : (_metadata$og5$image$ = _metadata$og5$image[0]) === null || _metadata$og5$image$ === void 0 ? void 0 : _metadata$og5$image$.url;
31480
+ image.onload = function () {
31481
+ var imageWidth = image.width;
31482
+ var imageHeight = image.height;
31483
+ setImageWidth(imageWidth);
31484
+ setImageHeight(imageHeight);
31485
+ setImageLoadError(false);
31486
+ setImageLoaded(true);
31487
+ };
31488
+ image.onerror = function () {
31489
+ setImageLoadError(true);
31490
+ setImageLoaded(true);
31491
+ };
31492
+ }
31493
+ }, [metadata === null || metadata === void 0 ? void 0 : (_metadata$og6 = metadata.og) === null || _metadata$og6 === void 0 ? void 0 : (_metadata$og6$image = _metadata$og6.image) === null || _metadata$og6$image === void 0 ? void 0 : (_metadata$og6$image$ = _metadata$og6$image[0]) === null || _metadata$og6$image$ === void 0 ? void 0 : _metadata$og6$image$.url]);
31494
+ var calculatedImageHeight = React.useMemo(function () {
31495
+ return imageHeight / (imageWidth / 400);
31496
+ }, [imageWidth, imageHeight]);
31266
31497
  return /*#__PURE__*/React__default.createElement(OGMetadataContainer, {
31267
31498
  showOGMetadata: !!showOGMetadata
31268
31499
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -31270,43 +31501,69 @@ var OGMetadata = function OGMetadata(_ref) {
31270
31501
  window.open(attachment === null || attachment === void 0 ? void 0 : attachment.url, '_blank');
31271
31502
  }
31272
31503
  }, /*#__PURE__*/React__default.createElement(ImageContainer, {
31273
- showOGMetadata: !!showOGMetadata && !imageLoadError
31274
- }, metadata !== null && metadata !== void 0 && (_metadata$og4 = metadata.og) !== null && _metadata$og4 !== void 0 && (_metadata$og4$image = _metadata$og4.image) !== null && _metadata$og4$image !== void 0 && (_metadata$og4$image$ = _metadata$og4$image[0]) !== null && _metadata$og4$image$ !== void 0 && _metadata$og4$image$.url ? (/*#__PURE__*/React__default.createElement(Img, {
31275
- src: metadata === null || metadata === void 0 ? void 0 : (_metadata$og5 = metadata.og) === null || _metadata$og5 === void 0 ? void 0 : (_metadata$og5$image = _metadata$og5.image) === null || _metadata$og5$image === void 0 ? void 0 : (_metadata$og5$image$ = _metadata$og5$image[0]) === null || _metadata$og5$image$ === void 0 ? void 0 : _metadata$og5$image$.url,
31504
+ showOGMetadata: !!showOGMetadata && !imageLoadError && imageLoaded,
31505
+ width: 400,
31506
+ height: calculatedImageHeight
31507
+ }, metadata !== null && metadata !== void 0 && (_metadata$og7 = metadata.og) !== null && _metadata$og7 !== void 0 && (_metadata$og7$image = _metadata$og7.image) !== null && _metadata$og7$image !== void 0 && (_metadata$og7$image$ = _metadata$og7$image[0]) !== null && _metadata$og7$image$ !== void 0 && _metadata$og7$image$.url && !imageLoadError ? (/*#__PURE__*/React__default.createElement(Img, {
31508
+ src: metadata === null || metadata === void 0 ? void 0 : (_metadata$og8 = metadata.og) === null || _metadata$og8 === void 0 ? void 0 : (_metadata$og8$image = _metadata$og8.image) === null || _metadata$og8$image === void 0 ? void 0 : (_metadata$og8$image$ = _metadata$og8$image[0]) === null || _metadata$og8$image$ === void 0 ? void 0 : _metadata$og8$image$.url,
31276
31509
  alt: 'OG metadata image',
31277
- onLoad: function onLoad() {
31278
- return setImageLoadError(false);
31279
- },
31280
- onError: function onError() {
31281
- return setImageLoadError(true);
31282
- }
31283
- })) : null), showOGMetadata ? (/*#__PURE__*/React__default.createElement(OGText, null, /*#__PURE__*/React__default.createElement(Url, null, ogUrl), metadata !== null && metadata !== void 0 && (_metadata$og6 = metadata.og) !== null && _metadata$og6 !== void 0 && _metadata$og6.title ? (/*#__PURE__*/React__default.createElement(Title, null, metadata !== null && metadata !== void 0 && (_metadata$og7 = metadata.og) !== null && _metadata$og7 !== void 0 && (_metadata$og7$favicon = _metadata$og7.favicon) !== null && _metadata$og7$favicon !== void 0 && _metadata$og7$favicon.url && !faviconLoadError ? (/*#__PURE__*/React__default.createElement(Favicon, {
31284
- src: metadata === null || metadata === void 0 ? void 0 : (_metadata$og8 = metadata.og) === null || _metadata$og8 === void 0 ? void 0 : (_metadata$og8$favicon = _metadata$og8.favicon) === null || _metadata$og8$favicon === void 0 ? void 0 : _metadata$og8$favicon.url,
31510
+ width: 400,
31511
+ height: calculatedImageHeight
31512
+ })) : null), showOGMetadata && imageLoaded ? (/*#__PURE__*/React__default.createElement(OGText, null, /*#__PURE__*/React__default.createElement(Url, {
31513
+ maxWidth: 400
31514
+ }, ogUrl), metadata !== null && metadata !== void 0 && (_metadata$og9 = metadata.og) !== null && _metadata$og9 !== void 0 && _metadata$og9.title ? (/*#__PURE__*/React__default.createElement(Title, {
31515
+ maxWidth: 400
31516
+ }, metadata !== null && metadata !== void 0 && (_metadata$og0 = metadata.og) !== null && _metadata$og0 !== void 0 && (_metadata$og0$favicon = _metadata$og0.favicon) !== null && _metadata$og0$favicon !== void 0 && _metadata$og0$favicon.url && !faviconLoadError ? (/*#__PURE__*/React__default.createElement(Favicon, {
31517
+ src: metadata === null || metadata === void 0 ? void 0 : (_metadata$og1 = metadata.og) === null || _metadata$og1 === void 0 ? void 0 : (_metadata$og1$favicon = _metadata$og1.favicon) === null || _metadata$og1$favicon === void 0 ? void 0 : _metadata$og1$favicon.url,
31285
31518
  onLoad: function onLoad() {
31286
31519
  return setFaviconLoadError(false);
31287
31520
  },
31288
31521
  onError: function onError() {
31289
31522
  return setFaviconLoadError(true);
31290
31523
  }
31291
- })) : null, /*#__PURE__*/React__default.createElement("span", null, metadata === null || metadata === void 0 ? void 0 : (_metadata$og9 = metadata.og) === null || _metadata$og9 === void 0 ? void 0 : _metadata$og9.title))) : null, metadata !== null && metadata !== void 0 && (_metadata$og0 = metadata.og) !== null && _metadata$og0 !== void 0 && _metadata$og0.description ? /*#__PURE__*/React__default.createElement(Desc, null, metadata === null || metadata === void 0 ? void 0 : (_metadata$og1 = metadata.og) === null || _metadata$og1 === void 0 ? void 0 : _metadata$og1.description) : null)) : null));
31524
+ })) : null, /*#__PURE__*/React__default.createElement("span", null, metadata === null || metadata === void 0 ? void 0 : (_metadata$og10 = metadata.og) === null || _metadata$og10 === void 0 ? void 0 : _metadata$og10.title))) : null, metadata !== null && metadata !== void 0 && (_metadata$og11 = metadata.og) !== null && _metadata$og11 !== void 0 && _metadata$og11.description ? /*#__PURE__*/React__default.createElement(Desc, {
31525
+ maxWidth: 400
31526
+ }, metadata === null || metadata === void 0 ? void 0 : (_metadata$og12 = metadata.og) === null || _metadata$og12 === void 0 ? void 0 : _metadata$og12.description) : null)) : null));
31292
31527
  };
31293
31528
  var OGMetadataContainer = styled__default.div(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["\n min-width: inherit;\n max-width: inherit;\n display: grid;\n grid-template-columns: 1fr;\n background-color: rgba(0, 0, 0, 0.034);\n border-radius: 6px;\n margin-bottom: 0.4rem;\n margin: 0 auto;\n margin-bottom: ", ";\n &:hover {\n background-color: rgba(0, 0, 0, 0.1);\n cursor: pointer;\n }\n"])), function (_ref2) {
31294
31529
  var showOGMetadata = _ref2.showOGMetadata;
31295
31530
  return showOGMetadata ? '0.8rem' : '0';
31296
31531
  });
31297
- var ImageContainer = styled__default.div(_templateObject2$v || (_templateObject2$v = _taggedTemplateLiteralLoose(["\n max-width: 100%;\n max-height: 200px;\n width: 100%;\n margin: 0 auto;\n padding: ", ";\n height: ", ";\n transition: height 0.2s ease;\n"])), function (_ref3) {
31298
- var showOGMetadata = _ref3.showOGMetadata;
31299
- return showOGMetadata ? '0.3rem' : '0';
31532
+ var ImageContainer = styled__default.div(_templateObject2$v || (_templateObject2$v = _taggedTemplateLiteralLoose(["\n ", "\n\n ", "\n\n opacity: ", ";\n overflow: hidden;\n margin: 0 auto;\n padding: ", ";\n transition: height 0.2s ease;\n"])), function (_ref3) {
31533
+ var width = _ref3.width;
31534
+ return width ? "\n max-width: " + (width + "px") + ";\n " : "\n max-width: 100%;\n width: 100%;\n ";
31300
31535
  }, function (_ref4) {
31301
- var showOGMetadata = _ref4.showOGMetadata;
31302
- return showOGMetadata ? '200px' : '0';
31536
+ var height = _ref4.height,
31537
+ showOGMetadata = _ref4.showOGMetadata;
31538
+ return height ? "\n max-height: " + (height + "px") + ";\n height: " + (showOGMetadata ? height + "px" : '0') + ";\n " : "\n max-height: 200px;\n height: " + (showOGMetadata ? '200px' : '0') + ";\n ";
31539
+ }, function (_ref5) {
31540
+ var showOGMetadata = _ref5.showOGMetadata;
31541
+ return showOGMetadata ? 1 : 0;
31542
+ }, function (_ref6) {
31543
+ var showOGMetadata = _ref6.showOGMetadata;
31544
+ return showOGMetadata ? '0.3rem' : '0';
31545
+ });
31546
+ var OGText = styled__default.div(_templateObject3$p || (_templateObject3$p = _taggedTemplateLiteralLoose(["\n padding: 0.5rem;\n margin: 0;\n transition: all 0.2s ease;\n"])));
31547
+ var Url = styled__default.p(_templateObject4$l || (_templateObject4$l = _taggedTemplateLiteralLoose(["\n font-weight: normal;\n font-size: 13px;\n padding: 0;\n margin: 0 0 12px 0;\n color: gray;\n ", "\n transition: all 0.2s ease;\n"])), function (_ref7) {
31548
+ var maxWidth = _ref7.maxWidth;
31549
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31550
+ });
31551
+ var Title = styled__default.p(_templateObject5$h || (_templateObject5$h = _taggedTemplateLiteralLoose(["\n font-weight: bold;\n font-size: 13px;\n padding: 0;\n display: flex;\n align-items: center;\n ", "\n transition: all 0.2s ease;\n"])), function (_ref8) {
31552
+ var maxWidth = _ref8.maxWidth;
31553
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31554
+ });
31555
+ var Desc = styled__default.p(_templateObject6$f || (_templateObject6$f = _taggedTemplateLiteralLoose(["\n font-weight: normal;\n font-size: 13px;\n padding: 0;\n ", "\n transition: all 0.2s ease;\n"])), function (_ref9) {
31556
+ var maxWidth = _ref9.maxWidth;
31557
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31558
+ });
31559
+ var Img = styled__default.img(_templateObject7$d || (_templateObject7$d = _taggedTemplateLiteralLoose(["\n ", "\n ", "\n object-fit: cover;\n transition: height 0.2s ease;\n"])), function (_ref0) {
31560
+ var width = _ref0.width;
31561
+ return width && "\n max-width: " + (width + "px") + ";\n min-width: " + (width + "px") + ";\n width: " + (width + "px") + ";\n ";
31562
+ }, function (_ref1) {
31563
+ var height = _ref1.height;
31564
+ return height && "\n max-height: " + (height + "px") + ";\n min-height: " + (height + "px") + ";\n height: " + (height + "px") + ";\n ";
31303
31565
  });
31304
- var OGText = styled__default.div(_templateObject3$p || (_templateObject3$p = _taggedTemplateLiteralLoose(["\n width: 80%;\n padding: 0.5rem;\n margin: 0;\n"])));
31305
- var Url = styled__default.p(_templateObject4$l || (_templateObject4$l = _taggedTemplateLiteralLoose(["\n font-weight: normal;\n font-size: 13px;\n padding: 0;\n margin: 0 0 12px 0;\n color: gray;\n"])));
31306
- var Title = styled__default.p(_templateObject5$h || (_templateObject5$h = _taggedTemplateLiteralLoose(["\n font-weight: bold;\n font-size: 13px;\n padding: 0;\n display: flex;\n align-items: center;\n"])));
31307
- var Desc = styled__default.p(_templateObject6$f || (_templateObject6$f = _taggedTemplateLiteralLoose(["\n font-weight: normal;\n font-size: 13px;\n padding: 0;\n"])));
31308
- var Img = styled__default.img(_templateObject7$d || (_templateObject7$d = _taggedTemplateLiteralLoose(["\n max-width: 100%;\n max-height: 100%;\n width: 100%;\n height: 200px;\n object-fit: cover;\n transition: height 0.2s ease;\n"])));
31309
- var Favicon = styled__default.img(_templateObject8$c || (_templateObject8$c = _taggedTemplateLiteralLoose(["\n width: 24px;\n height: 24px;\n object-fit: contain;\n margin-right: 4px;\n"])));
31566
+ var Favicon = styled__default.img(_templateObject8$c || (_templateObject8$c = _taggedTemplateLiteralLoose(["\n transition: all 0.2s ease;\n width: 24px;\n height: 24px;\n object-fit: contain;\n margin-right: 4px;\n"])));
31310
31567
 
31311
31568
  var _templateObject$B, _templateObject2$w, _templateObject3$q, _templateObject4$m, _templateObject5$i;
31312
31569
  var MessageBody = function MessageBody(_ref) {
@@ -32646,14 +32903,6 @@ var HiddenMessageProperty;
32646
32903
  })(HiddenMessageProperty || (HiddenMessageProperty = {}));
32647
32904
 
32648
32905
  var _templateObject$D, _templateObject2$y, _templateObject3$s, _templateObject4$o, _templateObject5$k, _templateObject6$h, _templateObject7$f, _templateObject8$e, _templateObject9$c, _templateObject0$b, _templateObject1$8;
32649
- var loadFromServer = false;
32650
- var loadDirection = '';
32651
- var nextDisable = false;
32652
- var prevDisable = false;
32653
- var scrollToBottom = false;
32654
- var shouldLoadMessages;
32655
- var loading = false;
32656
- var messagesIndexMap = {};
32657
32906
  var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
32658
32907
  var lastIndex = _ref.lastIndex,
32659
32908
  currentMessageDate = _ref.currentMessageDate,
@@ -32863,6 +33112,7 @@ var MessageList = function MessageList(_ref2) {
32863
33112
  var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, reactRedux.shallowEqual);
32864
33113
  var scrollToRepliedMessage = useSelector(scrollToMessageSelector, reactRedux.shallowEqual);
32865
33114
  var scrollToMessageHighlight = useSelector(scrollToMessageHighlightSelector, reactRedux.shallowEqual);
33115
+ var scrollToMessageBehavior = useSelector(scrollToMessageBehaviorSelector, reactRedux.shallowEqual);
32866
33116
  var browserTabIsActive = useSelector(browserTabIsActiveSelector, reactRedux.shallowEqual);
32867
33117
  var hasNextMessages = useSelector(messagesHasNextSelector, reactRedux.shallowEqual);
32868
33118
  var hasPrevMessages = useSelector(messagesHasPrevSelector, reactRedux.shallowEqual);
@@ -32903,35 +33153,40 @@ var MessageList = function MessageList(_ref2) {
32903
33153
  setShouldPreserveScroll = _useState0[1];
32904
33154
  var messageForReply = {};
32905
33155
  var attachmentsSelected = false;
32906
- var messageTopDateRef = React.useRef(null);
33156
+ var _useState1 = React.useState(''),
33157
+ topDateLabel = _useState1[0],
33158
+ setTopDateLabel = _useState1[1];
32907
33159
  var scrollRef = React.useRef(null);
33160
+ var loadFromServerRef = React.useRef(false);
33161
+ var loadDirectionRef = React.useRef('');
33162
+ var nextDisableRef = React.useRef(false);
33163
+ var prevDisableRef = React.useRef(false);
33164
+ var scrollToBottomRef = React.useRef(false);
33165
+ var shouldLoadMessagesRef = React.useRef('');
33166
+ var loadingRef = React.useRef(false);
33167
+ var messagesIndexMapRef = React.useRef({});
33168
+ var scrollRafRef = React.useRef(null);
33169
+ var loadingMessagesTimeoutRef = React.useRef(null);
32908
33170
  var renderTopDate = function renderTopDate() {
32909
- var dateLabels = document.querySelectorAll('.divider');
32910
- var messageTopDate = messageTopDateRef.current;
33171
+ var container = scrollRef.current;
33172
+ if (!container) return;
33173
+ var dateLabels = container.querySelectorAll('.divider');
32911
33174
  var text = '';
32912
33175
  for (var i = dateLabels.length - 1; i >= 0; i--) {
32913
- var _dateLabel$firstChild;
32914
33176
  var dateLabel = dateLabels[i];
32915
- var span = dateLabel === null || dateLabel === void 0 ? void 0 : (_dateLabel$firstChild = dateLabel.firstChild) === null || _dateLabel$firstChild === void 0 ? void 0 : _dateLabel$firstChild.firstChild;
32916
- if (!text && scrollRef.current.scrollTop > dateLabel.offsetTop) {
32917
- text = span && span.innerText;
32918
- span.style.display = 'none';
32919
- } else {
32920
- span.style.display = 'block';
33177
+ if (!text && container.scrollTop > dateLabel.offsetTop) {
33178
+ var span = (dateLabel === null || dateLabel === void 0 ? void 0 : dateLabel.firstChild) && dateLabel.firstChild.firstChild;
33179
+ text = span ? span.innerText || '' : '';
32921
33180
  }
32922
33181
  }
32923
- if (text) {
32924
- messageTopDate.innerText = text;
32925
- messageTopDate.style.display = 'inline';
32926
- } else {
32927
- messageTopDate.style.display = 'none';
32928
- }
33182
+ setTopDateLabel(text);
32929
33183
  };
32930
- var handleMessagesListScroll = React.useCallback(function (event) {
33184
+ var handleMessagesListScroll = React.useCallback(function () {
32931
33185
  try {
33186
+ var target = scrollRef.current;
33187
+ if (!target) return Promise.resolve();
32932
33188
  if (scrollToMentionedMessage) {
32933
- var _target = event.target;
32934
- if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33189
+ if (target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
32935
33190
  dispatch(showScrollToNewMessageButtonAC(true));
32936
33191
  } else {
32937
33192
  dispatch(showScrollToNewMessageButtonAC(false));
@@ -32944,7 +33199,6 @@ var MessageList = function MessageList(_ref2) {
32944
33199
  setShowTopDate(false);
32945
33200
  }, 1000);
32946
33201
  renderTopDate();
32947
- var target = event.target;
32948
33202
  var forceLoadPrevMessages = false;
32949
33203
  if (-target.scrollTop + target.offsetHeight + 30 > target.scrollHeight) {
32950
33204
  forceLoadPrevMessages = true;
@@ -32959,51 +33213,68 @@ var MessageList = function MessageList(_ref2) {
32959
33213
  }
32960
33214
  if (scrollToReply) {
32961
33215
  target.scrollTop = scrollToReply;
32962
- } else {
32963
- if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
32964
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
32965
- if (loading || messagesLoading === LOADING_STATE.LOADING || prevDisable) {
32966
- shouldLoadMessages = 'prev';
32967
- } else {
32968
- if (shouldLoadMessages === 'prev') {
32969
- shouldLoadMessages = '';
32970
- }
32971
- loadDirection = 'prev';
32972
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
32973
- if (!getHasPrevCached()) {
32974
- loadFromServer = true;
32975
- }
32976
- nextDisable = true;
33216
+ return Promise.resolve();
33217
+ }
33218
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33219
+ var hasIndex = typeof currentIndex === 'number';
33220
+ if (hasIndex && currentIndex < 15 || forceLoadPrevMessages) {
33221
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33222
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || prevDisableRef.current) {
33223
+ shouldLoadMessagesRef.current = 'prev';
33224
+ } else {
33225
+ if (shouldLoadMessagesRef.current === 'prev') {
33226
+ shouldLoadMessagesRef.current = '';
33227
+ }
33228
+ loadDirectionRef.current = 'prev';
33229
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33230
+ if (!getHasPrevCached()) {
33231
+ loadFromServerRef.current = true;
32977
33232
  }
33233
+ nextDisableRef.current = true;
32978
33234
  }
32979
33235
  }
32980
- if (messagesIndexMap[lastVisibleMessageId] >= messages.length - 15 || target.scrollTop === 0) {
32981
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
32982
- if (loading || messagesLoading === LOADING_STATE.LOADING || nextDisable) {
32983
- shouldLoadMessages = 'next';
32984
- } else {
32985
- if (shouldLoadMessages === 'next') {
32986
- shouldLoadMessages = '';
32987
- }
32988
- loadDirection = 'next';
32989
- prevDisable = true;
32990
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33236
+ }
33237
+ if (hasIndex && currentIndex >= messages.length - 15 || target.scrollTop === 0) {
33238
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33239
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || nextDisableRef.current) {
33240
+ shouldLoadMessagesRef.current = 'next';
33241
+ } else {
33242
+ if (shouldLoadMessagesRef.current === 'next') {
33243
+ shouldLoadMessagesRef.current = '';
32991
33244
  }
33245
+ loadDirectionRef.current = 'next';
33246
+ prevDisableRef.current = true;
33247
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
32992
33248
  }
32993
33249
  }
32994
- if (messagesIndexMap[lastVisibleMessageId] > messages.length - 10) {
32995
- nextDisable = false;
32996
- }
33250
+ }
33251
+ if (hasIndex && currentIndex > messages.length - 10) {
33252
+ nextDisableRef.current = false;
32997
33253
  }
32998
33254
  return Promise.resolve();
32999
33255
  } catch (e) {
33000
33256
  return Promise.reject(e);
33001
33257
  }
33002
- }, [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]);
33258
+ }, [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]);
33259
+ var onScroll = React.useCallback(function () {
33260
+ if (scrollRafRef.current !== null) return;
33261
+ scrollRafRef.current = window.requestAnimationFrame(function () {
33262
+ scrollRafRef.current = null;
33263
+ handleMessagesListScroll();
33264
+ });
33265
+ }, [handleMessagesListScroll]);
33266
+ React.useEffect(function () {
33267
+ return function () {
33268
+ if (scrollRafRef.current !== null) {
33269
+ cancelAnimationFrame(scrollRafRef.current);
33270
+ scrollRafRef.current = null;
33271
+ }
33272
+ };
33273
+ }, []);
33003
33274
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
33004
33275
  try {
33005
- prevDisable = true;
33006
- nextDisable = true;
33276
+ prevDisableRef.current = true;
33277
+ nextDisableRef.current = true;
33007
33278
  if (messages.findIndex(function (msg) {
33008
33279
  return msg.id === messageId;
33009
33280
  }) >= 10) {
@@ -33017,8 +33288,8 @@ var MessageList = function MessageList(_ref2) {
33017
33288
  var positiveValue = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2 < 0 ? repliedMessage.offsetTop - scrollRef.current.offsetHeight * -1 : repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
33018
33289
  setTimeout(function () {
33019
33290
  repliedMessage.classList.remove('highlight');
33020
- prevDisable = false;
33021
- nextDisable = false;
33291
+ prevDisableRef.current = false;
33292
+ nextDisableRef.current = false;
33022
33293
  }, 1000 + positiveValue * 0.1);
33023
33294
  }
33024
33295
  } else {
@@ -33039,10 +33310,10 @@ var MessageList = function MessageList(_ref2) {
33039
33310
  var hasNextCached = getHasNextCached();
33040
33311
  if (messagesLoading === LOADING_STATE.LOADED && connectionStatus === CONNECTION_STATUS.CONNECTED) {
33041
33312
  if (direction === MESSAGE_LOAD_DIRECTION.PREV && firstMessageId && (hasPrevMessages || hasPrevCached)) {
33042
- loading = true;
33313
+ loadingRef.current = true;
33043
33314
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, firstMessageId, hasPrevMessages));
33044
33315
  } else if (direction === MESSAGE_LOAD_DIRECTION.NEXT && lastMessageId && (hasNextMessages || hasNextCached)) {
33045
- loading = true;
33316
+ loadingRef.current = true;
33046
33317
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, lastMessageId, hasNextMessages));
33047
33318
  }
33048
33319
  }
@@ -33073,39 +33344,42 @@ var MessageList = function MessageList(_ref2) {
33073
33344
  setIsDragging(false);
33074
33345
  }
33075
33346
  };
33347
+ var readDroppedFiles = function readDroppedFiles(e) {
33348
+ return new Promise(function (resolve) {
33349
+ var fileList = Object.values(e.dataTransfer.files);
33350
+ var attachmentsFiles = [];
33351
+ var readFiles = 0;
33352
+ var errorCount = 0;
33353
+ fileList.forEach(function (attachment) {
33354
+ var fileReader = new FileReader();
33355
+ fileReader.onload = function (event) {
33356
+ var file = event.target.result;
33357
+ attachmentsFiles.push({
33358
+ name: attachment.name,
33359
+ data: file,
33360
+ type: attachment.type
33361
+ });
33362
+ readFiles++;
33363
+ if (readFiles + errorCount === fileList.length) {
33364
+ resolve(attachmentsFiles);
33365
+ }
33366
+ };
33367
+ fileReader.onerror = function () {
33368
+ errorCount++;
33369
+ if (readFiles + errorCount === fileList.length) {
33370
+ resolve(attachmentsFiles);
33371
+ }
33372
+ };
33373
+ fileReader.readAsDataURL(attachment);
33374
+ });
33375
+ });
33376
+ };
33076
33377
  var handleDropFile = function handleDropFile(e) {
33077
33378
  e.preventDefault();
33078
33379
  e.stopPropagation();
33079
33380
  setIsDragging(false);
33080
33381
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33081
- var fileList = Object.values(e.dataTransfer.files);
33082
- new Promise(function (resolve) {
33083
- var attachmentsFiles = [];
33084
- var readFiles = 0;
33085
- var errorCount = 0;
33086
- fileList.forEach(function (attachment) {
33087
- var fileReader = new FileReader();
33088
- fileReader.onload = function (event) {
33089
- var file = event.target.result;
33090
- attachmentsFiles.push({
33091
- name: attachment.name,
33092
- data: file,
33093
- type: attachment.type
33094
- });
33095
- readFiles++;
33096
- if (readFiles + errorCount === fileList.length) {
33097
- resolve(attachmentsFiles);
33098
- }
33099
- };
33100
- fileReader.onerror = function () {
33101
- errorCount++;
33102
- if (readFiles + errorCount === fileList.length) {
33103
- resolve(attachmentsFiles);
33104
- }
33105
- };
33106
- fileReader.readAsDataURL(attachment);
33107
- });
33108
- }).then(function (result) {
33382
+ readDroppedFiles(e).then(function (result) {
33109
33383
  dispatch(setDraggedAttachmentsAC(result, 'file'));
33110
33384
  })["catch"](function (error) {
33111
33385
  console.error('Error in handleDropFile:', error);
@@ -33118,34 +33392,7 @@ var MessageList = function MessageList(_ref2) {
33118
33392
  e.stopPropagation();
33119
33393
  setIsDragging(false);
33120
33394
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33121
- var fileList = Object.values(e.dataTransfer.files);
33122
- new Promise(function (resolve) {
33123
- var attachmentsFiles = [];
33124
- var readFiles = 0;
33125
- var errorCount = 0;
33126
- fileList.forEach(function (attachment) {
33127
- var fileReader = new FileReader();
33128
- fileReader.onload = function (event) {
33129
- var file = event.target.result;
33130
- attachmentsFiles.push({
33131
- name: attachment.name,
33132
- data: file,
33133
- type: attachment.type
33134
- });
33135
- readFiles++;
33136
- if (readFiles + errorCount === fileList.length) {
33137
- resolve(attachmentsFiles);
33138
- }
33139
- };
33140
- fileReader.onerror = function () {
33141
- errorCount++;
33142
- if (readFiles + errorCount === fileList.length) {
33143
- resolve(attachmentsFiles);
33144
- }
33145
- };
33146
- fileReader.readAsDataURL(attachment);
33147
- });
33148
- }).then(function (result) {
33395
+ readDroppedFiles(e).then(function (result) {
33149
33396
  dispatch(setDraggedAttachmentsAC(result, 'media'));
33150
33397
  })["catch"](function (error) {
33151
33398
  console.error('Error in handleDropMedia:', error);
@@ -33157,21 +33404,21 @@ var MessageList = function MessageList(_ref2) {
33157
33404
  var _messages, _channel$lastMessage2;
33158
33405
  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) {
33159
33406
  dispatch(showScrollToNewMessageButtonAC(false));
33160
- prevDisable = false;
33407
+ prevDisableRef.current = false;
33161
33408
  }
33162
33409
  }, [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]);
33163
33410
  React.useEffect(function () {
33164
33411
  if (scrollToRepliedMessage) {
33165
- loading = false;
33412
+ loadingRef.current = false;
33166
33413
  scrollRef.current.style.scrollBehavior = 'inherit';
33167
33414
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
33168
33415
  if (repliedMessage) {
33169
33416
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
33170
33417
  scrollRef.current.scrollTo({
33171
33418
  top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
33172
- behavior: 'smooth'
33419
+ behavior: scrollToMessageBehavior
33173
33420
  });
33174
- scrollRef.current.style.scrollBehavior = 'smooth';
33421
+ scrollRef.current.style.scrollBehavior = scrollToMessageBehavior;
33175
33422
  if (!channel.backToLinkedChannel && scrollToMessageHighlight) {
33176
33423
  repliedMessage && repliedMessage.classList.add('highlight');
33177
33424
  }
@@ -33181,9 +33428,9 @@ var MessageList = function MessageList(_ref2) {
33181
33428
  var _repliedMessage = document.getElementById(scrollToRepliedMessage);
33182
33429
  _repliedMessage && _repliedMessage.classList.remove('highlight');
33183
33430
  }
33184
- prevDisable = false;
33431
+ prevDisableRef.current = false;
33185
33432
  setScrollToReply(null);
33186
- scrollRef.current.style.scrollBehavior = 'smooth';
33433
+ scrollRef.current.style.scrollBehavior = 'instant';
33187
33434
  }, 1000 + positiveValue * 0.1);
33188
33435
  }
33189
33436
  dispatch(setScrollToMessagesAC(null));
@@ -33199,15 +33446,15 @@ var MessageList = function MessageList(_ref2) {
33199
33446
  });
33200
33447
  }
33201
33448
  } else {
33202
- nextDisable = true;
33203
- prevDisable = true;
33449
+ nextDisableRef.current = true;
33450
+ prevDisableRef.current = true;
33204
33451
  scrollRef.current.scrollTo({
33205
33452
  top: 0,
33206
33453
  behavior: 'smooth'
33207
33454
  });
33208
33455
  dispatch(showScrollToNewMessageButtonAC(false));
33209
33456
  setTimeout(function () {
33210
- prevDisable = false;
33457
+ prevDisableRef.current = false;
33211
33458
  }, 800);
33212
33459
  }
33213
33460
  }
@@ -33225,11 +33472,18 @@ var MessageList = function MessageList(_ref2) {
33225
33472
  React.useEffect(function () {
33226
33473
  setHasNextCached(false);
33227
33474
  setHasPrevCached(false);
33475
+ messagesIndexMapRef.current = {};
33476
+ loadFromServerRef.current = false;
33477
+ loadDirectionRef.current = '';
33478
+ nextDisableRef.current = false;
33479
+ prevDisableRef.current = false;
33480
+ shouldLoadMessagesRef.current = '';
33481
+ loadingRef.current = false;
33228
33482
  if (channel.backToLinkedChannel) {
33229
33483
  var visibleMessages = getVisibleMessagesMap();
33230
33484
  var visibleMessagesIds = Object.keys(visibleMessages);
33231
33485
  var messageId = visibleMessagesIds[visibleMessagesIds.length - 1];
33232
- dispatch(getMessagesAC(channel, undefined, messageId));
33486
+ dispatch(getMessagesAC(channel, undefined, messageId, undefined, undefined, undefined, 'instant'));
33233
33487
  setUnreadMessageId(messageId);
33234
33488
  } else {
33235
33489
  if (!channel.isLinkedChannel) {
@@ -33252,9 +33506,9 @@ var MessageList = function MessageList(_ref2) {
33252
33506
  }
33253
33507
  setPreviousScrollTop(0);
33254
33508
  setShouldPreserveScroll(false);
33255
- nextDisable = false;
33256
- prevDisable = false;
33257
- scrollToBottom = true;
33509
+ nextDisableRef.current = false;
33510
+ prevDisableRef.current = false;
33511
+ scrollToBottomRef.current = true;
33258
33512
  setAllowEditDeleteIncomingMessage(allowEditDeleteIncomingMessage);
33259
33513
  }, [channel.id]);
33260
33514
  React.useEffect(function () {
@@ -33269,7 +33523,7 @@ var MessageList = function MessageList(_ref2) {
33269
33523
  setUnreadMessageId('');
33270
33524
  }
33271
33525
  }
33272
- }, [messages]);
33526
+ }, [messages, hiddenMessagesProperties, user === null || user === void 0 ? void 0 : user.id]);
33273
33527
  React.useEffect(function () {
33274
33528
  if (scrollRef.current) {
33275
33529
  var isAtBottom = scrollRef.current.scrollTop > -50;
@@ -33278,35 +33532,40 @@ var MessageList = function MessageList(_ref2) {
33278
33532
  setShouldPreserveScroll(true);
33279
33533
  }
33280
33534
  }
33281
- if (loading) {
33282
- if (loadDirection !== 'next') {
33535
+ if (loadingRef.current) {
33536
+ if (loadDirectionRef.current !== 'next') {
33283
33537
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
33284
33538
  if (lastVisibleMessage) {
33285
33539
  scrollRef.current.style.scrollBehavior = 'inherit';
33286
33540
  scrollRef.current.scrollTop = lastVisibleMessage.offsetTop;
33287
33541
  scrollRef.current.style.scrollBehavior = 'smooth';
33288
33542
  }
33289
- if (loadFromServer) {
33290
- setTimeout(function () {
33291
- loading = false;
33292
- loadFromServer = false;
33293
- nextDisable = false;
33294
- if (shouldLoadMessages === 'prev' && messagesIndexMap[lastVisibleMessageId] < 15) {
33543
+ if (loadFromServerRef.current) {
33544
+ var timeout = setTimeout(function () {
33545
+ loadingRef.current = false;
33546
+ loadFromServerRef.current = false;
33547
+ nextDisableRef.current = false;
33548
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33549
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33295
33550
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33296
33551
  }
33297
- if (shouldLoadMessages === 'next' && messagesIndexMap[lastVisibleMessageId] > messages.length - 15) {
33552
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33298
33553
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33299
33554
  }
33300
33555
  }, 50);
33556
+ if (loadingMessagesTimeoutRef.current) {
33557
+ clearTimeout(loadingMessagesTimeoutRef.current);
33558
+ }
33559
+ loadingMessagesTimeoutRef.current = timeout;
33301
33560
  } else {
33302
- loading = false;
33303
- if (shouldLoadMessages === 'prev') {
33561
+ loadingRef.current = false;
33562
+ if (shouldLoadMessagesRef.current === 'prev') {
33304
33563
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33305
- shouldLoadMessages = '';
33564
+ shouldLoadMessagesRef.current = '';
33306
33565
  }
33307
- if (shouldLoadMessages === 'next') {
33566
+ if (shouldLoadMessagesRef.current === 'next') {
33308
33567
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33309
- shouldLoadMessages = '';
33568
+ shouldLoadMessagesRef.current = '';
33310
33569
  }
33311
33570
  }
33312
33571
  } else {
@@ -33316,22 +33575,26 @@ var MessageList = function MessageList(_ref2) {
33316
33575
  scrollRef.current.scrollTop = _lastVisibleMessage.offsetTop - scrollRef.current.offsetHeight + _lastVisibleMessage.offsetHeight;
33317
33576
  scrollRef.current.style.scrollBehavior = 'smooth';
33318
33577
  }
33319
- loading = false;
33320
- prevDisable = false;
33321
- if (shouldLoadMessages === 'prev') {
33578
+ loadingRef.current = false;
33579
+ prevDisableRef.current = false;
33580
+ if (shouldLoadMessagesRef.current === 'prev') {
33322
33581
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33323
- shouldLoadMessages = '';
33582
+ shouldLoadMessagesRef.current = '';
33324
33583
  }
33325
- if (shouldLoadMessages === 'next') {
33584
+ if (shouldLoadMessagesRef.current === 'next') {
33326
33585
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33327
- shouldLoadMessages = '';
33586
+ shouldLoadMessagesRef.current = '';
33328
33587
  }
33329
33588
  }
33330
33589
  }
33331
33590
  renderTopDate();
33332
- if (scrollToBottom) {
33333
- dispatch(scrollToNewMessageAC(true));
33334
- scrollToBottom = false;
33591
+ if (scrollToBottomRef.current) {
33592
+ if (channel.backToLinkedChannel) {
33593
+ dispatch(scrollToNewMessageAC(false));
33594
+ } else {
33595
+ dispatch(scrollToNewMessageAC(true));
33596
+ }
33597
+ scrollToBottomRef.current = false;
33335
33598
  }
33336
33599
  if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
33337
33600
  requestAnimationFrame(function () {
@@ -33344,13 +33607,43 @@ var MessageList = function MessageList(_ref2) {
33344
33607
  setPreviousScrollTop(0);
33345
33608
  });
33346
33609
  }
33610
+ return function () {
33611
+ if (loadingMessagesTimeoutRef.current) {
33612
+ clearTimeout(loadingMessagesTimeoutRef.current);
33613
+ }
33614
+ };
33347
33615
  }, [messages]);
33616
+ React.useEffect(function () {
33617
+ if (messagesLoading === LOADING_STATE.LOADED) {
33618
+ var timeout = setTimeout(function () {
33619
+ loadingRef.current = false;
33620
+ loadFromServerRef.current = false;
33621
+ nextDisableRef.current = false;
33622
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33623
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33624
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33625
+ }
33626
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33627
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33628
+ }
33629
+ }, 50);
33630
+ if (loadingMessagesTimeoutRef.current) {
33631
+ clearTimeout(loadingMessagesTimeoutRef.current);
33632
+ }
33633
+ loadingMessagesTimeoutRef.current = timeout;
33634
+ }
33635
+ return function () {
33636
+ if (loadingMessagesTimeoutRef.current) {
33637
+ clearTimeout(loadingMessagesTimeoutRef.current);
33638
+ }
33639
+ };
33640
+ }, [messagesLoading, messages, lastVisibleMessageId]);
33348
33641
  React.useEffect(function () {
33349
33642
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
33350
33643
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
33351
- loading = false;
33352
- prevDisable = false;
33353
- nextDisable = false;
33644
+ loadingRef.current = false;
33645
+ prevDisableRef.current = false;
33646
+ nextDisableRef.current = false;
33354
33647
  clearMessagesMap();
33355
33648
  removeAllMessages();
33356
33649
  if (channel.id) {
@@ -33359,7 +33652,8 @@ var MessageList = function MessageList(_ref2) {
33359
33652
  }
33360
33653
  }, [connectionStatus]);
33361
33654
  React.useEffect(function () {
33362
- if (channel.newMessageCount && channel.newMessageCount > 0 && getUnreadScrollTo()) {
33655
+ var unreadScrollTo = getUnreadScrollTo();
33656
+ if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
33363
33657
  if (scrollRef.current) {
33364
33658
  scrollRef.current.style.scrollBehavior = 'inherit';
33365
33659
  }
@@ -33372,7 +33666,14 @@ var MessageList = function MessageList(_ref2) {
33372
33666
  setUnreadScrollTo(false);
33373
33667
  }
33374
33668
  }
33375
- });
33669
+ }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
33670
+ React.useEffect(function () {
33671
+ return function () {
33672
+ if (hideTopDateTimeout.current) {
33673
+ clearTimeout(hideTopDateTimeout.current);
33674
+ }
33675
+ };
33676
+ }, []);
33376
33677
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isDragging && !(attachmentsPreview !== null && attachmentsPreview !== void 0 && attachmentsPreview.show && mediaFile) && (/*#__PURE__*/React__default.createElement(DragAndDropContainer, {
33377
33678
  id: 'draggingContainer',
33378
33679
  draggable: true,
@@ -33415,14 +33716,12 @@ var MessageList = function MessageList(_ref2) {
33415
33716
  dateDividerBackgroundColor: dateDividerBackgroundColor || overlayBackground,
33416
33717
  dateDividerBorderRadius: dateDividerBorderRadius,
33417
33718
  topOffset: scrollRef && scrollRef.current && scrollRef.current.offsetTop
33418
- }, /*#__PURE__*/React__default.createElement("span", {
33419
- ref: messageTopDateRef
33420
- }))), /*#__PURE__*/React__default.createElement(Container$h, {
33719
+ }, /*#__PURE__*/React__default.createElement("span", null, topDateLabel))), /*#__PURE__*/React__default.createElement(Container$h, {
33421
33720
  id: 'scrollableDiv',
33422
33721
  className: isScrolling ? 'show-scrollbar' : '',
33423
33722
  ref: scrollRef,
33424
33723
  stopScrolling: stopScrolling,
33425
- onScroll: handleMessagesListScroll,
33724
+ onScroll: onScroll,
33426
33725
  onMouseEnter: function onMouseEnter() {
33427
33726
  return setIsScrolling(true);
33428
33727
  },
@@ -33441,8 +33740,10 @@ var MessageList = function MessageList(_ref2) {
33441
33740
  var prevMessage = messages[index - 1];
33442
33741
  var nextMessage = messages[index + 1];
33443
33742
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
33444
- messagesIndexMap[message.id] = index;
33445
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33743
+ messagesIndexMapRef.current[message.id] = index;
33744
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
33745
+ key: message.id || message.tid
33746
+ }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33446
33747
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
33447
33748
  theme: theme,
33448
33749
  lastIndex: false,
@@ -37381,7 +37682,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
37381
37682
  if (attachments.length) {
37382
37683
  var videoAttachment = false;
37383
37684
  attachments.forEach(function (att) {
37384
- if (att.type === 'video' || att.data.type.split('/')[0] === 'video') {
37685
+ if ((att.type === 'video' || att.data.type.split('/')[0] === 'video') && att.type !== 'file') {
37385
37686
  videoAttachment = true;
37386
37687
  if (!readyVideoAttachments[att.tid]) {
37387
37688
  setSendMessageIsActive(false);
@@ -40518,7 +40819,7 @@ var Details = function Details(_ref) {
40518
40819
  color: textSecondary,
40519
40820
  fontSize: channelMembersFontSize,
40520
40821
  lineHeight: channelMembersLineHeight
40521
- }, showPhoneNumber ? "+" + (directChannelUser === null || directChannelUser === void 0 ? void 0 : directChannelUser.id) : hideUserPresence && directChannelUser && hideUserPresence(directChannelUser) ? '' : directChannelUser && directChannelUser.presence && (directChannelUser.presence.state === USER_PRESENCE_STATUS.ONLINE ? 'Online' : directChannelUser.presence.lastActiveAt && userLastActiveDateFormat(directChannelUser.presence.lastActiveAt)))) : (/*#__PURE__*/React__default.createElement(SubTitle, {
40822
+ }, showPhoneNumber && directChannelUser !== null && directChannelUser !== void 0 && directChannelUser.id ? "+" + (directChannelUser === null || directChannelUser === void 0 ? void 0 : directChannelUser.id) : hideUserPresence && directChannelUser && hideUserPresence(directChannelUser) ? '' : directChannelUser && directChannelUser.presence && (directChannelUser.presence.state === USER_PRESENCE_STATUS.ONLINE ? 'Online' : directChannelUser.presence.lastActiveAt && userLastActiveDateFormat(directChannelUser.presence.lastActiveAt)))) : (/*#__PURE__*/React__default.createElement(SubTitle, {
40522
40823
  color: textSecondary,
40523
40824
  fontSize: channelMembersFontSize,
40524
40825
  lineHeight: channelMembersLineHeight
@@ -40972,10 +41273,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
40972
41273
  };
40973
41274
  var handleScrollToLastMessage = function handleScrollToLastMessage(messageId) {
40974
41275
  try {
40975
- dispatch(scrollToNewMessageAC(true, false, false));
40976
41276
  if (messages.findIndex(function (msg) {
40977
41277
  return msg.id === messageId;
40978
41278
  }) >= 10) {
41279
+ dispatch(scrollToNewMessageAC(true, false, false));
40979
41280
  dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
40980
41281
  var repliedMessage = document.getElementById(messageId);
40981
41282
  if (repliedMessage) {