sceyt-chat-react-uikit 1.7.1-beta.9 → 1.7.2-beta.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.modern.js CHANGED
@@ -9070,7 +9070,7 @@ function updateChannelLastMessageOnAllChannels(channelId, message) {
9070
9070
  var updateChannel = allChannels.find(function (chan) {
9071
9071
  return chan.id === channelId;
9072
9072
  });
9073
- if (message.state === 'Deleted' || message.state === 'Edited') {
9073
+ if ((message === null || message === void 0 ? void 0 : message.state) === 'Deleted' || (message === null || message === void 0 ? void 0 : message.state) === 'Edited') {
9074
9074
  var _updateChannel;
9075
9075
  if (((_updateChannel = updateChannel) === null || _updateChannel === void 0 ? void 0 : _updateChannel.lastMessage.id) === message.id) {
9076
9076
  allChannels = allChannels.map(function (chan) {
@@ -10319,6 +10319,7 @@ var initialState$1 = {
10319
10319
  attachmentsUploadingState: {},
10320
10320
  scrollToMessage: null,
10321
10321
  scrollToMessageHighlight: true,
10322
+ scrollToMessageBehavior: 'smooth',
10322
10323
  scrollToMentionedMessage: false,
10323
10324
  reactionsList: [],
10324
10325
  reactionsHasNext: true,
@@ -10345,6 +10346,7 @@ var messageSlice = createSlice({
10345
10346
  setScrollToMessage: function setScrollToMessage(state, action) {
10346
10347
  state.scrollToMessage = action.payload.messageId;
10347
10348
  state.scrollToMessageHighlight = action.payload.highlight;
10349
+ state.scrollToMessageBehavior = action.payload.behavior || 'smooth';
10348
10350
  },
10349
10351
  setScrollToMentionedMessage: function setScrollToMentionedMessage(state, action) {
10350
10352
  state.scrollToMentionedMessage = action.payload.isScrollToMentionedMessage;
@@ -10374,7 +10376,7 @@ var messageSlice = createSlice({
10374
10376
  return msg.tid === message.tid || msg.id === message.id;
10375
10377
  });
10376
10378
  });
10377
- if (direction === MESSAGE_LOAD_DIRECTION.PREV) {
10379
+ if (direction === MESSAGE_LOAD_DIRECTION.PREV && newMessagesLength > 0) {
10378
10380
  if (currentMessagesLength + newMessagesLength >= MESSAGES_MAX_LENGTH) {
10379
10381
  var _state$activeChannelM;
10380
10382
  setHasNextCached(true);
@@ -10396,7 +10398,7 @@ var messageSlice = createSlice({
10396
10398
  var _state$activeChannelM3;
10397
10399
  (_state$activeChannelM3 = state.activeChannelMessages).splice.apply(_state$activeChannelM3, [0, 0].concat(messagesIsNotIncludeInActiveChannelMessages));
10398
10400
  }
10399
- } else if (direction === 'next') {
10401
+ } else if (direction === 'next' && newMessagesLength > 0) {
10400
10402
  if (currentMessagesLength >= MESSAGES_MAX_LENGTH) {
10401
10403
  var _state$activeChannelM4;
10402
10404
  setHasPrevCached(true);
@@ -10585,8 +10587,8 @@ var messageSlice = createSlice({
10585
10587
  var _action$payload8 = action.payload,
10586
10588
  uploaded = _action$payload8.uploaded,
10587
10589
  total = _action$payload8.total,
10588
- attachmentId = _action$payload8.attachmentId,
10589
- progress = _action$payload8.progress;
10590
+ attachmentId = _action$payload8.attachmentId;
10591
+ var progress = uploaded / total;
10590
10592
  var updateData = {
10591
10593
  uploaded: uploaded,
10592
10594
  total: total,
@@ -11596,7 +11598,7 @@ function setMessageToEditAC(message) {
11596
11598
  message: message
11597
11599
  });
11598
11600
  }
11599
- function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight) {
11601
+ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior) {
11600
11602
  if (highlight === void 0) {
11601
11603
  highlight = true;
11602
11604
  }
@@ -11608,7 +11610,8 @@ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliv
11608
11610
  messageId: messageId,
11609
11611
  limit: limit,
11610
11612
  withDeliveredMessages: withDeliveredMessages,
11611
- highlight: highlight
11613
+ highlight: highlight,
11614
+ behavior: behavior
11612
11615
  }
11613
11616
  };
11614
11617
  }
@@ -11622,13 +11625,14 @@ function getMessageAC(channelId, messageId, limit) {
11622
11625
  }
11623
11626
  };
11624
11627
  }
11625
- function setScrollToMessagesAC(messageId, highlight) {
11628
+ function setScrollToMessagesAC(messageId, highlight, behavior) {
11626
11629
  if (highlight === void 0) {
11627
11630
  highlight = true;
11628
11631
  }
11629
11632
  return setScrollToMessage({
11630
11633
  messageId: messageId || '',
11631
- highlight: highlight
11634
+ highlight: highlight,
11635
+ behavior: behavior
11632
11636
  });
11633
11637
  }
11634
11638
  function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
@@ -17089,6 +17093,9 @@ var scrollToMessageSelector = function scrollToMessageSelector(store) {
17089
17093
  var scrollToMessageHighlightSelector = function scrollToMessageHighlightSelector(store) {
17090
17094
  return store.MessageReducer.scrollToMessageHighlight;
17091
17095
  };
17096
+ var scrollToMessageBehaviorSelector = function scrollToMessageBehaviorSelector(store) {
17097
+ return store.MessageReducer.scrollToMessageBehavior;
17098
+ };
17092
17099
  var reactionsListSelector = function reactionsListSelector(store) {
17093
17100
  return store.MessageReducer.reactionsList;
17094
17101
  };
@@ -18482,7 +18489,7 @@ function editMessage(action) {
18482
18489
  }, _marked6$1, null, [[0, 5]]);
18483
18490
  }
18484
18491
  function getMessagesQuery(action) {
18485
- var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
18492
+ var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
18486
18493
  return _regenerator().w(function (_context9) {
18487
18494
  while (1) switch (_context9.p = _context9.n) {
18488
18495
  case 0:
@@ -18490,9 +18497,9 @@ function getMessagesQuery(action) {
18490
18497
  _context9.n = 1;
18491
18498
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
18492
18499
  case 1:
18493
- _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight;
18500
+ _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
18494
18501
  if (!(channel.id && !channel.isMockChannel)) {
18495
- _context9.n = 47;
18502
+ _context9.n = 48;
18496
18503
  break;
18497
18504
  }
18498
18505
  SceytChatClient = getClient();
@@ -18520,6 +18527,7 @@ function getMessagesQuery(action) {
18520
18527
  break;
18521
18528
  }
18522
18529
  setHasPrevCached(false);
18530
+ setMessagesToMap(channel.id, []);
18523
18531
  setAllMessages([]);
18524
18532
  _context9.n = 3;
18525
18533
  return call(messageQuery.loadPreviousMessageId, '0');
@@ -18576,13 +18584,13 @@ function getMessagesQuery(action) {
18576
18584
  break;
18577
18585
  }
18578
18586
  _context9.n = 12;
18579
- return put(setScrollToMessagesAC(messageId, highlight));
18587
+ return put(setScrollToMessagesAC(messageId, highlight, behavior));
18580
18588
  case 12:
18581
- _context9.n = 45;
18589
+ _context9.n = 46;
18582
18590
  break;
18583
18591
  case 13:
18584
18592
  if (!messageId) {
18585
- _context9.n = 25;
18593
+ _context9.n = 26;
18586
18594
  break;
18587
18595
  }
18588
18596
  _allMessages = getAllMessages();
@@ -18591,7 +18599,7 @@ function getMessagesQuery(action) {
18591
18599
  });
18592
18600
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
18593
18601
  if (!(messageIndex >= maxLengthPart)) {
18594
- _context9.n = 15;
18602
+ _context9.n = 16;
18595
18603
  break;
18596
18604
  }
18597
18605
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
@@ -18600,151 +18608,160 @@ function getMessagesQuery(action) {
18600
18608
  case 14:
18601
18609
  setHasPrevCached(messageIndex > maxLengthPart);
18602
18610
  setHasNextCached(_allMessages.length > maxLengthPart);
18611
+ _context9.n = 15;
18612
+ return put(setMessagesHasPrevAC(true));
18613
+ case 15:
18603
18614
  _context9.n = 22;
18604
18615
  break;
18605
- case 15:
18616
+ case 16:
18606
18617
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18607
18618
  log.info('load by message id from server ...............', messageId);
18608
- _context9.n = 16;
18619
+ _context9.n = 17;
18609
18620
  return call(messageQuery.loadNearMessageId, messageId);
18610
- case 16:
18621
+ case 17:
18611
18622
  result = _context9.v;
18612
18623
  if (!(result.messages.length === 50)) {
18613
- _context9.n = 19;
18624
+ _context9.n = 20;
18614
18625
  break;
18615
18626
  }
18616
- messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
18617
- _context9.n = 17;
18627
+ messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18628
+ _context9.n = 18;
18618
18629
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18619
- case 17:
18630
+ case 18:
18620
18631
  _secondResult = _context9.v;
18621
18632
  messageQuery.reverse = false;
18622
- _context9.n = 18;
18633
+ _context9.n = 19;
18623
18634
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18624
- case 18:
18635
+ case 19:
18625
18636
  thirdResult = _context9.v;
18626
18637
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
18627
18638
  result.hasNext = _secondResult.hasNext;
18628
18639
  messageQuery.reverse = true;
18629
- case 19:
18630
- log.info('result from server ....... ', result);
18631
18640
  _context9.n = 20;
18632
- return put(setMessagesHasNextAC(true));
18641
+ return put(setMessagesHasPrevAC(_secondResult.hasNext));
18633
18642
  case 20:
18643
+ log.info('result from server ....... ', result);
18634
18644
  _context9.n = 21;
18635
18645
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18636
18646
  case 21:
18647
+ setMessagesToMap(channel.id, result.messages);
18637
18648
  setAllMessages([].concat(result.messages));
18638
18649
  setHasPrevCached(false);
18639
18650
  setHasNextCached(false);
18640
18651
  case 22:
18641
18652
  _context9.n = 23;
18642
- return put(setScrollToMessagesAC(messageId));
18653
+ return put(setMessagesHasNextAC(true));
18643
18654
  case 23:
18644
18655
  _context9.n = 24;
18645
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18656
+ return put(setScrollToMessagesAC(messageId, true, behavior));
18646
18657
  case 24:
18647
- _context9.n = 45;
18648
- break;
18658
+ _context9.n = 25;
18659
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18649
18660
  case 25:
18661
+ _context9.n = 46;
18662
+ break;
18663
+ case 26:
18650
18664
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
18651
- _context9.n = 38;
18665
+ _context9.n = 39;
18652
18666
  break;
18653
18667
  }
18668
+ setMessagesToMap(channel.id, []);
18654
18669
  setAllMessages([]);
18655
18670
  messageQuery.limit = MESSAGES_MAX_LENGTH;
18656
18671
  if (!Number(channel.lastDisplayedMessageId)) {
18657
- _context9.n = 31;
18672
+ _context9.n = 32;
18658
18673
  break;
18659
18674
  }
18660
- _context9.n = 26;
18675
+ _context9.n = 27;
18661
18676
  return call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
18662
- case 26:
18677
+ case 27:
18663
18678
  result = _context9.v;
18664
18679
  if (!(result.messages.length === 50)) {
18665
- _context9.n = 30;
18680
+ _context9.n = 31;
18666
18681
  break;
18667
18682
  }
18668
18683
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
18669
- _context9.n = 27;
18684
+ _context9.n = 28;
18670
18685
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18671
- case 27:
18686
+ case 28:
18672
18687
  _secondResult2 = _context9.v;
18673
18688
  if (!(channel.newMessageCount > 25)) {
18674
- _context9.n = 29;
18689
+ _context9.n = 30;
18675
18690
  break;
18676
18691
  }
18677
18692
  messageQuery.reverse = false;
18678
- _context9.n = 28;
18693
+ _context9.n = 29;
18679
18694
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
18680
- case 28:
18695
+ case 29:
18681
18696
  _thirdResult = _context9.v;
18682
18697
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
18683
18698
  messageQuery.reverse = true;
18684
- _context9.n = 30;
18699
+ _context9.n = 31;
18685
18700
  break;
18686
- case 29:
18687
- result.messages = [].concat(_secondResult2.messages, result.messages);
18688
18701
  case 30:
18689
- _context9.n = 34;
18690
- break;
18702
+ result.messages = [].concat(_secondResult2.messages, result.messages);
18691
18703
  case 31:
18692
- _context9.n = 32;
18693
- return call(messageQuery.loadPrevious);
18704
+ _context9.n = 35;
18705
+ break;
18694
18706
  case 32:
18707
+ _context9.n = 33;
18708
+ return call(messageQuery.loadPrevious);
18709
+ case 33:
18695
18710
  result = _context9.v;
18696
18711
  if (!(result.messages.length === 50)) {
18697
- _context9.n = 34;
18712
+ _context9.n = 35;
18698
18713
  break;
18699
18714
  }
18700
18715
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18701
- _context9.n = 33;
18716
+ _context9.n = 34;
18702
18717
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18703
- case 33:
18718
+ case 34:
18704
18719
  _secondResult3 = _context9.v;
18705
18720
  result.messages = [].concat(_secondResult3.messages, result.messages);
18706
18721
  result.hasNext = _secondResult3.hasNext;
18707
- case 34:
18708
- setMessagesToMap(channel.id, result.messages);
18709
- _context9.n = 35;
18710
- return put(setMessagesHasPrevAC(true));
18711
18722
  case 35:
18712
18723
  _context9.n = 36;
18713
- return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18724
+ return put(setMessagesHasPrevAC(true));
18714
18725
  case 36:
18715
- setAllMessages([].concat(result.messages));
18716
18726
  _context9.n = 37;
18717
- return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18727
+ return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
18718
18728
  case 37:
18719
- _context9.n = 45;
18720
- break;
18729
+ setMessagesToMap(channel.id, result.messages);
18730
+ setAllMessages([].concat(result.messages));
18731
+ _context9.n = 38;
18732
+ return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
18721
18733
  case 38:
18734
+ _context9.n = 46;
18735
+ break;
18736
+ case 39:
18737
+ setMessagesToMap(channel.id, []);
18722
18738
  setAllMessages([]);
18723
18739
  if (!(cachedMessages && cachedMessages.length)) {
18724
- _context9.n = 39;
18740
+ _context9.n = 40;
18725
18741
  break;
18726
18742
  }
18743
+ setMessagesToMap(channel.id, []);
18727
18744
  setAllMessages([].concat(cachedMessages));
18728
- _context9.n = 39;
18745
+ _context9.n = 40;
18729
18746
  return put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
18730
- case 39:
18747
+ case 40:
18731
18748
  log.info('load message from server');
18732
- _context9.n = 40;
18749
+ _context9.n = 41;
18733
18750
  return call(messageQuery.loadPrevious);
18734
- case 40:
18751
+ case 41:
18735
18752
  result = _context9.v;
18736
18753
  if (!(result.messages.length === 50)) {
18737
- _context9.n = 42;
18754
+ _context9.n = 43;
18738
18755
  break;
18739
18756
  }
18740
18757
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
18741
- _context9.n = 41;
18758
+ _context9.n = 42;
18742
18759
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
18743
- case 41:
18760
+ case 42:
18744
18761
  _secondResult4 = _context9.v;
18745
18762
  result.messages = [].concat(_secondResult4.messages, result.messages);
18746
18763
  result.hasNext = _secondResult4.hasNext;
18747
- case 42:
18764
+ case 43:
18748
18765
  updatedMessages = [];
18749
18766
  result.messages.forEach(function (msg) {
18750
18767
  var updatedMessage = updateMessageOnMap(channel.id, {
@@ -18756,18 +18773,18 @@ function getMessagesQuery(action) {
18756
18773
  });
18757
18774
  setMessagesToMap(channel.id, updatedMessages);
18758
18775
  setAllMessages([].concat(updatedMessages));
18759
- _context9.n = 43;
18760
- return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18761
- case 43:
18762
18776
  _context9.n = 44;
18763
- return put(setMessagesHasPrevAC(result.hasNext));
18777
+ return put(setMessagesAC(JSON.parse(JSON.stringify(updatedMessages))));
18764
18778
  case 44:
18765
18779
  _context9.n = 45;
18766
- return put(setMessagesHasNextAC(false));
18780
+ return put(setMessagesHasPrevAC(result.hasNext));
18767
18781
  case 45:
18782
+ _context9.n = 46;
18783
+ return put(setMessagesHasNextAC(false));
18784
+ case 46:
18768
18785
  pendingMessages = getPendingMessages(channel.id);
18769
18786
  if (!(pendingMessages && pendingMessages.length)) {
18770
- _context9.n = 46;
18787
+ _context9.n = 47;
18771
18788
  break;
18772
18789
  }
18773
18790
  _messagesMap = {};
@@ -18777,38 +18794,38 @@ function getMessagesQuery(action) {
18777
18794
  filteredPendingMessages = pendingMessages.filter(function (msg) {
18778
18795
  return !_messagesMap[msg.tid || ''];
18779
18796
  });
18780
- _context9.n = 46;
18797
+ _context9.n = 47;
18781
18798
  return put(addMessagesAC(filteredPendingMessages, MESSAGE_LOAD_DIRECTION.NEXT));
18782
- case 46:
18783
- _context9.n = 48;
18784
- break;
18785
18799
  case 47:
18800
+ _context9.n = 49;
18801
+ break;
18802
+ case 48:
18786
18803
  if (!channel.isMockChannel) {
18787
- _context9.n = 48;
18804
+ _context9.n = 49;
18788
18805
  break;
18789
18806
  }
18790
- _context9.n = 48;
18807
+ _context9.n = 49;
18791
18808
  return put(setMessagesAC([]));
18792
- case 48:
18793
- _context9.n = 50;
18794
- break;
18795
18809
  case 49:
18796
- _context9.p = 49;
18797
- _t9 = _context9.v;
18798
- log.error('error in message query', _t9);
18810
+ _context9.n = 51;
18811
+ break;
18799
18812
  case 50:
18800
18813
  _context9.p = 50;
18801
- _context9.n = 51;
18802
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18814
+ _t9 = _context9.v;
18815
+ log.error('error in message query', _t9);
18803
18816
  case 51:
18804
- return _context9.f(50);
18817
+ _context9.p = 51;
18818
+ _context9.n = 52;
18819
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18805
18820
  case 52:
18821
+ return _context9.f(51);
18822
+ case 53:
18806
18823
  return _context9.a(2);
18807
18824
  }
18808
- }, _marked7$1, null, [[0, 49, 50, 52]]);
18825
+ }, _marked7$1, null, [[0, 50, 51, 53]]);
18809
18826
  }
18810
18827
  function getMessageQuery(action) {
18811
- var payload, channelId, messageId, channel, messages, _t0;
18828
+ var payload, channelId, messageId, channel, messages, fetchedMessage, _t0;
18812
18829
  return _regenerator().w(function (_context0) {
18813
18830
  while (1) switch (_context0.p = _context0.n) {
18814
18831
  case 0:
@@ -18816,34 +18833,53 @@ function getMessageQuery(action) {
18816
18833
  payload = action.payload;
18817
18834
  channelId = payload.channelId, messageId = payload.messageId;
18818
18835
  _context0.n = 1;
18819
- return call(getChannelFromMap, channelId);
18836
+ return call(getChannelFromAllChannels, channelId);
18820
18837
  case 1:
18821
18838
  channel = _context0.v;
18822
- _context0.n = 2;
18823
- return call(channel.getMessagesById, [messageId]);
18839
+ if (channel) {
18840
+ _context0.n = 2;
18841
+ break;
18842
+ }
18843
+ return _context0.a(2);
18824
18844
  case 2:
18825
- messages = _context0.v;
18826
18845
  _context0.n = 3;
18827
- return put(updateMessageAC(messageId, messages[0]));
18846
+ return call(channel.getMessagesById, [messageId]);
18828
18847
  case 3:
18848
+ messages = _context0.v;
18849
+ fetchedMessage = messages && messages[0] ? JSON.parse(JSON.stringify(messages[0])) : null;
18850
+ if (!fetchedMessage) {
18851
+ _context0.n = 6;
18852
+ break;
18853
+ }
18854
+ _context0.n = 4;
18855
+ return put(updateMessageAC(messageId, fetchedMessage));
18856
+ case 4:
18829
18857
  updateMessageOnMap(channel.id, {
18830
18858
  messageId: messageId,
18831
- params: messages[0]
18859
+ params: fetchedMessage
18832
18860
  });
18833
- updateMessageOnAllMessages(messageId, messages[0]);
18834
- _context0.n = 4;
18861
+ updateMessageOnAllMessages(messageId, fetchedMessage);
18862
+ _context0.n = 5;
18835
18863
  return put(setScrollToMessagesAC(messageId, false));
18836
- case 4:
18864
+ case 5:
18865
+ if (!(channel.lastMessage && channel.lastMessage.id === messageId)) {
18866
+ _context0.n = 6;
18867
+ break;
18868
+ }
18869
+ updateChannelLastMessageOnAllChannels(channel.id, fetchedMessage);
18837
18870
  _context0.n = 6;
18871
+ return put(updateChannelLastMessageAC(fetchedMessage, channel));
18872
+ case 6:
18873
+ _context0.n = 8;
18838
18874
  break;
18839
- case 5:
18840
- _context0.p = 5;
18875
+ case 7:
18876
+ _context0.p = 7;
18841
18877
  _t0 = _context0.v;
18842
18878
  log.error('error in message query', _t0);
18843
- case 6:
18879
+ case 8:
18844
18880
  return _context0.a(2);
18845
18881
  }
18846
- }, _marked8$1, null, [[0, 5]]);
18882
+ }, _marked8$1, null, [[0, 7]]);
18847
18883
  }
18848
18884
  function loadMoreMessages(action) {
18849
18885
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result, _t1;
@@ -18932,25 +18968,38 @@ function loadMoreMessages(action) {
18932
18968
  _context1.n = 11;
18933
18969
  return put(addMessagesAC(JSON.parse(JSON.stringify(result.messages)), direction));
18934
18970
  case 11:
18935
- _context1.n = 13;
18971
+ _context1.n = 16;
18936
18972
  break;
18937
18973
  case 12:
18938
18974
  _context1.n = 13;
18939
18975
  return put(addMessagesAC([], direction));
18940
18976
  case 13:
18977
+ if (!(direction === MESSAGE_LOAD_DIRECTION.NEXT)) {
18978
+ _context1.n = 15;
18979
+ break;
18980
+ }
18941
18981
  _context1.n = 14;
18942
- return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18982
+ return put(setMessagesHasNextAC(false));
18943
18983
  case 14:
18944
18984
  _context1.n = 16;
18945
18985
  break;
18946
18986
  case 15:
18947
- _context1.p = 15;
18987
+ _context1.n = 16;
18988
+ return put(setMessagesHasPrevAC(false));
18989
+ case 16:
18990
+ _context1.n = 17;
18991
+ return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
18992
+ case 17:
18993
+ _context1.n = 19;
18994
+ break;
18995
+ case 18:
18996
+ _context1.p = 18;
18948
18997
  _t1 = _context1.v;
18949
18998
  log.error('error in load more messages', _t1);
18950
- case 16:
18999
+ case 19:
18951
19000
  return _context1.a(2);
18952
19001
  }
18953
- }, _marked9$1, null, [[0, 15]]);
19002
+ }, _marked9$1, null, [[0, 18]]);
18954
19003
  }
18955
19004
  function addReaction(action) {
18956
19005
  var payload, channelId, messageId, key, score, reason, enforceUnique, user, channel, _yield$call, _message2, reaction, channelUpdateParam, _t10;
@@ -19374,7 +19423,7 @@ function MessageSaga() {
19374
19423
  return takeLatest(GET_MESSAGES, getMessagesQuery);
19375
19424
  case 7:
19376
19425
  _context18.n = 8;
19377
- return takeLatest(GET_MESSAGE, getMessageQuery);
19426
+ return takeEvery(GET_MESSAGE, getMessageQuery);
19378
19427
  case 8:
19379
19428
  _context18.n = 9;
19380
19429
  return takeLatest(GET_MESSAGES_ATTACHMENTS, getMessageAttachments);
@@ -20979,6 +21028,50 @@ function SvgAvatar(props) {
20979
21028
  })));
20980
21029
  }
20981
21030
 
21031
+ var ATTACHMENTS_CACHE = 'attachments-cache';
21032
+ var isBrowser = typeof window !== 'undefined';
21033
+ var cacheAvailable;
21034
+ if (isBrowser) {
21035
+ cacheAvailable = 'caches' in window;
21036
+ } else {
21037
+ cacheAvailable = 'caches' in global;
21038
+ }
21039
+ var setAttachmentToCache = function setAttachmentToCache(attachmentUrl, attachmentResponse) {
21040
+ if (cacheAvailable) {
21041
+ caches.open(ATTACHMENTS_CACHE).then(function (cache) {
21042
+ try {
21043
+ cache.put(attachmentUrl, attachmentResponse).then(function () {
21044
+ log.info('Cache success');
21045
+ })["catch"](function (e) {
21046
+ log.info('Error on cache attachment ... ', e);
21047
+ caches["delete"](attachmentUrl);
21048
+ });
21049
+ return Promise.resolve();
21050
+ } catch (e) {
21051
+ return Promise.reject(e);
21052
+ }
21053
+ });
21054
+ }
21055
+ };
21056
+ var getAttachmentUrlFromCache = function getAttachmentUrlFromCache(attachmentUrl) {
21057
+ try {
21058
+ if (!cacheAvailable) {
21059
+ log.error('Cache is not available');
21060
+ return Promise.reject(new Error('Cache not available'));
21061
+ }
21062
+ return Promise.resolve(caches.match(attachmentUrl)).then(function (response) {
21063
+ if (response) {
21064
+ return Promise.resolve(response.blob()).then(URL.createObjectURL);
21065
+ } else {
21066
+ log.info('The image or video is not cached', attachmentUrl);
21067
+ return false;
21068
+ }
21069
+ });
21070
+ } catch (e) {
21071
+ return Promise.reject(e);
21072
+ }
21073
+ };
21074
+
20982
21075
  var _templateObject$3, _templateObject2$3, _templateObject3$2, _templateObject4$2;
20983
21076
  var Avatar = function Avatar(_ref) {
20984
21077
  var image = _ref.image,
@@ -20995,6 +21088,9 @@ var Avatar = function Avatar(_ref) {
20995
21088
  var theme = useSelector(themeSelector);
20996
21089
  var _useColor = useColors(),
20997
21090
  iconInactive = _useColor[THEME_COLORS.ICON_INACTIVE];
21091
+ var _useState = useState(image || null),
21092
+ resolvedImageSrc = _useState[0],
21093
+ setResolvedImageSrc = _useState[1];
20998
21094
  var isDeletedUserAvatar = !image && !name;
20999
21095
  var avatarText = '';
21000
21096
  if (!image && name) {
@@ -21011,11 +21107,68 @@ var Avatar = function Avatar(_ref) {
21011
21107
  avatarText = _firstCharOfFirstWord ? String.fromCodePoint(_firstCharOfFirstWord) : '';
21012
21108
  }
21013
21109
  }
21110
+ useEffect(function () {
21111
+ var isCancelled = false;
21112
+ if (!image) {
21113
+ setResolvedImageSrc(null);
21114
+ return;
21115
+ }
21116
+ var isHttpUrl = /^https?:\/\//i.test(image);
21117
+ if (!isHttpUrl) {
21118
+ setResolvedImageSrc(image);
21119
+ return;
21120
+ }
21121
+ getAttachmentUrlFromCache(image).then(function (cachedUrl) {
21122
+ try {
21123
+ if (isCancelled) return Promise.resolve();
21124
+ var _temp2 = function () {
21125
+ if (cachedUrl) {
21126
+ setResolvedImageSrc(cachedUrl);
21127
+ } else {
21128
+ var _temp = _catch(function () {
21129
+ return Promise.resolve(fetch(image, {
21130
+ credentials: 'same-origin'
21131
+ })).then(function (response) {
21132
+ setAttachmentToCache(image, response.clone());
21133
+ setResolvedImageSrc(image);
21134
+ });
21135
+ }, function () {
21136
+ setResolvedImageSrc(image);
21137
+ });
21138
+ if (_temp && _temp.then) return _temp.then(function () {});
21139
+ }
21140
+ }();
21141
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
21142
+ } catch (e) {
21143
+ return Promise.reject(e);
21144
+ }
21145
+ })["catch"](function () {
21146
+ try {
21147
+ if (isCancelled) return Promise.resolve();
21148
+ var _temp3 = _catch(function () {
21149
+ return Promise.resolve(fetch(image, {
21150
+ credentials: 'same-origin'
21151
+ })).then(function (response) {
21152
+ setAttachmentToCache(image, response.clone());
21153
+ setResolvedImageSrc(image);
21154
+ });
21155
+ }, function () {
21156
+ setResolvedImageSrc(image);
21157
+ });
21158
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
21159
+ } catch (e) {
21160
+ return Promise.reject(e);
21161
+ }
21162
+ });
21163
+ return function () {
21164
+ isCancelled = true;
21165
+ };
21166
+ }, [image]);
21014
21167
  return /*#__PURE__*/React__default.createElement(Container$1, {
21015
21168
  border: border,
21016
21169
  marginAuto: marginAuto,
21017
21170
  size: size,
21018
- isImage: !!(image || setDefaultAvatar),
21171
+ isImage: !!(resolvedImageSrc || setDefaultAvatar),
21019
21172
  avatarName: name,
21020
21173
  textSize: textSize,
21021
21174
  onClick: handleAvatarClick,
@@ -21029,7 +21182,7 @@ var Avatar = function Avatar(_ref) {
21029
21182
  }) : (/*#__PURE__*/React__default.createElement("span", null, avatarText)) : (/*#__PURE__*/React__default.createElement(AvatarImage, {
21030
21183
  draggable: false,
21031
21184
  showImage: true,
21032
- src: image,
21185
+ src: resolvedImageSrc || image,
21033
21186
  size: size,
21034
21187
  alt: ''
21035
21188
  })));
@@ -21143,7 +21296,10 @@ var Channel = function Channel(_ref3) {
21143
21296
  channelLastMessageTimeFontSize = _ref3.channelLastMessageTimeFontSize,
21144
21297
  channelLastMessageHeight = _ref3.channelLastMessageHeight,
21145
21298
  channelAvatarSize = _ref3.channelAvatarSize,
21146
- channelAvatarTextSize = _ref3.channelAvatarTextSize;
21299
+ channelAvatarTextSize = _ref3.channelAvatarTextSize,
21300
+ setSelectedChannel = _ref3.setSelectedChannel,
21301
+ getCustomLatestMessage = _ref3.getCustomLatestMessage,
21302
+ doNotShowMessageDeliveryTypes = _ref3.doNotShowMessageDeliveryTypes;
21147
21303
  var _useColor = useColors(),
21148
21304
  accentColor = _useColor[THEME_COLORS.ACCENT],
21149
21305
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -21181,13 +21337,6 @@ var Channel = function Channel(_ref3) {
21181
21337
  statusWidth = _useState3[0],
21182
21338
  setStatusWidth = _useState3[1];
21183
21339
  var avatarName = channel.subject || (isDirectChannel && directChannelUser ? directChannelUser.firstName || directChannelUser.id : isSelfChannel ? 'Me' : '');
21184
- var handleChangeActiveChannel = function handleChangeActiveChannel(chan) {
21185
- if (activeChannel.id !== chan.id) {
21186
- dispatch(sendTypingAC(false));
21187
- dispatch(clearMessagesAC());
21188
- dispatch(switchChannelActionAC(chan));
21189
- }
21190
- };
21191
21340
  var messageAuthorRef = useRef(null);
21192
21341
  var messageTimeAndStatusRef = useRef(null);
21193
21342
  useUpdatePresence(channel, true);
@@ -21272,6 +21421,43 @@ var Channel = function Channel(_ref3) {
21272
21421
  isDirectChannel: isDirectChannel
21273
21422
  });
21274
21423
  }, [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]);
21424
+ var getCustomLatestMessageComponent = useCallback(function (_ref4) {
21425
+ var lastMessage = _ref4.lastMessage,
21426
+ typingOrRecording = _ref4.typingOrRecording,
21427
+ draftMessageText = _ref4.draftMessageText,
21428
+ textSecondary = _ref4.textSecondary,
21429
+ channel = _ref4.channel,
21430
+ channelLastMessageFontSize = _ref4.channelLastMessageFontSize,
21431
+ channelLastMessageHeight = _ref4.channelLastMessageHeight,
21432
+ isDirectChannel = _ref4.isDirectChannel,
21433
+ textPrimary = _ref4.textPrimary,
21434
+ messageAuthorRef = _ref4.messageAuthorRef,
21435
+ contactsMap = _ref4.contactsMap,
21436
+ getFromContacts = _ref4.getFromContacts,
21437
+ warningColor = _ref4.warningColor,
21438
+ user = _ref4.user,
21439
+ MessageText = _ref4.MessageText;
21440
+ return getCustomLatestMessage && getCustomLatestMessage({
21441
+ lastMessage: lastMessage,
21442
+ typingOrRecording: typingOrRecording,
21443
+ draftMessageText: draftMessageText,
21444
+ textSecondary: textSecondary,
21445
+ channel: channel,
21446
+ channelLastMessageFontSize: channelLastMessageFontSize,
21447
+ channelLastMessageHeight: channelLastMessageHeight,
21448
+ isDirectChannel: isDirectChannel,
21449
+ textPrimary: textPrimary,
21450
+ messageAuthorRef: messageAuthorRef,
21451
+ contactsMap: contactsMap,
21452
+ getFromContacts: getFromContacts,
21453
+ warningColor: warningColor,
21454
+ user: user,
21455
+ MessageText: MessageText
21456
+ });
21457
+ }, [getCustomLatestMessage, lastMessage, typingOrRecording, draftMessageText, textSecondary, channel, channelLastMessageFontSize, channelLastMessageHeight, isDirectChannel, textPrimary, messageAuthorRef, contactsMap, getFromContacts, warningColor, user, MessageText]);
21458
+ var isTypeValid = useCallback(function (type) {
21459
+ return !doNotShowMessageDeliveryTypes.includes(type);
21460
+ }, [doNotShowMessageDeliveryTypes]);
21275
21461
  return /*#__PURE__*/React__default.createElement(Container$2, {
21276
21462
  theme: theme,
21277
21463
  selectedChannel: channel.id === activeChannel.id,
@@ -21282,7 +21468,7 @@ var Channel = function Channel(_ref3) {
21282
21468
  selectedChannelBorderRadius: selectedChannelBorderRadius,
21283
21469
  channelsMargin: channelsMargin,
21284
21470
  onClick: function onClick() {
21285
- return handleChangeActiveChannel(channel);
21471
+ return setSelectedChannel(channel);
21286
21472
  },
21287
21473
  hoverBackground: channelHoverBackground || backgroundHovered
21288
21474
  }, showAvatar && (/*#__PURE__*/React__default.createElement(AvatarWrapper, null, /*#__PURE__*/React__default.createElement(Avatar, {
@@ -21308,7 +21494,23 @@ var Channel = function Channel(_ref3) {
21308
21494
  avatarSize: channelAvatarSize
21309
21495
  }, /*#__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, {
21310
21496
  color: notificationsIsMutedIconColor || iconInactive
21311
- }, notificationsIsMutedIcon || /*#__PURE__*/React__default.createElement(SvgUnmuteNotifications, null))), (lastMessage || typingOrRecording.items.length > 0 || draftMessageText) && (/*#__PURE__*/React__default.createElement(LastMessage, {
21497
+ }, notificationsIsMutedIcon || /*#__PURE__*/React__default.createElement(SvgUnmuteNotifications, null))), getCustomLatestMessage ? getCustomLatestMessageComponent({
21498
+ lastMessage: lastMessage,
21499
+ typingOrRecording: typingOrRecording,
21500
+ draftMessageText: draftMessageText,
21501
+ textSecondary: textSecondary,
21502
+ channel: channel,
21503
+ channelLastMessageFontSize: channelLastMessageFontSize || '14px',
21504
+ channelLastMessageHeight: channelLastMessageHeight || '20px',
21505
+ isDirectChannel: isDirectChannel,
21506
+ textPrimary: textPrimary,
21507
+ messageAuthorRef: messageAuthorRef,
21508
+ contactsMap: contactsMap || {},
21509
+ getFromContacts: getFromContacts,
21510
+ warningColor: warningColor,
21511
+ user: user,
21512
+ MessageText: MessageText
21513
+ }) : (lastMessage || typingOrRecording.items.length > 0 || draftMessageText) && (/*#__PURE__*/React__default.createElement(LastMessage, {
21312
21514
  color: textSecondary,
21313
21515
  markedAsUnread: !!(channel.unread || channel.newMessageCount && channel.newMessageCount > 0),
21314
21516
  unreadMentions: !!(channel.newMentionCount && channel.newMentionCount > 0),
@@ -21344,7 +21546,7 @@ var Channel = function Channel(_ref3) {
21344
21546
  }, MessageText)))), /*#__PURE__*/React__default.createElement(ChannelStatus, {
21345
21547
  color: iconInactive,
21346
21548
  ref: messageTimeAndStatusRef
21347
- }, lastMessage && lastMessage.state !== MESSAGE_STATUS.DELETE && (/*#__PURE__*/React__default.createElement(DeliveryIconCont, null, lastMessage && lastMessage.user && lastMessage.user.id === user.id && lastMessage.type !== 'system' && MessageStatusIcon({
21549
+ }, lastMessage && lastMessage.state !== MESSAGE_STATUS.DELETE && (/*#__PURE__*/React__default.createElement(DeliveryIconCont, null, lastMessage && lastMessage.user && lastMessage.user.id === user.id && isTypeValid(lastMessage.type) && MessageStatusIcon({
21348
21550
  messageStatus: lastMessage.deliveryStatus,
21349
21551
  messageStatusDisplayingType: 'ticks',
21350
21552
  readIconColor: accentColor,
@@ -21411,9 +21613,9 @@ var Container$2 = styled.div(_templateObject6$1 || (_templateObject6$1 = _tagged
21411
21613
  return props.channelsMargin || '0 8px';
21412
21614
  }, function (props) {
21413
21615
  return props.selectedChannelBorderRadius || '12px';
21414
- }, function (_ref4) {
21415
- var selectedChannel = _ref4.selectedChannel,
21416
- hoverBackground = _ref4.hoverBackground;
21616
+ }, function (_ref5) {
21617
+ var selectedChannel = _ref5.selectedChannel,
21618
+ hoverBackground = _ref5.hoverBackground;
21417
21619
  return !selectedChannel && "\n background-color: " + hoverBackground + ";\n ";
21418
21620
  }, UserStatus, function (props) {
21419
21621
  return props.selectedChannel ? props.selectedBackgroundColor : props.hoverBackground;
@@ -21428,9 +21630,9 @@ var DraftMessageText = styled.span(_templateObject8$1 || (_templateObject8$1 = _
21428
21630
  });
21429
21631
  var LastMessageAuthor = styled.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) {
21430
21632
  return props.color;
21431
- }, function (_ref5) {
21432
- var typing = _ref5.typing,
21433
- recording = _ref5.recording;
21633
+ }, function (_ref6) {
21634
+ var typing = _ref6.typing,
21635
+ recording = _ref6.recording;
21434
21636
  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 ";
21435
21637
  });
21436
21638
  var Points = styled.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
@@ -21487,7 +21689,7 @@ var MessageTextContainer = styled.div(_templateObject20$1 || (_templateObject20$
21487
21689
 
21488
21690
  var _templateObject$5, _templateObject2$5;
21489
21691
  var SearchInputContainer = styled.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) {
21490
- return props.inline && 'calc(100% - 24px)';
21692
+ return props.width || props.inline && 'calc(100% - 24px)';
21491
21693
  }, function (props) {
21492
21694
  return !props.inline && '0 12px 16px';
21493
21695
  }, ClearTypedText, function (props) {
@@ -21514,14 +21716,16 @@ var ChannelSearch = function ChannelSearch(_ref) {
21514
21716
  borderRadius = _ref.borderRadius,
21515
21717
  searchInputBackgroundColor = _ref.searchInputBackgroundColor,
21516
21718
  searchInputTextColor = _ref.searchInputTextColor,
21517
- fontSize = _ref.fontSize;
21719
+ fontSize = _ref.fontSize,
21720
+ width = _ref.width;
21518
21721
  var _useColor = useColors(),
21519
21722
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
21520
21723
  surface1 = _useColor[THEME_COLORS.SURFACE_1],
21521
21724
  iconInactive = _useColor[THEME_COLORS.ICON_INACTIVE],
21522
21725
  footnoteColor = _useColor[THEME_COLORS.TEXT_FOOTNOTE];
21523
21726
  return /*#__PURE__*/React__default.createElement(SearchInputContainer, {
21524
- inline: inline
21727
+ inline: inline,
21728
+ width: width
21525
21729
  }, /*#__PURE__*/React__default.createElement(StyledSearchSvg, {
21526
21730
  left: !inline ? '22px' : '',
21527
21731
  color: iconInactive
@@ -23302,6 +23506,7 @@ var ChannelList = function ChannelList(_ref) {
23302
23506
  searchInputTextColor = _ref.searchInputTextColor,
23303
23507
  _ref$searchChannelsPo = _ref.searchChannelsPosition,
23304
23508
  searchChannelsPosition = _ref$searchChannelsPo === void 0 ? 'bottom' : _ref$searchChannelsPo,
23509
+ channelSearchWidth = _ref.channelSearchWidth,
23305
23510
  searchInputBorderRadius = _ref.searchInputBorderRadius,
23306
23511
  selectedChannelBorderRadius = _ref.selectedChannelBorderRadius,
23307
23512
  selectedChannelPaddings = _ref.selectedChannelPaddings,
@@ -23348,7 +23553,10 @@ var ChannelList = function ChannelList(_ref) {
23348
23553
  channelAvatarTextSize = _ref.channelAvatarTextSize,
23349
23554
  searchChannelInputFontSize = _ref.searchChannelInputFontSize,
23350
23555
  searchedChannelsTitleFontSize = _ref.searchedChannelsTitleFontSize,
23351
- searchChannelsPadding = _ref.searchChannelsPadding;
23556
+ searchChannelsPadding = _ref.searchChannelsPadding,
23557
+ getCustomLatestMessage = _ref.getCustomLatestMessage,
23558
+ _ref$doNotShowMessage = _ref.doNotShowMessageDeliveryTypes,
23559
+ doNotShowMessageDeliveryTypes = _ref$doNotShowMessage === void 0 ? ['system'] : _ref$doNotShowMessage;
23352
23560
  var _useColor = useColors(),
23353
23561
  background = _useColor[THEME_COLORS.BACKGROUND],
23354
23562
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -23416,11 +23624,6 @@ var ChannelList = function ChannelList(_ref) {
23416
23624
  handleLoadMoreChannels();
23417
23625
  }
23418
23626
  };
23419
- var handleChangeActiveChannel = function handleChangeActiveChannel(chan) {
23420
- if (activeChannel.id !== chan.id) {
23421
- dispatch(switchChannelActionAC(chan));
23422
- }
23423
- };
23424
23627
  var handleCrateChatWithContact = function handleCrateChatWithContact(contact) {
23425
23628
  if (contact) {
23426
23629
  var channelData = {
@@ -23576,6 +23779,13 @@ var ChannelList = function ChannelList(_ref) {
23576
23779
  setListWidthIsSet(false);
23577
23780
  }
23578
23781
  }, [channels]);
23782
+ var setSelectedChannel = function setSelectedChannel(channel) {
23783
+ if (activeChannel.id !== channel.id) {
23784
+ dispatch(sendTypingAC(false));
23785
+ dispatch(clearMessagesAC());
23786
+ dispatch(switchChannelActionAC(channel));
23787
+ }
23788
+ };
23579
23789
  return /*#__PURE__*/React__default.createElement(Container$7, {
23580
23790
  className: className,
23581
23791
  withCustomList: !!List,
@@ -23589,6 +23799,7 @@ var ChannelList = function ChannelList(_ref) {
23589
23799
  padding: searchChannelsPadding
23590
23800
  }, Profile, showSearch && searchChannelsPosition === 'inline' ? (/*#__PURE__*/React__default.createElement(ChannelSearch, {
23591
23801
  inline: true,
23802
+ width: channelSearchWidth,
23592
23803
  borderRadius: searchInputBorderRadius,
23593
23804
  searchValue: searchValue,
23594
23805
  handleSearchValueChange: handleSearchValueChange,
@@ -23610,6 +23821,7 @@ var ChannelList = function ChannelList(_ref) {
23610
23821
  })))), showSearch && searchChannelsPosition === 'bottom' && (/*#__PURE__*/React__default.createElement(ChannelSearch, {
23611
23822
  searchValue: searchValue,
23612
23823
  theme: theme,
23824
+ width: channelSearchWidth,
23613
23825
  borderRadius: searchInputBorderRadius,
23614
23826
  handleSearchValueChange: handleSearchValueChange,
23615
23827
  getMyChannels: getMyChannels,
@@ -23620,13 +23832,13 @@ var ChannelList = function ChannelList(_ref) {
23620
23832
  channels: channels,
23621
23833
  searchedChannels: searchedChannels,
23622
23834
  selectedChannel: activeChannel,
23623
- setSelectedChannel: handleChangeActiveChannel,
23835
+ setSelectedChannel: setSelectedChannel,
23624
23836
  loadMoreChannels: handleLoadMoreChannels,
23625
23837
  searchValue: searchValue
23626
23838
  }, !searchValue ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, channels.map(function (channel) {
23627
23839
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23628
23840
  channel: channel,
23629
- setSelectedChannel: handleChangeActiveChannel,
23841
+ setSelectedChannel: setSelectedChannel,
23630
23842
  key: channel.id
23631
23843
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23632
23844
  theme: theme,
@@ -23652,7 +23864,10 @@ var ChannelList = function ChannelList(_ref) {
23652
23864
  avatarBorderRadius: avatarBorderRadius,
23653
23865
  channel: channel,
23654
23866
  key: channel.id,
23655
- contactsMap: contactsMap
23867
+ contactsMap: contactsMap,
23868
+ setSelectedChannel: setSelectedChannel,
23869
+ getCustomLatestMessage: getCustomLatestMessage,
23870
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23656
23871
  }));
23657
23872
  }))) : 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, {
23658
23873
  color: textSecondary,
@@ -23660,7 +23875,7 @@ var ChannelList = function ChannelList(_ref) {
23660
23875
  }, "Chats & Groups"), searchedChannels.chats_groups.map(function (channel) {
23661
23876
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23662
23877
  channel: channel,
23663
- setSelectedChannel: handleChangeActiveChannel,
23878
+ setSelectedChannel: setSelectedChannel,
23664
23879
  key: channel.id
23665
23880
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23666
23881
  theme: theme,
@@ -23686,7 +23901,10 @@ var ChannelList = function ChannelList(_ref) {
23686
23901
  avatarBorderRadius: avatarBorderRadius,
23687
23902
  channel: channel,
23688
23903
  key: channel.id,
23689
- contactsMap: contactsMap
23904
+ contactsMap: contactsMap,
23905
+ setSelectedChannel: setSelectedChannel,
23906
+ getCustomLatestMessage: getCustomLatestMessage,
23907
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23690
23908
  }));
23691
23909
  }))), !!(searchedChannels.contacts && searchedChannels.contacts.length) && (/*#__PURE__*/React__default.createElement(GroupChannels, null, /*#__PURE__*/React__default.createElement(SearchedChannelsHeader, {
23692
23910
  color: textSecondary,
@@ -23695,7 +23913,7 @@ var ChannelList = function ChannelList(_ref) {
23695
23913
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23696
23914
  contact: contact,
23697
23915
  createChatWithContact: handleCrateChatWithContact,
23698
- setSelectedChannel: handleChangeActiveChannel,
23916
+ setSelectedChannel: setSelectedChannel,
23699
23917
  key: contact.id
23700
23918
  })) : (/*#__PURE__*/React__default.createElement(ContactItem, {
23701
23919
  theme: theme,
@@ -23726,7 +23944,7 @@ var ChannelList = function ChannelList(_ref) {
23726
23944
  }, "Channels"), searchedChannels.channels.map(function (channel) {
23727
23945
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23728
23946
  channel: channel,
23729
- setSelectedChannel: handleChangeActiveChannel,
23947
+ setSelectedChannel: setSelectedChannel,
23730
23948
  key: channel.id
23731
23949
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23732
23950
  theme: theme,
@@ -23752,7 +23970,10 @@ var ChannelList = function ChannelList(_ref) {
23752
23970
  avatarBorderRadius: avatarBorderRadius,
23753
23971
  channel: channel,
23754
23972
  key: channel.id,
23755
- contactsMap: contactsMap
23973
+ contactsMap: contactsMap,
23974
+ setSelectedChannel: setSelectedChannel,
23975
+ getCustomLatestMessage: getCustomLatestMessage,
23976
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23756
23977
  }));
23757
23978
  }))))) : (/*#__PURE__*/React__default.createElement(NoData, {
23758
23979
  color: textSecondary,
@@ -23773,7 +23994,7 @@ var ChannelList = function ChannelList(_ref) {
23773
23994
  }, channels.map(function (channel) {
23774
23995
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23775
23996
  channel: channel,
23776
- setSelectedChannel: handleChangeActiveChannel,
23997
+ setSelectedChannel: setSelectedChannel,
23777
23998
  key: channel.id
23778
23999
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23779
24000
  theme: theme,
@@ -23799,7 +24020,10 @@ var ChannelList = function ChannelList(_ref) {
23799
24020
  avatarBorderRadius: avatarBorderRadius,
23800
24021
  channel: channel,
23801
24022
  key: channel.id,
23802
- contactsMap: contactsMap
24023
+ contactsMap: contactsMap,
24024
+ setSelectedChannel: setSelectedChannel,
24025
+ getCustomLatestMessage: getCustomLatestMessage,
24026
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23803
24027
  }));
23804
24028
  }))), !!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, {
23805
24029
  color: textSecondary,
@@ -23810,7 +24034,7 @@ var ChannelList = function ChannelList(_ref) {
23810
24034
  }, "Chats & Groups"), searchedChannels.chats_groups.map(function (channel) {
23811
24035
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23812
24036
  channel: channel,
23813
- setSelectedChannel: handleChangeActiveChannel,
24037
+ setSelectedChannel: setSelectedChannel,
23814
24038
  key: channel.id
23815
24039
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23816
24040
  theme: theme,
@@ -23836,7 +24060,10 @@ var ChannelList = function ChannelList(_ref) {
23836
24060
  avatarBorderRadius: avatarBorderRadius,
23837
24061
  channel: channel,
23838
24062
  contactsMap: contactsMap,
23839
- key: channel.id
24063
+ key: channel.id,
24064
+ setSelectedChannel: setSelectedChannel,
24065
+ getCustomLatestMessage: getCustomLatestMessage,
24066
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23840
24067
  }));
23841
24068
  }))), !!searchedChannels.channels.length && (/*#__PURE__*/React__default.createElement(GroupChannels, null, /*#__PURE__*/React__default.createElement(SearchedChannelsHeader, {
23842
24069
  color: textSecondary,
@@ -23844,7 +24071,7 @@ var ChannelList = function ChannelList(_ref) {
23844
24071
  }, "Channels"), searchedChannels.channels.map(function (channel) {
23845
24072
  return ListItem ? (/*#__PURE__*/React__default.createElement(ListItem, {
23846
24073
  channel: channel,
23847
- setSelectedChannel: handleChangeActiveChannel,
24074
+ setSelectedChannel: setSelectedChannel,
23848
24075
  key: channel.id
23849
24076
  })) : (/*#__PURE__*/React__default.createElement(Channel, {
23850
24077
  theme: theme,
@@ -23870,7 +24097,10 @@ var ChannelList = function ChannelList(_ref) {
23870
24097
  avatarBorderRadius: avatarBorderRadius,
23871
24098
  channel: channel,
23872
24099
  key: channel.id,
23873
- contactsMap: contactsMap
24100
+ contactsMap: contactsMap,
24101
+ setSelectedChannel: setSelectedChannel,
24102
+ getCustomLatestMessage: getCustomLatestMessage,
24103
+ doNotShowMessageDeliveryTypes: doNotShowMessageDeliveryTypes
23874
24104
  }));
23875
24105
  }))))) : (/*#__PURE__*/React__default.createElement(LoadingWrapper, null, /*#__PURE__*/React__default.createElement(UploadingIcon, {
23876
24106
  color: textFootnote
@@ -23909,7 +24139,7 @@ var NoData = styled.div(_templateObject8$4 || (_templateObject8$4 = _taggedTempl
23909
24139
  return props.color;
23910
24140
  });
23911
24141
  var LoadingWrapper = styled.div(_templateObject9$4 || (_templateObject9$4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n left: calc(50% - 20px);\n top: calc(50% - 20px);\n"])));
23912
- var ChannelListHeader = styled.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) {
24142
+ var ChannelListHeader = styled.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) {
23913
24143
  return props.maxWidth ? props.maxWidth + "px" : 'inherit';
23914
24144
  }, function (props) {
23915
24145
  return props.padding || '12px';
@@ -24523,50 +24753,6 @@ function SvgDeleteChannel(props) {
24523
24753
  })));
24524
24754
  }
24525
24755
 
24526
- var ATTACHMENTS_CACHE = 'attachments-cache';
24527
- var isBrowser = typeof window !== 'undefined';
24528
- var cacheAvailable;
24529
- if (isBrowser) {
24530
- cacheAvailable = 'caches' in window;
24531
- } else {
24532
- cacheAvailable = 'caches' in global;
24533
- }
24534
- var setAttachmentToCache = function setAttachmentToCache(attachmentUrl, attachmentResponse) {
24535
- if (cacheAvailable) {
24536
- caches.open(ATTACHMENTS_CACHE).then(function (cache) {
24537
- try {
24538
- cache.put(attachmentUrl, attachmentResponse).then(function () {
24539
- log.info('Cache success');
24540
- })["catch"](function (e) {
24541
- log.info('Error on cache attachment ... ', e);
24542
- caches["delete"](attachmentUrl);
24543
- });
24544
- return Promise.resolve();
24545
- } catch (e) {
24546
- return Promise.reject(e);
24547
- }
24548
- });
24549
- }
24550
- };
24551
- var getAttachmentUrlFromCache = function getAttachmentUrlFromCache(attachmentUrl) {
24552
- try {
24553
- if (!cacheAvailable) {
24554
- log.error('Cache is not available');
24555
- return Promise.reject(new Error('Cache not available'));
24556
- }
24557
- return Promise.resolve(caches.match(attachmentUrl)).then(function (response) {
24558
- if (response) {
24559
- return Promise.resolve(response.blob()).then(URL.createObjectURL);
24560
- } else {
24561
- log.info('The image or video is not cached', attachmentUrl);
24562
- return false;
24563
- }
24564
- });
24565
- } catch (e) {
24566
- return Promise.reject(e);
24567
- }
24568
- };
24569
-
24570
24756
  var _path$A;
24571
24757
  function _extends$B() {
24572
24758
  return _extends$B = Object.assign ? Object.assign.bind() : function (n) {
@@ -26030,6 +26216,7 @@ var Message = function Message(_ref) {
26030
26216
  var _useColor = useColors(),
26031
26217
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
26032
26218
  overlayBackground = _useColor[THEME_COLORS.OVERLAY_BACKGROUND];
26219
+ var scrollToNewMessage = useSelector(scrollToNewMessageSelector);
26033
26220
  var dispatch = useDispatch();
26034
26221
  var ChatClient = getClient();
26035
26222
  var user = ChatClient.user;
@@ -26048,7 +26235,19 @@ var Message = function Message(_ref) {
26048
26235
  };
26049
26236
  useEffect(function () {
26050
26237
  if (isVisible) {
26238
+ var _channel$lastMessage;
26051
26239
  handleSendReadMarker();
26240
+ if (!channel.isLinkedChannel) {
26241
+ setMessageToVisibleMessagesMap(message);
26242
+ }
26243
+ 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))) {
26244
+ dispatch(scrollToNewMessageAC(false, false, false));
26245
+ dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
26246
+ }
26247
+ } else {
26248
+ if (!channel.isLinkedChannel) {
26249
+ removeMessageFromVisibleMessagesMap(message);
26250
+ }
26052
26251
  }
26053
26252
  }, [isVisible]);
26054
26253
  useDidUpdate(function () {
@@ -31164,7 +31363,7 @@ var validateUrl = function validateUrl(url) {
31164
31363
  }
31165
31364
  };
31166
31365
  var OGMetadata = function OGMetadata(_ref) {
31167
- 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;
31366
+ 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;
31168
31367
  var attachments = _ref.attachments,
31169
31368
  state = _ref.state;
31170
31369
  var _useState = useState(null),
@@ -31176,6 +31375,15 @@ var OGMetadata = function OGMetadata(_ref) {
31176
31375
  var _useState3 = useState(true),
31177
31376
  faviconLoadError = _useState3[0],
31178
31377
  setFaviconLoadError = _useState3[1];
31378
+ var _useState4 = useState(false),
31379
+ imageLoaded = _useState4[0],
31380
+ setImageLoaded = _useState4[1];
31381
+ var _useState5 = useState(0),
31382
+ imageWidth = _useState5[0],
31383
+ setImageWidth = _useState5[1];
31384
+ var _useState6 = useState(0),
31385
+ imageHeight = _useState6[0],
31386
+ setImageHeight = _useState6[1];
31179
31387
  var attachment = useMemo(function () {
31180
31388
  return attachments.find(function (attachment) {
31181
31389
  return attachment.type === attachmentTypes.link;
@@ -31190,7 +31398,7 @@ var OGMetadata = function OGMetadata(_ref) {
31190
31398
  var queryBuilder = new client.MessageLinkOGQueryBuilder(url);
31191
31399
  return Promise.resolve(queryBuilder.build()).then(function (query) {
31192
31400
  return Promise.resolve(query.loadOGData()).then(function (metadata) {
31193
- return Promise.resolve(storeMetadata(url.replace('https://', '').replace('http://', ''), metadata)).then(function () {
31401
+ return Promise.resolve(storeMetadata(url, metadata)).then(function () {
31194
31402
  setMetadata(metadata);
31195
31403
  });
31196
31404
  });
@@ -31213,7 +31421,7 @@ var OGMetadata = function OGMetadata(_ref) {
31213
31421
  if (attachment !== null && attachment !== void 0 && attachment.id && attachment !== null && attachment !== void 0 && attachment.url) {
31214
31422
  var url = attachment === null || attachment === void 0 ? void 0 : attachment.url;
31215
31423
  if (url) {
31216
- getMetadata(url.replace('https://', '').replace('http://', '')).then(function (cachedMetadata) {
31424
+ getMetadata(url).then(function (cachedMetadata) {
31217
31425
  try {
31218
31426
  if (cachedMetadata) {
31219
31427
  setMetadata(cachedMetadata);
@@ -31242,6 +31450,29 @@ var OGMetadata = function OGMetadata(_ref) {
31242
31450
  var _metadata$og, _metadata$og2, _metadata$og2$image, _metadata$og2$image$, _metadata$og3;
31243
31451
  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;
31244
31452
  }, [state, metadata]);
31453
+ useEffect(function () {
31454
+ var _metadata$og4, _metadata$og4$image, _metadata$og4$image$;
31455
+ 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) {
31456
+ var _metadata$og5, _metadata$og5$image, _metadata$og5$image$;
31457
+ var image = new Image();
31458
+ 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;
31459
+ image.onload = function () {
31460
+ var imageWidth = image.width;
31461
+ var imageHeight = image.height;
31462
+ setImageWidth(imageWidth);
31463
+ setImageHeight(imageHeight);
31464
+ setImageLoadError(false);
31465
+ setImageLoaded(true);
31466
+ };
31467
+ image.onerror = function () {
31468
+ setImageLoadError(true);
31469
+ setImageLoaded(true);
31470
+ };
31471
+ }
31472
+ }, [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]);
31473
+ var calculatedImageHeight = useMemo(function () {
31474
+ return imageHeight / (imageWidth / 400);
31475
+ }, [imageWidth, imageHeight]);
31245
31476
  return /*#__PURE__*/React__default.createElement(OGMetadataContainer, {
31246
31477
  showOGMetadata: !!showOGMetadata
31247
31478
  }, /*#__PURE__*/React__default.createElement("div", {
@@ -31249,43 +31480,69 @@ var OGMetadata = function OGMetadata(_ref) {
31249
31480
  window.open(attachment === null || attachment === void 0 ? void 0 : attachment.url, '_blank');
31250
31481
  }
31251
31482
  }, /*#__PURE__*/React__default.createElement(ImageContainer, {
31252
- showOGMetadata: !!showOGMetadata && !imageLoadError
31253
- }, 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, {
31254
- 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,
31483
+ showOGMetadata: !!showOGMetadata && !imageLoadError && imageLoaded,
31484
+ width: 400,
31485
+ height: calculatedImageHeight
31486
+ }, 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, {
31487
+ 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,
31255
31488
  alt: 'OG metadata image',
31256
- onLoad: function onLoad() {
31257
- return setImageLoadError(false);
31258
- },
31259
- onError: function onError() {
31260
- return setImageLoadError(true);
31261
- }
31262
- })) : 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, {
31263
- 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,
31489
+ width: 400,
31490
+ height: calculatedImageHeight
31491
+ })) : null), showOGMetadata && imageLoaded ? (/*#__PURE__*/React__default.createElement(OGText, null, /*#__PURE__*/React__default.createElement(Url, {
31492
+ maxWidth: 400
31493
+ }, ogUrl), metadata !== null && metadata !== void 0 && (_metadata$og9 = metadata.og) !== null && _metadata$og9 !== void 0 && _metadata$og9.title ? (/*#__PURE__*/React__default.createElement(Title, {
31494
+ maxWidth: 400
31495
+ }, 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, {
31496
+ 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,
31264
31497
  onLoad: function onLoad() {
31265
31498
  return setFaviconLoadError(false);
31266
31499
  },
31267
31500
  onError: function onError() {
31268
31501
  return setFaviconLoadError(true);
31269
31502
  }
31270
- })) : 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));
31503
+ })) : 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, {
31504
+ maxWidth: 400
31505
+ }, metadata === null || metadata === void 0 ? void 0 : (_metadata$og12 = metadata.og) === null || _metadata$og12 === void 0 ? void 0 : _metadata$og12.description) : null)) : null));
31271
31506
  };
31272
31507
  var OGMetadataContainer = styled.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) {
31273
31508
  var showOGMetadata = _ref2.showOGMetadata;
31274
31509
  return showOGMetadata ? '0.8rem' : '0';
31275
31510
  });
31276
- var ImageContainer = styled.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) {
31277
- var showOGMetadata = _ref3.showOGMetadata;
31278
- return showOGMetadata ? '0.3rem' : '0';
31511
+ var ImageContainer = styled.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) {
31512
+ var width = _ref3.width;
31513
+ return width ? "\n max-width: " + (width + "px") + ";\n " : "\n max-width: 100%;\n width: 100%;\n ";
31279
31514
  }, function (_ref4) {
31280
- var showOGMetadata = _ref4.showOGMetadata;
31281
- return showOGMetadata ? '200px' : '0';
31515
+ var height = _ref4.height,
31516
+ showOGMetadata = _ref4.showOGMetadata;
31517
+ return height ? "\n max-height: " + (height + "px") + ";\n height: " + (showOGMetadata ? height + "px" : '0') + ";\n " : "\n max-height: 200px;\n height: " + (showOGMetadata ? '200px' : '0') + ";\n ";
31518
+ }, function (_ref5) {
31519
+ var showOGMetadata = _ref5.showOGMetadata;
31520
+ return showOGMetadata ? 1 : 0;
31521
+ }, function (_ref6) {
31522
+ var showOGMetadata = _ref6.showOGMetadata;
31523
+ return showOGMetadata ? '0.3rem' : '0';
31524
+ });
31525
+ var OGText = styled.div(_templateObject3$p || (_templateObject3$p = _taggedTemplateLiteralLoose(["\n padding: 0.5rem;\n margin: 0;\n transition: all 0.2s ease;\n"])));
31526
+ var Url = styled.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) {
31527
+ var maxWidth = _ref7.maxWidth;
31528
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31529
+ });
31530
+ var Title = styled.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) {
31531
+ var maxWidth = _ref8.maxWidth;
31532
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31282
31533
  });
31283
- var OGText = styled.div(_templateObject3$p || (_templateObject3$p = _taggedTemplateLiteralLoose(["\n width: 80%;\n padding: 0.5rem;\n margin: 0;\n"])));
31284
- var Url = styled.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"])));
31285
- var Title = styled.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"])));
31286
- var Desc = styled.p(_templateObject6$f || (_templateObject6$f = _taggedTemplateLiteralLoose(["\n font-weight: normal;\n font-size: 13px;\n padding: 0;\n"])));
31287
- var Img = styled.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"])));
31288
- var Favicon = styled.img(_templateObject8$c || (_templateObject8$c = _taggedTemplateLiteralLoose(["\n width: 24px;\n height: 24px;\n object-fit: contain;\n margin-right: 4px;\n"])));
31534
+ var Desc = styled.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) {
31535
+ var maxWidth = _ref9.maxWidth;
31536
+ return maxWidth && "\n max-width: " + (maxWidth + "px") + ";\n ";
31537
+ });
31538
+ var Img = styled.img(_templateObject7$d || (_templateObject7$d = _taggedTemplateLiteralLoose(["\n ", "\n ", "\n object-fit: cover;\n transition: height 0.2s ease;\n"])), function (_ref0) {
31539
+ var width = _ref0.width;
31540
+ return width && "\n max-width: " + (width + "px") + ";\n min-width: " + (width + "px") + ";\n width: " + (width + "px") + ";\n ";
31541
+ }, function (_ref1) {
31542
+ var height = _ref1.height;
31543
+ return height && "\n max-height: " + (height + "px") + ";\n min-height: " + (height + "px") + ";\n height: " + (height + "px") + ";\n ";
31544
+ });
31545
+ var Favicon = styled.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"])));
31289
31546
 
31290
31547
  var _templateObject$B, _templateObject2$w, _templateObject3$q, _templateObject4$m, _templateObject5$i;
31291
31548
  var MessageBody = function MessageBody(_ref) {
@@ -32625,14 +32882,6 @@ var HiddenMessageProperty;
32625
32882
  })(HiddenMessageProperty || (HiddenMessageProperty = {}));
32626
32883
 
32627
32884
  var _templateObject$D, _templateObject2$y, _templateObject3$s, _templateObject4$o, _templateObject5$k, _templateObject6$h, _templateObject7$f, _templateObject8$e, _templateObject9$c, _templateObject0$b, _templateObject1$8;
32628
- var loadFromServer = false;
32629
- var loadDirection = '';
32630
- var nextDisable = false;
32631
- var prevDisable = false;
32632
- var scrollToBottom = false;
32633
- var shouldLoadMessages;
32634
- var loading = false;
32635
- var messagesIndexMap = {};
32636
32885
  var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
32637
32886
  var lastIndex = _ref.lastIndex,
32638
32887
  currentMessageDate = _ref.currentMessageDate,
@@ -32842,6 +33091,7 @@ var MessageList = function MessageList(_ref2) {
32842
33091
  var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, shallowEqual);
32843
33092
  var scrollToRepliedMessage = useSelector(scrollToMessageSelector, shallowEqual);
32844
33093
  var scrollToMessageHighlight = useSelector(scrollToMessageHighlightSelector, shallowEqual);
33094
+ var scrollToMessageBehavior = useSelector(scrollToMessageBehaviorSelector, shallowEqual);
32845
33095
  var browserTabIsActive = useSelector(browserTabIsActiveSelector, shallowEqual);
32846
33096
  var hasNextMessages = useSelector(messagesHasNextSelector, shallowEqual);
32847
33097
  var hasPrevMessages = useSelector(messagesHasPrevSelector, shallowEqual);
@@ -32882,35 +33132,41 @@ var MessageList = function MessageList(_ref2) {
32882
33132
  setShouldPreserveScroll = _useState0[1];
32883
33133
  var messageForReply = {};
32884
33134
  var attachmentsSelected = false;
32885
- var messageTopDateRef = useRef(null);
33135
+ var _useState1 = useState(''),
33136
+ topDateLabel = _useState1[0],
33137
+ setTopDateLabel = _useState1[1];
32886
33138
  var scrollRef = useRef(null);
33139
+ var loadFromServerRef = useRef(false);
33140
+ var loadDirectionRef = useRef('');
33141
+ var nextDisableRef = useRef(false);
33142
+ var prevDisableRef = useRef(false);
33143
+ var scrollToBottomRef = useRef(false);
33144
+ var shouldLoadMessagesRef = useRef('');
33145
+ var loadingRef = useRef(false);
33146
+ var messagesIndexMapRef = useRef({});
33147
+ var scrollRafRef = useRef(null);
33148
+ var loadingMessagesTimeoutRef = useRef(null);
32887
33149
  var renderTopDate = function renderTopDate() {
32888
- var dateLabels = document.querySelectorAll('.divider');
32889
- var messageTopDate = messageTopDateRef.current;
33150
+ var container = scrollRef.current;
33151
+ if (!container) return;
33152
+ var dateLabels = container.querySelectorAll('.divider');
32890
33153
  var text = '';
32891
33154
  for (var i = dateLabels.length - 1; i >= 0; i--) {
32892
- var _dateLabel$firstChild;
32893
33155
  var dateLabel = dateLabels[i];
32894
- var span = dateLabel === null || dateLabel === void 0 ? void 0 : (_dateLabel$firstChild = dateLabel.firstChild) === null || _dateLabel$firstChild === void 0 ? void 0 : _dateLabel$firstChild.firstChild;
32895
- if (!text && scrollRef.current.scrollTop > dateLabel.offsetTop) {
32896
- text = span && span.innerText;
32897
- span.style.display = 'none';
32898
- } else {
32899
- span.style.display = 'block';
33156
+ if (!text && container.scrollTop > dateLabel.offsetTop - 28) {
33157
+ var span = (dateLabel === null || dateLabel === void 0 ? void 0 : dateLabel.firstChild) && dateLabel.firstChild.firstChild;
33158
+ text = span ? span.innerText || '' : '';
33159
+ setTopDateLabel(text);
33160
+ break;
32900
33161
  }
32901
33162
  }
32902
- if (text) {
32903
- messageTopDate.innerText = text;
32904
- messageTopDate.style.display = 'inline';
32905
- } else {
32906
- messageTopDate.style.display = 'none';
32907
- }
32908
33163
  };
32909
- var handleMessagesListScroll = useCallback(function (event) {
33164
+ var handleMessagesListScroll = useCallback(function () {
32910
33165
  try {
33166
+ var target = scrollRef.current;
33167
+ if (!target) return Promise.resolve();
32911
33168
  if (scrollToMentionedMessage) {
32912
- var _target = event.target;
32913
- if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
33169
+ if (target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
32914
33170
  dispatch(showScrollToNewMessageButtonAC(true));
32915
33171
  } else {
32916
33172
  dispatch(showScrollToNewMessageButtonAC(false));
@@ -32923,7 +33179,6 @@ var MessageList = function MessageList(_ref2) {
32923
33179
  setShowTopDate(false);
32924
33180
  }, 1000);
32925
33181
  renderTopDate();
32926
- var target = event.target;
32927
33182
  var forceLoadPrevMessages = false;
32928
33183
  if (-target.scrollTop + target.offsetHeight + 30 > target.scrollHeight) {
32929
33184
  forceLoadPrevMessages = true;
@@ -32938,51 +33193,68 @@ var MessageList = function MessageList(_ref2) {
32938
33193
  }
32939
33194
  if (scrollToReply) {
32940
33195
  target.scrollTop = scrollToReply;
32941
- } else {
32942
- if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
32943
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
32944
- if (loading || messagesLoading === LOADING_STATE.LOADING || prevDisable) {
32945
- shouldLoadMessages = 'prev';
32946
- } else {
32947
- if (shouldLoadMessages === 'prev') {
32948
- shouldLoadMessages = '';
32949
- }
32950
- loadDirection = 'prev';
32951
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
32952
- if (!getHasPrevCached()) {
32953
- loadFromServer = true;
32954
- }
32955
- nextDisable = true;
33196
+ return Promise.resolve();
33197
+ }
33198
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33199
+ var hasIndex = typeof currentIndex === 'number';
33200
+ if (hasIndex && currentIndex < 15 || forceLoadPrevMessages) {
33201
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
33202
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || prevDisableRef.current) {
33203
+ shouldLoadMessagesRef.current = 'prev';
33204
+ } else {
33205
+ if (shouldLoadMessagesRef.current === 'prev') {
33206
+ shouldLoadMessagesRef.current = '';
33207
+ }
33208
+ loadDirectionRef.current = 'prev';
33209
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33210
+ if (!getHasPrevCached()) {
33211
+ loadFromServerRef.current = true;
32956
33212
  }
33213
+ nextDisableRef.current = true;
32957
33214
  }
32958
33215
  }
32959
- if (messagesIndexMap[lastVisibleMessageId] >= messages.length - 15 || target.scrollTop === 0) {
32960
- if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
32961
- if (loading || messagesLoading === LOADING_STATE.LOADING || nextDisable) {
32962
- shouldLoadMessages = 'next';
32963
- } else {
32964
- if (shouldLoadMessages === 'next') {
32965
- shouldLoadMessages = '';
32966
- }
32967
- loadDirection = 'next';
32968
- prevDisable = true;
32969
- handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33216
+ }
33217
+ if (hasIndex && currentIndex >= messages.length - 15 || target.scrollTop === 0) {
33218
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
33219
+ if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || nextDisableRef.current) {
33220
+ shouldLoadMessagesRef.current = 'next';
33221
+ } else {
33222
+ if (shouldLoadMessagesRef.current === 'next') {
33223
+ shouldLoadMessagesRef.current = '';
32970
33224
  }
33225
+ loadDirectionRef.current = 'next';
33226
+ prevDisableRef.current = true;
33227
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
32971
33228
  }
32972
33229
  }
32973
- if (messagesIndexMap[lastVisibleMessageId] > messages.length - 10) {
32974
- nextDisable = false;
32975
- }
33230
+ }
33231
+ if (hasIndex && currentIndex > messages.length - 10) {
33232
+ nextDisableRef.current = false;
32976
33233
  }
32977
33234
  return Promise.resolve();
32978
33235
  } catch (e) {
32979
33236
  return Promise.reject(e);
32980
33237
  }
32981
- }, [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]);
33238
+ }, [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]);
33239
+ var onScroll = useCallback(function () {
33240
+ if (scrollRafRef.current !== null) return;
33241
+ scrollRafRef.current = window.requestAnimationFrame(function () {
33242
+ scrollRafRef.current = null;
33243
+ handleMessagesListScroll();
33244
+ });
33245
+ }, [handleMessagesListScroll]);
33246
+ useEffect(function () {
33247
+ return function () {
33248
+ if (scrollRafRef.current !== null) {
33249
+ cancelAnimationFrame(scrollRafRef.current);
33250
+ scrollRafRef.current = null;
33251
+ }
33252
+ };
33253
+ }, []);
32982
33254
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
32983
33255
  try {
32984
- prevDisable = true;
32985
- nextDisable = true;
33256
+ prevDisableRef.current = true;
33257
+ nextDisableRef.current = true;
32986
33258
  if (messages.findIndex(function (msg) {
32987
33259
  return msg.id === messageId;
32988
33260
  }) >= 10) {
@@ -32996,8 +33268,8 @@ var MessageList = function MessageList(_ref2) {
32996
33268
  var positiveValue = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2 < 0 ? repliedMessage.offsetTop - scrollRef.current.offsetHeight * -1 : repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
32997
33269
  setTimeout(function () {
32998
33270
  repliedMessage.classList.remove('highlight');
32999
- prevDisable = false;
33000
- nextDisable = false;
33271
+ prevDisableRef.current = false;
33272
+ nextDisableRef.current = false;
33001
33273
  }, 1000 + positiveValue * 0.1);
33002
33274
  }
33003
33275
  } else {
@@ -33018,10 +33290,10 @@ var MessageList = function MessageList(_ref2) {
33018
33290
  var hasNextCached = getHasNextCached();
33019
33291
  if (messagesLoading === LOADING_STATE.LOADED && connectionStatus === CONNECTION_STATUS.CONNECTED) {
33020
33292
  if (direction === MESSAGE_LOAD_DIRECTION.PREV && firstMessageId && (hasPrevMessages || hasPrevCached)) {
33021
- loading = true;
33293
+ loadingRef.current = true;
33022
33294
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, firstMessageId, hasPrevMessages));
33023
33295
  } else if (direction === MESSAGE_LOAD_DIRECTION.NEXT && lastMessageId && (hasNextMessages || hasNextCached)) {
33024
- loading = true;
33296
+ loadingRef.current = true;
33025
33297
  dispatch(loadMoreMessagesAC(channel.id, limit, direction, lastMessageId, hasNextMessages));
33026
33298
  }
33027
33299
  }
@@ -33052,39 +33324,42 @@ var MessageList = function MessageList(_ref2) {
33052
33324
  setIsDragging(false);
33053
33325
  }
33054
33326
  };
33327
+ var readDroppedFiles = function readDroppedFiles(e) {
33328
+ return new Promise(function (resolve) {
33329
+ var fileList = Object.values(e.dataTransfer.files);
33330
+ var attachmentsFiles = [];
33331
+ var readFiles = 0;
33332
+ var errorCount = 0;
33333
+ fileList.forEach(function (attachment) {
33334
+ var fileReader = new FileReader();
33335
+ fileReader.onload = function (event) {
33336
+ var file = event.target.result;
33337
+ attachmentsFiles.push({
33338
+ name: attachment.name,
33339
+ data: file,
33340
+ type: attachment.type
33341
+ });
33342
+ readFiles++;
33343
+ if (readFiles + errorCount === fileList.length) {
33344
+ resolve(attachmentsFiles);
33345
+ }
33346
+ };
33347
+ fileReader.onerror = function () {
33348
+ errorCount++;
33349
+ if (readFiles + errorCount === fileList.length) {
33350
+ resolve(attachmentsFiles);
33351
+ }
33352
+ };
33353
+ fileReader.readAsDataURL(attachment);
33354
+ });
33355
+ });
33356
+ };
33055
33357
  var handleDropFile = function handleDropFile(e) {
33056
33358
  e.preventDefault();
33057
33359
  e.stopPropagation();
33058
33360
  setIsDragging(false);
33059
33361
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33060
- var fileList = Object.values(e.dataTransfer.files);
33061
- new Promise(function (resolve) {
33062
- var attachmentsFiles = [];
33063
- var readFiles = 0;
33064
- var errorCount = 0;
33065
- fileList.forEach(function (attachment) {
33066
- var fileReader = new FileReader();
33067
- fileReader.onload = function (event) {
33068
- var file = event.target.result;
33069
- attachmentsFiles.push({
33070
- name: attachment.name,
33071
- data: file,
33072
- type: attachment.type
33073
- });
33074
- readFiles++;
33075
- if (readFiles + errorCount === fileList.length) {
33076
- resolve(attachmentsFiles);
33077
- }
33078
- };
33079
- fileReader.onerror = function () {
33080
- errorCount++;
33081
- if (readFiles + errorCount === fileList.length) {
33082
- resolve(attachmentsFiles);
33083
- }
33084
- };
33085
- fileReader.readAsDataURL(attachment);
33086
- });
33087
- }).then(function (result) {
33362
+ readDroppedFiles(e).then(function (result) {
33088
33363
  dispatch(setDraggedAttachmentsAC(result, 'file'));
33089
33364
  })["catch"](function (error) {
33090
33365
  console.error('Error in handleDropFile:', error);
@@ -33097,34 +33372,7 @@ var MessageList = function MessageList(_ref2) {
33097
33372
  e.stopPropagation();
33098
33373
  setIsDragging(false);
33099
33374
  if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
33100
- var fileList = Object.values(e.dataTransfer.files);
33101
- new Promise(function (resolve) {
33102
- var attachmentsFiles = [];
33103
- var readFiles = 0;
33104
- var errorCount = 0;
33105
- fileList.forEach(function (attachment) {
33106
- var fileReader = new FileReader();
33107
- fileReader.onload = function (event) {
33108
- var file = event.target.result;
33109
- attachmentsFiles.push({
33110
- name: attachment.name,
33111
- data: file,
33112
- type: attachment.type
33113
- });
33114
- readFiles++;
33115
- if (readFiles + errorCount === fileList.length) {
33116
- resolve(attachmentsFiles);
33117
- }
33118
- };
33119
- fileReader.onerror = function () {
33120
- errorCount++;
33121
- if (readFiles + errorCount === fileList.length) {
33122
- resolve(attachmentsFiles);
33123
- }
33124
- };
33125
- fileReader.readAsDataURL(attachment);
33126
- });
33127
- }).then(function (result) {
33375
+ readDroppedFiles(e).then(function (result) {
33128
33376
  dispatch(setDraggedAttachmentsAC(result, 'media'));
33129
33377
  })["catch"](function (error) {
33130
33378
  console.error('Error in handleDropMedia:', error);
@@ -33136,21 +33384,21 @@ var MessageList = function MessageList(_ref2) {
33136
33384
  var _messages, _channel$lastMessage2;
33137
33385
  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) {
33138
33386
  dispatch(showScrollToNewMessageButtonAC(false));
33139
- prevDisable = false;
33387
+ prevDisableRef.current = false;
33140
33388
  }
33141
33389
  }, [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]);
33142
33390
  useEffect(function () {
33143
33391
  if (scrollToRepliedMessage) {
33144
- loading = false;
33392
+ loadingRef.current = false;
33145
33393
  scrollRef.current.style.scrollBehavior = 'inherit';
33146
33394
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
33147
33395
  if (repliedMessage) {
33148
33396
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
33149
33397
  scrollRef.current.scrollTo({
33150
33398
  top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
33151
- behavior: 'smooth'
33399
+ behavior: scrollToMessageBehavior
33152
33400
  });
33153
- scrollRef.current.style.scrollBehavior = 'smooth';
33401
+ scrollRef.current.style.scrollBehavior = scrollToMessageBehavior;
33154
33402
  if (!channel.backToLinkedChannel && scrollToMessageHighlight) {
33155
33403
  repliedMessage && repliedMessage.classList.add('highlight');
33156
33404
  }
@@ -33160,9 +33408,9 @@ var MessageList = function MessageList(_ref2) {
33160
33408
  var _repliedMessage = document.getElementById(scrollToRepliedMessage);
33161
33409
  _repliedMessage && _repliedMessage.classList.remove('highlight');
33162
33410
  }
33163
- prevDisable = false;
33411
+ prevDisableRef.current = false;
33164
33412
  setScrollToReply(null);
33165
- scrollRef.current.style.scrollBehavior = 'smooth';
33413
+ scrollRef.current.style.scrollBehavior = 'instant';
33166
33414
  }, 1000 + positiveValue * 0.1);
33167
33415
  }
33168
33416
  dispatch(setScrollToMessagesAC(null));
@@ -33178,15 +33426,15 @@ var MessageList = function MessageList(_ref2) {
33178
33426
  });
33179
33427
  }
33180
33428
  } else {
33181
- nextDisable = true;
33182
- prevDisable = true;
33429
+ nextDisableRef.current = true;
33430
+ prevDisableRef.current = true;
33183
33431
  scrollRef.current.scrollTo({
33184
33432
  top: 0,
33185
33433
  behavior: 'smooth'
33186
33434
  });
33187
33435
  dispatch(showScrollToNewMessageButtonAC(false));
33188
33436
  setTimeout(function () {
33189
- prevDisable = false;
33437
+ prevDisableRef.current = false;
33190
33438
  }, 800);
33191
33439
  }
33192
33440
  }
@@ -33204,11 +33452,18 @@ var MessageList = function MessageList(_ref2) {
33204
33452
  useEffect(function () {
33205
33453
  setHasNextCached(false);
33206
33454
  setHasPrevCached(false);
33455
+ messagesIndexMapRef.current = {};
33456
+ loadFromServerRef.current = false;
33457
+ loadDirectionRef.current = '';
33458
+ nextDisableRef.current = false;
33459
+ prevDisableRef.current = false;
33460
+ shouldLoadMessagesRef.current = '';
33461
+ loadingRef.current = false;
33207
33462
  if (channel.backToLinkedChannel) {
33208
33463
  var visibleMessages = getVisibleMessagesMap();
33209
33464
  var visibleMessagesIds = Object.keys(visibleMessages);
33210
33465
  var messageId = visibleMessagesIds[visibleMessagesIds.length - 1];
33211
- dispatch(getMessagesAC(channel, undefined, messageId));
33466
+ dispatch(getMessagesAC(channel, undefined, messageId, undefined, undefined, undefined, 'instant'));
33212
33467
  setUnreadMessageId(messageId);
33213
33468
  } else {
33214
33469
  if (!channel.isLinkedChannel) {
@@ -33231,9 +33486,9 @@ var MessageList = function MessageList(_ref2) {
33231
33486
  }
33232
33487
  setPreviousScrollTop(0);
33233
33488
  setShouldPreserveScroll(false);
33234
- nextDisable = false;
33235
- prevDisable = false;
33236
- scrollToBottom = true;
33489
+ nextDisableRef.current = false;
33490
+ prevDisableRef.current = false;
33491
+ scrollToBottomRef.current = true;
33237
33492
  setAllowEditDeleteIncomingMessage(allowEditDeleteIncomingMessage);
33238
33493
  }, [channel.id]);
33239
33494
  useEffect(function () {
@@ -33248,7 +33503,7 @@ var MessageList = function MessageList(_ref2) {
33248
33503
  setUnreadMessageId('');
33249
33504
  }
33250
33505
  }
33251
- }, [messages]);
33506
+ }, [messages, hiddenMessagesProperties, user === null || user === void 0 ? void 0 : user.id]);
33252
33507
  useEffect(function () {
33253
33508
  if (scrollRef.current) {
33254
33509
  var isAtBottom = scrollRef.current.scrollTop > -50;
@@ -33257,35 +33512,40 @@ var MessageList = function MessageList(_ref2) {
33257
33512
  setShouldPreserveScroll(true);
33258
33513
  }
33259
33514
  }
33260
- if (loading) {
33261
- if (loadDirection !== 'next') {
33515
+ if (loadingRef.current) {
33516
+ if (loadDirectionRef.current !== 'next') {
33262
33517
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
33263
33518
  if (lastVisibleMessage) {
33264
33519
  scrollRef.current.style.scrollBehavior = 'inherit';
33265
33520
  scrollRef.current.scrollTop = lastVisibleMessage.offsetTop;
33266
33521
  scrollRef.current.style.scrollBehavior = 'smooth';
33267
33522
  }
33268
- if (loadFromServer) {
33269
- setTimeout(function () {
33270
- loading = false;
33271
- loadFromServer = false;
33272
- nextDisable = false;
33273
- if (shouldLoadMessages === 'prev' && messagesIndexMap[lastVisibleMessageId] < 15) {
33523
+ if (loadFromServerRef.current) {
33524
+ var timeout = setTimeout(function () {
33525
+ loadingRef.current = false;
33526
+ loadFromServerRef.current = false;
33527
+ nextDisableRef.current = false;
33528
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33529
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33274
33530
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33275
33531
  }
33276
- if (shouldLoadMessages === 'next' && messagesIndexMap[lastVisibleMessageId] > messages.length - 15) {
33532
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33277
33533
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33278
33534
  }
33279
33535
  }, 50);
33536
+ if (loadingMessagesTimeoutRef.current) {
33537
+ clearTimeout(loadingMessagesTimeoutRef.current);
33538
+ }
33539
+ loadingMessagesTimeoutRef.current = timeout;
33280
33540
  } else {
33281
- loading = false;
33282
- if (shouldLoadMessages === 'prev') {
33541
+ loadingRef.current = false;
33542
+ if (shouldLoadMessagesRef.current === 'prev') {
33283
33543
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33284
- shouldLoadMessages = '';
33544
+ shouldLoadMessagesRef.current = '';
33285
33545
  }
33286
- if (shouldLoadMessages === 'next') {
33546
+ if (shouldLoadMessagesRef.current === 'next') {
33287
33547
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33288
- shouldLoadMessages = '';
33548
+ shouldLoadMessagesRef.current = '';
33289
33549
  }
33290
33550
  }
33291
33551
  } else {
@@ -33295,22 +33555,26 @@ var MessageList = function MessageList(_ref2) {
33295
33555
  scrollRef.current.scrollTop = _lastVisibleMessage.offsetTop - scrollRef.current.offsetHeight + _lastVisibleMessage.offsetHeight;
33296
33556
  scrollRef.current.style.scrollBehavior = 'smooth';
33297
33557
  }
33298
- loading = false;
33299
- prevDisable = false;
33300
- if (shouldLoadMessages === 'prev') {
33558
+ loadingRef.current = false;
33559
+ prevDisableRef.current = false;
33560
+ if (shouldLoadMessagesRef.current === 'prev') {
33301
33561
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33302
- shouldLoadMessages = '';
33562
+ shouldLoadMessagesRef.current = '';
33303
33563
  }
33304
- if (shouldLoadMessages === 'next') {
33564
+ if (shouldLoadMessagesRef.current === 'next') {
33305
33565
  handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33306
- shouldLoadMessages = '';
33566
+ shouldLoadMessagesRef.current = '';
33307
33567
  }
33308
33568
  }
33309
33569
  }
33310
33570
  renderTopDate();
33311
- if (scrollToBottom) {
33312
- dispatch(scrollToNewMessageAC(true));
33313
- scrollToBottom = false;
33571
+ if (scrollToBottomRef.current) {
33572
+ if (channel.backToLinkedChannel) {
33573
+ dispatch(scrollToNewMessageAC(false));
33574
+ } else {
33575
+ dispatch(scrollToNewMessageAC(true));
33576
+ }
33577
+ scrollToBottomRef.current = false;
33314
33578
  }
33315
33579
  if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
33316
33580
  requestAnimationFrame(function () {
@@ -33323,13 +33587,43 @@ var MessageList = function MessageList(_ref2) {
33323
33587
  setPreviousScrollTop(0);
33324
33588
  });
33325
33589
  }
33590
+ return function () {
33591
+ if (loadingMessagesTimeoutRef.current) {
33592
+ clearTimeout(loadingMessagesTimeoutRef.current);
33593
+ }
33594
+ };
33326
33595
  }, [messages]);
33596
+ useEffect(function () {
33597
+ if (messagesLoading === LOADING_STATE.LOADED) {
33598
+ var timeout = setTimeout(function () {
33599
+ loadingRef.current = false;
33600
+ loadFromServerRef.current = false;
33601
+ nextDisableRef.current = false;
33602
+ var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
33603
+ if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
33604
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
33605
+ }
33606
+ if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
33607
+ handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
33608
+ }
33609
+ }, 50);
33610
+ if (loadingMessagesTimeoutRef.current) {
33611
+ clearTimeout(loadingMessagesTimeoutRef.current);
33612
+ }
33613
+ loadingMessagesTimeoutRef.current = timeout;
33614
+ }
33615
+ return function () {
33616
+ if (loadingMessagesTimeoutRef.current) {
33617
+ clearTimeout(loadingMessagesTimeoutRef.current);
33618
+ }
33619
+ };
33620
+ }, [messagesLoading, messages, lastVisibleMessageId]);
33327
33621
  useEffect(function () {
33328
33622
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
33329
33623
  if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
33330
- loading = false;
33331
- prevDisable = false;
33332
- nextDisable = false;
33624
+ loadingRef.current = false;
33625
+ prevDisableRef.current = false;
33626
+ nextDisableRef.current = false;
33333
33627
  clearMessagesMap();
33334
33628
  removeAllMessages();
33335
33629
  if (channel.id) {
@@ -33338,7 +33632,8 @@ var MessageList = function MessageList(_ref2) {
33338
33632
  }
33339
33633
  }, [connectionStatus]);
33340
33634
  useEffect(function () {
33341
- if (channel.newMessageCount && channel.newMessageCount > 0 && getUnreadScrollTo()) {
33635
+ var unreadScrollTo = getUnreadScrollTo();
33636
+ if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
33342
33637
  if (scrollRef.current) {
33343
33638
  scrollRef.current.style.scrollBehavior = 'inherit';
33344
33639
  }
@@ -33351,7 +33646,14 @@ var MessageList = function MessageList(_ref2) {
33351
33646
  setUnreadScrollTo(false);
33352
33647
  }
33353
33648
  }
33354
- });
33649
+ }, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
33650
+ useEffect(function () {
33651
+ return function () {
33652
+ if (hideTopDateTimeout.current) {
33653
+ clearTimeout(hideTopDateTimeout.current);
33654
+ }
33655
+ };
33656
+ }, []);
33355
33657
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isDragging && !(attachmentsPreview !== null && attachmentsPreview !== void 0 && attachmentsPreview.show && mediaFile) && (/*#__PURE__*/React__default.createElement(DragAndDropContainer, {
33356
33658
  id: 'draggingContainer',
33357
33659
  draggable: true,
@@ -33386,7 +33688,7 @@ var MessageList = function MessageList(_ref2) {
33386
33688
  backgroundColor: surface1,
33387
33689
  draggable: true,
33388
33690
  iconColor: accentColor
33389
- }, /*#__PURE__*/React__default.createElement(SvgChoseMedia, null)), "Drag & drop to send as media")))), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, showTopFixedDate && (/*#__PURE__*/React__default.createElement(MessageTopDate, {
33691
+ }, /*#__PURE__*/React__default.createElement(SvgChoseMedia, null)), "Drag & drop to send as media")))), /*#__PURE__*/React__default.createElement(React__default.Fragment, null, showTopFixedDate && topDateLabel && (/*#__PURE__*/React__default.createElement(MessageTopDate, {
33390
33692
  visible: showTopDate,
33391
33693
  dateDividerFontSize: dateDividerFontSize,
33392
33694
  dateDividerTextColor: dateDividerTextColor || textOnPrimary,
@@ -33394,14 +33696,12 @@ var MessageList = function MessageList(_ref2) {
33394
33696
  dateDividerBackgroundColor: dateDividerBackgroundColor || overlayBackground,
33395
33697
  dateDividerBorderRadius: dateDividerBorderRadius,
33396
33698
  topOffset: scrollRef && scrollRef.current && scrollRef.current.offsetTop
33397
- }, /*#__PURE__*/React__default.createElement("span", {
33398
- ref: messageTopDateRef
33399
- }))), /*#__PURE__*/React__default.createElement(Container$h, {
33699
+ }, /*#__PURE__*/React__default.createElement("span", null, topDateLabel))), /*#__PURE__*/React__default.createElement(Container$h, {
33400
33700
  id: 'scrollableDiv',
33401
33701
  className: isScrolling ? 'show-scrollbar' : '',
33402
33702
  ref: scrollRef,
33403
33703
  stopScrolling: stopScrolling,
33404
- onScroll: handleMessagesListScroll,
33704
+ onScroll: onScroll,
33405
33705
  onMouseEnter: function onMouseEnter() {
33406
33706
  return setIsScrolling(true);
33407
33707
  },
@@ -33420,8 +33720,10 @@ var MessageList = function MessageList(_ref2) {
33420
33720
  var prevMessage = messages[index - 1];
33421
33721
  var nextMessage = messages[index + 1];
33422
33722
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
33423
- messagesIndexMap[message.id] = index;
33424
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33723
+ messagesIndexMapRef.current[message.id] = index;
33724
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
33725
+ key: message.id || message.tid
33726
+ }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
33425
33727
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
33426
33728
  theme: theme,
33427
33729
  lastIndex: false,
@@ -37360,7 +37662,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
37360
37662
  if (attachments.length) {
37361
37663
  var videoAttachment = false;
37362
37664
  attachments.forEach(function (att) {
37363
- if (att.type === 'video' || att.data.type.split('/')[0] === 'video') {
37665
+ if ((att.type === 'video' || att.data.type.split('/')[0] === 'video') && att.type !== 'file') {
37364
37666
  videoAttachment = true;
37365
37667
  if (!readyVideoAttachments[att.tid]) {
37366
37668
  setSendMessageIsActive(false);
@@ -40497,7 +40799,7 @@ var Details = function Details(_ref) {
40497
40799
  color: textSecondary,
40498
40800
  fontSize: channelMembersFontSize,
40499
40801
  lineHeight: channelMembersLineHeight
40500
- }, 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, {
40802
+ }, 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, {
40501
40803
  color: textSecondary,
40502
40804
  fontSize: channelMembersFontSize,
40503
40805
  lineHeight: channelMembersLineHeight
@@ -40951,10 +41253,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
40951
41253
  };
40952
41254
  var handleScrollToLastMessage = function handleScrollToLastMessage(messageId) {
40953
41255
  try {
40954
- dispatch(scrollToNewMessageAC(true, false, false));
40955
41256
  if (messages.findIndex(function (msg) {
40956
41257
  return msg.id === messageId;
40957
41258
  }) >= 10) {
41259
+ dispatch(scrollToNewMessageAC(true, false, false));
40958
41260
  dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
40959
41261
  var repliedMessage = document.getElementById(messageId);
40960
41262
  if (repliedMessage) {