sceyt-chat-react-uikit 1.6.8-beta.9 → 1.6.9-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
@@ -7669,6 +7669,7 @@ var DELETE_REACTION = 'DELETE_REACTION';
7669
7669
  var SET_SCROLL_TO_NEW_MESSAGE = 'SET_SCROLL_TO_NEW_MESSAGE';
7670
7670
  var SET_SHOW_SCROLL_TO_NEW_MESSAGE_BUTTON = 'SET_SHOW_SCROLL_TO_NEW_MESSAGE_BUTTON';
7671
7671
  var SET_MESSAGE_MENU_OPENED = 'SET_MESSAGE_MENU_OPENED';
7672
+ var SET_SCROLL_TO_MENTIONED_MESSAGE = 'SET_SCROLL_TO_MENTIONED_MESSAGE';
7672
7673
  var queryDirection = {
7673
7674
  PREV: 'prev',
7674
7675
  NEXT: 'next',
@@ -8267,9 +8268,6 @@ function checkChannelExistsOnMessagesMap(channelId) {
8267
8268
  return !!messagesMap[channelId];
8268
8269
  }
8269
8270
  var pendingVideoAttachmentsThumbs = {};
8270
- var setVideoThumb = function setVideoThumb(attachmentId, thumb) {
8271
- pendingVideoAttachmentsThumbs[attachmentId] = thumb;
8272
- };
8273
8271
  var getVideoThumb = function getVideoThumb(attachmentId) {
8274
8272
  return pendingVideoAttachmentsThumbs[attachmentId];
8275
8273
  };
@@ -8372,6 +8370,7 @@ var initialState$1 = {
8372
8370
  messageForReply: null,
8373
8371
  attachmentsUploadingState: {},
8374
8372
  scrollToMessage: null,
8373
+ scrollToMentionedMessage: false,
8375
8374
  reactionsList: [],
8376
8375
  reactionsHasNext: true,
8377
8376
  reactionsLoadingState: null,
@@ -8414,6 +8413,11 @@ var MessageReducer = (function (state, _temp) {
8414
8413
  newState.scrollToMessage = payload.messageId;
8415
8414
  return newState;
8416
8415
  }
8416
+ case SET_SCROLL_TO_MENTIONED_MESSAGE:
8417
+ {
8418
+ newState.scrollToMentionedMessage = payload.isScrollToMentionedMessage;
8419
+ return newState;
8420
+ }
8417
8421
  case SET_SCROLL_TO_NEW_MESSAGE:
8418
8422
  {
8419
8423
  newState.scrollToNewMessage = {
@@ -9182,8 +9186,8 @@ var defaultTheme = {
9182
9186
  light: '#C8D0FF',
9183
9187
  dark: '#3B3D68'
9184
9188
  }, _colors[THEME_COLORS.TOOLTIP_BACKGROUND] = {
9185
- light: '#11153980',
9186
- dark: '#00000080'
9189
+ light: '#111539E5',
9190
+ dark: '#000000E5'
9187
9191
  }, _colors)
9188
9192
  };
9189
9193
  var defaultThemeMode = 'light';
@@ -9821,14 +9825,15 @@ function setMessageToEditAC(message) {
9821
9825
  }
9822
9826
  };
9823
9827
  }
9824
- function getMessagesAC(channel, loadWithLastMessage, messageId, limit) {
9828
+ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages) {
9825
9829
  return {
9826
9830
  type: GET_MESSAGES,
9827
9831
  payload: {
9828
9832
  channel: channel,
9829
9833
  loadWithLastMessage: loadWithLastMessage,
9830
9834
  messageId: messageId,
9831
- limit: limit
9835
+ limit: limit,
9836
+ withDeliveredMessages: withDeliveredMessages
9832
9837
  }
9833
9838
  };
9834
9839
  }
@@ -9840,6 +9845,14 @@ function setScrollToMessagesAC(messageId) {
9840
9845
  }
9841
9846
  };
9842
9847
  }
9848
+ function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
9849
+ return {
9850
+ type: SET_SCROLL_TO_MENTIONED_MESSAGE,
9851
+ payload: {
9852
+ isScrollToMentionedMessage: isScrollToMentionedMessage
9853
+ }
9854
+ };
9855
+ }
9843
9856
  function setMessagesLoadingStateAC(state) {
9844
9857
  return {
9845
9858
  type: SET_MESSAGES_LOADING_STATE,
@@ -10604,6 +10617,9 @@ var messageToEditSelector = function messageToEditSelector(store) {
10604
10617
  var scrollToNewMessageSelector = function scrollToNewMessageSelector(store) {
10605
10618
  return store.MessageReducer.scrollToNewMessage;
10606
10619
  };
10620
+ var scrollToMentionedMessageSelector = function scrollToMentionedMessageSelector(store) {
10621
+ return store.MessageReducer.scrollToMentionedMessage;
10622
+ };
10607
10623
  var showScrollToNewMessageButtonSelector = function showScrollToNewMessageButtonSelector(store) {
10608
10624
  return store.MessageReducer.showScrollToNewMessageButton;
10609
10625
  };
@@ -10747,6 +10763,10 @@ var setAvatarColor = function setAvatarColor(colors) {
10747
10763
  };
10748
10764
  };
10749
10765
  var getAvatarColors = function getAvatarColors(theme) {
10766
+ var _avatarColors$theme;
10767
+ if (!((_avatarColors$theme = _avatarColors[theme]) !== null && _avatarColors$theme !== void 0 && _avatarColors$theme.length)) {
10768
+ return _avatarColors.light;
10769
+ }
10750
10770
  return _avatarColors[theme];
10751
10771
  };
10752
10772
 
@@ -11148,7 +11168,7 @@ var UploadAvatarButton = styled.button(_templateObject24 || (_templateObject24 =
11148
11168
  var UploadAvatarHandler = styled.div(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n margin-left: 18px;\n font-size: 13px;\n color: ", ";\n"])), function (props) {
11149
11169
  return props.color;
11150
11170
  });
11151
- var StyledText = styled.span(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n font-weight: ", ";\n font-family: ", ";\n font-style: ", ";\n text-decoration: ", ";\n letter-spacing: ", ";\n\n &.mention {\n color: ", ";\n font-weight: ", ";\n }\n &.bold {\n font-weight: 600;\n }\n &.italic {\n font-style: italic;\n }\n &.underline {\n text-decoration: underline;\n }\n &.strikethrough {\n text-decoration: line-through;\n }\n &.underline.strikethrough {\n text-decoration: underline line-through;\n }\n &.monospace {\n letter-spacing: 4px;\n }\n"])), function (props) {
11171
+ var StyledText = styled.span(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n font-weight: ", ";\n font-family: ", ";\n font-style: ", ";\n text-decoration: ", ";\n letter-spacing: ", ";\n\n &.mention {\n color: ", ";\n font-weight: ", ";\n cursor: ", ";\n }\n &.bold {\n font-weight: 600;\n }\n &.italic {\n font-style: italic;\n }\n &.underline {\n text-decoration: underline;\n }\n &.strikethrough {\n text-decoration: line-through;\n }\n &.underline.strikethrough {\n text-decoration: underline line-through;\n }\n &.monospace {\n letter-spacing: 4px;\n }\n"])), function (props) {
11152
11172
  return props.fontWeight || props.isLastMessage && '500';
11153
11173
  }, function (props) {
11154
11174
  return props.fontFamily;
@@ -11162,6 +11182,8 @@ var StyledText = styled.span(_templateObject26 || (_templateObject26 = _taggedTe
11162
11182
  return props.color;
11163
11183
  }, function (props) {
11164
11184
  return props.isLastMessage && '500';
11185
+ }, function (props) {
11186
+ return props.shouldOpenUserProfileForMention && 'pointer';
11165
11187
  });
11166
11188
  var MessageOwner = styled.h3(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n margin: 0 12px 4px 0;\n white-space: nowrap;\n color: ", ";\n margin-left: ", ";\n font-weight: 500;\n font-size: ", ";\n line-height: ", ";\n cursor: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n"])), function (props) {
11167
11189
  return props.color;
@@ -11407,7 +11429,9 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11407
11429
  isLastMessage = _ref2.isLastMessage,
11408
11430
  asSampleText = _ref2.asSampleText,
11409
11431
  accentColor = _ref2.accentColor,
11410
- textSecondary = _ref2.textSecondary;
11432
+ textSecondary = _ref2.textSecondary,
11433
+ onMentionNameClick = _ref2.onMentionNameClick,
11434
+ shouldOpenUserProfileForMention = _ref2.shouldOpenUserProfileForMention;
11411
11435
  try {
11412
11436
  var messageText = [];
11413
11437
  var linkify = new LinkifyIt();
@@ -11452,12 +11476,18 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11452
11476
  className: "" + combinedAttributesList[index - 1].type,
11453
11477
  isLastMessage: isLastMessage,
11454
11478
  key: attributeOffset + index,
11455
- color: isLastMessage ? textSecondary : accentColor
11479
+ color: isLastMessage ? textSecondary : accentColor,
11480
+ shouldOpenUserProfileForMention: onMentionNameClick && shouldOpenUserProfileForMention
11456
11481
  }, firsTextPart, /*#__PURE__*/React__default.createElement(StyledText, {
11457
11482
  className: 'mention',
11458
11483
  isLastMessage: isLastMessage,
11459
11484
  color: isLastMessage ? textSecondary : accentColor,
11460
- key: attributeOffset + index
11485
+ key: attributeOffset + index,
11486
+ onClick: function onClick() {
11487
+ if (onMentionNameClick && shouldOpenUserProfileForMention) {
11488
+ onMentionNameClick(mentionDisplay);
11489
+ }
11490
+ }
11461
11491
  }, mentionDisplayName), secondTextPart)), index === combinedAttributesList.length - 1 ? secondPart : '');
11462
11492
  } else {
11463
11493
  nextPartIndex = attribute.offset + attribute.length;
@@ -11465,7 +11495,13 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11465
11495
  className: attribute.type,
11466
11496
  isLastMessage: isLastMessage,
11467
11497
  color: isLastMessage ? textSecondary : accentColor,
11468
- key: attributeOffset
11498
+ key: attributeOffset,
11499
+ onClick: function onClick() {
11500
+ if (onMentionNameClick && shouldOpenUserProfileForMention) {
11501
+ onMentionNameClick(mentionDisplay);
11502
+ }
11503
+ },
11504
+ shouldOpenUserProfileForMention: onMentionNameClick && shouldOpenUserProfileForMention
11469
11505
  }, mentionDisplayName)), index === combinedAttributesList.length - 1 ? secondPart : '');
11470
11506
  }
11471
11507
  } else {
@@ -13824,30 +13860,31 @@ function getChannelMentions(action) {
13824
13860
  mentionsQueryBuilder = new SceytChatClient.MentionsListQueryBuilder();
13825
13861
  mentionsQueryBuilder.setChannelId(channelId);
13826
13862
  mentionsQueryBuilder.limit(10);
13827
- _context7.next = 9;
13863
+ mentionsQueryBuilder.setDirection(queryDirection.NEXT);
13864
+ _context7.next = 10;
13828
13865
  return call(mentionsQueryBuilder.build);
13829
- case 9:
13866
+ case 10:
13830
13867
  mentionsQuery = _context7.sent;
13831
- _context7.next = 12;
13868
+ _context7.next = 13;
13832
13869
  return call(mentionsQuery.loadNext);
13833
- case 12:
13870
+ case 13:
13834
13871
  mentions = _context7.sent;
13835
- _context7.next = 15;
13872
+ _context7.next = 16;
13836
13873
  return put(updateChannelDataAC(channelId, {
13837
13874
  mentionsIds: mentions.mentions
13838
13875
  }));
13839
- case 15:
13840
- _context7.next = 20;
13876
+ case 16:
13877
+ _context7.next = 21;
13841
13878
  break;
13842
- case 17:
13843
- _context7.prev = 17;
13879
+ case 18:
13880
+ _context7.prev = 18;
13844
13881
  _context7.t0 = _context7["catch"](0);
13845
13882
  log.error(_context7.t0, 'Error in get channel mentions');
13846
- case 20:
13883
+ case 21:
13847
13884
  case "end":
13848
13885
  return _context7.stop();
13849
13886
  }
13850
- }, _marked7, null, [[0, 17]]);
13887
+ }, _marked7, null, [[0, 18]]);
13851
13888
  }
13852
13889
  function channelsForForwardLoadMore(action) {
13853
13890
  var payload, limit, SceytChatClient, channelQueryForward, channelsData, channelsToAdd, _yield$call4, mappedChannels;
@@ -15467,21 +15504,6 @@ var addData = function addData(db, storeName, keyPath, data) {
15467
15504
  }
15468
15505
  };
15469
15506
 
15470
- var getFrame3 = function getFrame3(video, time) {
15471
- try {
15472
- var canvas = document.createElement('canvas');
15473
- canvas.width = video.videoWidth;
15474
- canvas.height = video.videoHeight;
15475
- var ctx = canvas.getContext('2d');
15476
- if (time) {
15477
- video.currentTime = time;
15478
- }
15479
- ctx.drawImage(video, 0, 0);
15480
- return Promise.resolve(createImageThumbnail(null, canvas.toDataURL(), 10, 10));
15481
- } catch (e) {
15482
- return Promise.reject(e);
15483
- }
15484
- };
15485
15507
  var getFrame = function getFrame(videoSrc, time) {
15486
15508
  try {
15487
15509
  var video = document.createElement('video');
@@ -16962,14 +16984,14 @@ function editMessage(action) {
16962
16984
  }, _marked6$1, null, [[0, 21]]);
16963
16985
  }
16964
16986
  function getMessagesQuery(action) {
16965
- var _action$payload, channel, loadWithLastMessage, messageId, limit, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, pendingMessages, messagesMap, filteredPendingMessages, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap, _filteredPendingMessages, _secondResult4, _pendingMessages2, _messagesMap2, _filteredPendingMessages2;
16987
+ var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, pendingMessages, messagesMap, filteredPendingMessages, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap, _filteredPendingMessages, _secondResult4, _pendingMessages2, _messagesMap2, _filteredPendingMessages2;
16966
16988
  return _regeneratorRuntime().wrap(function getMessagesQuery$(_context9) {
16967
16989
  while (1) switch (_context9.prev = _context9.next) {
16968
16990
  case 0:
16969
16991
  _context9.prev = 0;
16970
- _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit;
16992
+ _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages;
16971
16993
  if (!(channel.id && !channel.isMockChannel)) {
16972
- _context9.next = 172;
16994
+ _context9.next = 175;
16973
16995
  break;
16974
16996
  }
16975
16997
  SceytChatClient = getClient();
@@ -16990,13 +17012,13 @@ function getMessagesQuery(action) {
16990
17012
  hasNext: false
16991
17013
  };
16992
17014
  if (!loadWithLastMessage) {
16993
- _context9.next = 51;
17015
+ _context9.next = 54;
16994
17016
  break;
16995
17017
  }
16996
17018
  allMessages = getAllMessages();
16997
17019
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
16998
17020
  if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
16999
- _context9.next = 41;
17021
+ _context9.next = 44;
17000
17022
  break;
17001
17023
  }
17002
17024
  setHasPrevCached(false);
@@ -17017,36 +17039,41 @@ function getMessagesQuery(action) {
17017
17039
  result.messages = [].concat(secondResult.messages, result.messages);
17018
17040
  result.hasNext = secondResult.hasNext;
17019
17041
  case 31:
17020
- _context9.next = 33;
17042
+ sentMessages = [];
17043
+ if (withDeliveredMessages) {
17044
+ sentMessages = getFromAllMessagesByMessageId('', '', true);
17045
+ }
17046
+ result.messages = [].concat(result.messages, sentMessages);
17047
+ _context9.next = 36;
17021
17048
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17022
- case 33:
17049
+ case 36:
17023
17050
  setMessagesToMap(channel.id, result.messages);
17024
- setAllMessages([].concat(result.messages));
17025
- _context9.next = 37;
17051
+ setAllMessages(result.messages);
17052
+ _context9.next = 40;
17026
17053
  return put(setMessagesHasPrevAC(true));
17027
- case 37:
17028
- _context9.next = 39;
17054
+ case 40:
17055
+ _context9.next = 42;
17029
17056
  return put(markChannelAsReadAC(channel.id));
17030
- case 39:
17031
- _context9.next = 46;
17057
+ case 42:
17058
+ _context9.next = 49;
17032
17059
  break;
17033
- case 41:
17060
+ case 44:
17034
17061
  result.messages = getFromAllMessagesByMessageId('', '', true);
17035
- _context9.next = 44;
17062
+ _context9.next = 47;
17036
17063
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17037
- case 44:
17038
- _context9.next = 46;
17064
+ case 47:
17065
+ _context9.next = 49;
17039
17066
  return put(setMessagesHasPrevAC(true));
17040
- case 46:
17041
- _context9.next = 48;
17067
+ case 49:
17068
+ _context9.next = 51;
17042
17069
  return put(setMessagesHasNextAC(false));
17043
- case 48:
17070
+ case 51:
17044
17071
  setHasNextCached(false);
17045
- _context9.next = 161;
17072
+ _context9.next = 164;
17046
17073
  break;
17047
- case 51:
17074
+ case 54:
17048
17075
  if (!messageId) {
17049
- _context9.next = 94;
17076
+ _context9.next = 97;
17050
17077
  break;
17051
17078
  }
17052
17079
  _allMessages = getAllMessages();
@@ -17055,46 +17082,46 @@ function getMessagesQuery(action) {
17055
17082
  });
17056
17083
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
17057
17084
  if (!(messageIndex >= maxLengthPart)) {
17058
- _context9.next = 63;
17085
+ _context9.next = 66;
17059
17086
  break;
17060
17087
  }
17061
17088
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
17062
- _context9.next = 59;
17089
+ _context9.next = 62;
17063
17090
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17064
- case 59:
17091
+ case 62:
17065
17092
  setHasPrevCached(messageIndex > maxLengthPart);
17066
17093
  setHasNextCached(_allMessages.length > maxLengthPart);
17067
- _context9.next = 90;
17094
+ _context9.next = 93;
17068
17095
  break;
17069
- case 63:
17096
+ case 66:
17070
17097
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17071
17098
  log.info('load by message id from server ...............', messageId);
17072
- _context9.next = 67;
17099
+ _context9.next = 70;
17073
17100
  return call(messageQuery.loadNearMessageId, messageId);
17074
- case 67:
17101
+ case 70:
17075
17102
  result = _context9.sent;
17076
17103
  if (!(result.messages.length === 50)) {
17077
- _context9.next = 80;
17104
+ _context9.next = 83;
17078
17105
  break;
17079
17106
  }
17080
17107
  messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
17081
- _context9.next = 72;
17108
+ _context9.next = 75;
17082
17109
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17083
- case 72:
17110
+ case 75:
17084
17111
  _secondResult = _context9.sent;
17085
17112
  messageQuery.reverse = false;
17086
- _context9.next = 76;
17113
+ _context9.next = 79;
17087
17114
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17088
- case 76:
17115
+ case 79:
17089
17116
  thirdResult = _context9.sent;
17090
17117
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
17091
17118
  result.hasNext = _secondResult.hasNext;
17092
17119
  messageQuery.reverse = true;
17093
- case 80:
17120
+ case 83:
17094
17121
  log.info('result from server ....... ', result);
17095
- _context9.next = 83;
17122
+ _context9.next = 86;
17096
17123
  return put(setMessagesHasNextAC(true));
17097
- case 83:
17124
+ case 86:
17098
17125
  pendingMessages = getPendingMessages(channel.id);
17099
17126
  if (pendingMessages && pendingMessages.length) {
17100
17127
  messagesMap = {};
@@ -17107,84 +17134,84 @@ function getMessagesQuery(action) {
17107
17134
  setPendingMessages(channel.id, filteredPendingMessages);
17108
17135
  result.messages = [].concat(result.messages, filteredPendingMessages);
17109
17136
  }
17110
- _context9.next = 87;
17137
+ _context9.next = 90;
17111
17138
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17112
- case 87:
17139
+ case 90:
17113
17140
  setAllMessages([].concat(result.messages));
17114
17141
  setHasPrevCached(false);
17115
17142
  setHasNextCached(false);
17116
- case 90:
17117
- _context9.next = 92;
17143
+ case 93:
17144
+ _context9.next = 95;
17118
17145
  return put(setScrollToMessagesAC(messageId));
17119
- case 92:
17120
- _context9.next = 161;
17146
+ case 95:
17147
+ _context9.next = 164;
17121
17148
  break;
17122
- case 94:
17149
+ case 97:
17123
17150
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
17124
- _context9.next = 140;
17151
+ _context9.next = 143;
17125
17152
  break;
17126
17153
  }
17127
17154
  setAllMessages([]);
17128
17155
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17129
17156
  if (!Number(channel.lastDisplayedMessageId)) {
17130
- _context9.next = 118;
17157
+ _context9.next = 121;
17131
17158
  break;
17132
17159
  }
17133
- _context9.next = 100;
17160
+ _context9.next = 103;
17134
17161
  return call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
17135
- case 100:
17162
+ case 103:
17136
17163
  result = _context9.sent;
17137
17164
  if (!(result.messages.length === 50)) {
17138
- _context9.next = 116;
17165
+ _context9.next = 119;
17139
17166
  break;
17140
17167
  }
17141
17168
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
17142
- _context9.next = 105;
17169
+ _context9.next = 108;
17143
17170
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17144
- case 105:
17171
+ case 108:
17145
17172
  _secondResult2 = _context9.sent;
17146
17173
  if (!(channel.newMessageCount > 25)) {
17147
- _context9.next = 115;
17174
+ _context9.next = 118;
17148
17175
  break;
17149
17176
  }
17150
17177
  messageQuery.reverse = false;
17151
- _context9.next = 110;
17178
+ _context9.next = 113;
17152
17179
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17153
- case 110:
17180
+ case 113:
17154
17181
  _thirdResult = _context9.sent;
17155
17182
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
17156
17183
  messageQuery.reverse = true;
17157
- _context9.next = 116;
17184
+ _context9.next = 119;
17158
17185
  break;
17159
- case 115:
17186
+ case 118:
17160
17187
  result.messages = [].concat(_secondResult2.messages, result.messages);
17161
- case 116:
17162
- _context9.next = 128;
17188
+ case 119:
17189
+ _context9.next = 131;
17163
17190
  break;
17164
- case 118:
17165
- _context9.next = 120;
17191
+ case 121:
17192
+ _context9.next = 123;
17166
17193
  return call(messageQuery.loadPrevious);
17167
- case 120:
17194
+ case 123:
17168
17195
  result = _context9.sent;
17169
17196
  if (!(result.messages.length === 50)) {
17170
- _context9.next = 128;
17197
+ _context9.next = 131;
17171
17198
  break;
17172
17199
  }
17173
17200
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17174
- _context9.next = 125;
17201
+ _context9.next = 128;
17175
17202
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17176
- case 125:
17203
+ case 128:
17177
17204
  _secondResult3 = _context9.sent;
17178
17205
  result.messages = [].concat(_secondResult3.messages, result.messages);
17179
17206
  result.hasNext = _secondResult3.hasNext;
17180
- case 128:
17207
+ case 131:
17181
17208
  setMessagesToMap(channel.id, result.messages);
17182
- _context9.next = 131;
17209
+ _context9.next = 134;
17183
17210
  return put(setMessagesHasPrevAC(true));
17184
- case 131:
17185
- _context9.next = 133;
17211
+ case 134:
17212
+ _context9.next = 136;
17186
17213
  return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
17187
- case 133:
17214
+ case 136:
17188
17215
  _pendingMessages = getPendingMessages(channel.id);
17189
17216
  if (_pendingMessages && _pendingMessages.length) {
17190
17217
  _messagesMap = {};
@@ -17198,38 +17225,38 @@ function getMessagesQuery(action) {
17198
17225
  result.messages = [].concat(result.messages, _filteredPendingMessages);
17199
17226
  }
17200
17227
  setAllMessages([].concat(result.messages));
17201
- _context9.next = 138;
17228
+ _context9.next = 141;
17202
17229
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17203
- case 138:
17204
- _context9.next = 161;
17230
+ case 141:
17231
+ _context9.next = 164;
17205
17232
  break;
17206
- case 140:
17233
+ case 143:
17207
17234
  setAllMessages([]);
17208
17235
  if (!(cachedMessages && cachedMessages.length)) {
17209
- _context9.next = 145;
17236
+ _context9.next = 148;
17210
17237
  break;
17211
17238
  }
17212
17239
  setAllMessages([].concat(cachedMessages));
17213
- _context9.next = 145;
17240
+ _context9.next = 148;
17214
17241
  return put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
17215
- case 145:
17242
+ case 148:
17216
17243
  log.info('load message from server');
17217
- _context9.next = 148;
17244
+ _context9.next = 151;
17218
17245
  return call(messageQuery.loadPrevious);
17219
- case 148:
17246
+ case 151:
17220
17247
  result = _context9.sent;
17221
17248
  if (!(result.messages.length === 50)) {
17222
- _context9.next = 156;
17249
+ _context9.next = 159;
17223
17250
  break;
17224
17251
  }
17225
17252
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17226
- _context9.next = 153;
17253
+ _context9.next = 156;
17227
17254
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17228
- case 153:
17255
+ case 156:
17229
17256
  _secondResult4 = _context9.sent;
17230
17257
  result.messages = [].concat(_secondResult4.messages, result.messages);
17231
17258
  result.hasNext = _secondResult4.hasNext;
17232
- case 156:
17259
+ case 159:
17233
17260
  result.messages.forEach(function (msg) {
17234
17261
  updateMessageOnMap(channel.id, {
17235
17262
  messageId: msg.id,
@@ -17237,14 +17264,14 @@ function getMessagesQuery(action) {
17237
17264
  });
17238
17265
  updateMessageOnAllMessages(msg.id, msg);
17239
17266
  });
17240
- _context9.next = 159;
17267
+ _context9.next = 162;
17241
17268
  return put(setMessagesHasPrevAC(result.hasNext));
17242
- case 159:
17243
- _context9.next = 161;
17269
+ case 162:
17270
+ _context9.next = 164;
17244
17271
  return put(setMessagesHasNextAC(false));
17245
- case 161:
17272
+ case 164:
17246
17273
  if (cachedMessages && cachedMessages.length) {
17247
- _context9.next = 168;
17274
+ _context9.next = 171;
17248
17275
  break;
17249
17276
  }
17250
17277
  _pendingMessages2 = getPendingMessages(channel.id);
@@ -17259,36 +17286,36 @@ function getMessagesQuery(action) {
17259
17286
  setPendingMessages(channel.id, _filteredPendingMessages2);
17260
17287
  result.messages = [].concat(result.messages, _filteredPendingMessages2);
17261
17288
  }
17262
- _context9.next = 166;
17289
+ _context9.next = 169;
17263
17290
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17264
- case 166:
17291
+ case 169:
17265
17292
  setMessagesToMap(channel.id, result.messages);
17266
17293
  setAllMessages([].concat(result.messages));
17267
- case 168:
17268
- _context9.next = 170;
17294
+ case 171:
17295
+ _context9.next = 173;
17269
17296
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
17270
- case 170:
17271
- _context9.next = 175;
17297
+ case 173:
17298
+ _context9.next = 178;
17272
17299
  break;
17273
- case 172:
17300
+ case 175:
17274
17301
  if (!channel.isMockChannel) {
17275
- _context9.next = 175;
17302
+ _context9.next = 178;
17276
17303
  break;
17277
17304
  }
17278
- _context9.next = 175;
17305
+ _context9.next = 178;
17279
17306
  return put(setMessagesAC([]));
17280
- case 175:
17281
- _context9.next = 180;
17307
+ case 178:
17308
+ _context9.next = 183;
17282
17309
  break;
17283
- case 177:
17284
- _context9.prev = 177;
17310
+ case 180:
17311
+ _context9.prev = 180;
17285
17312
  _context9.t0 = _context9["catch"](0);
17286
17313
  log.error('error in message query', _context9.t0);
17287
- case 180:
17314
+ case 183:
17288
17315
  case "end":
17289
17316
  return _context9.stop();
17290
17317
  }
17291
- }, _marked7$1, null, [[0, 177]]);
17318
+ }, _marked7$1, null, [[0, 180]]);
17292
17319
  }
17293
17320
  function loadMoreMessages(action) {
17294
17321
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result;
@@ -18709,20 +18736,25 @@ var useStateComplex = function useStateComplex(initialState) {
18709
18736
  }];
18710
18737
  };
18711
18738
 
18712
- function useOnScreen(ref) {
18739
+ function useOnScreen(ref, rootElement) {
18713
18740
  var _useState = useState(false),
18714
18741
  isIntersecting = _useState[0],
18715
18742
  setIntersecting = _useState[1];
18716
- var observer = new IntersectionObserver(function (_ref) {
18717
- var entry = _ref[0];
18718
- return setIntersecting(entry.isIntersecting);
18719
- });
18720
18743
  useEffect(function () {
18744
+ if (!(ref !== null && ref !== void 0 && ref.current)) return;
18745
+ var observer = new IntersectionObserver(function (_ref) {
18746
+ var entry = _ref[0];
18747
+ return setIntersecting(entry.isIntersecting);
18748
+ }, {
18749
+ root: rootElement || null,
18750
+ rootMargin: '0px',
18751
+ threshold: 0.1
18752
+ });
18721
18753
  observer.observe(ref.current);
18722
18754
  return function () {
18723
18755
  observer.disconnect();
18724
18756
  };
18725
- }, []);
18757
+ }, [ref, rootElement]);
18726
18758
  return isIntersecting;
18727
18759
  }
18728
18760
 
@@ -19446,7 +19478,7 @@ var DeletedAvatarWrapper = styled(SvgDeletedUserAvatar)(_templateObject4$2 || (_
19446
19478
  return props.color;
19447
19479
  });
19448
19480
 
19449
- var _templateObject$4, _templateObject2$4, _templateObject3$3, _templateObject4$3, _templateObject5$2, _templateObject6$1, _templateObject7$1, _templateObject8$1, _templateObject9$1, _templateObject0$1, _templateObject1$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1;
19481
+ var _templateObject$4, _templateObject2$4, _templateObject3$3, _templateObject4$3, _templateObject5$2, _templateObject6$1, _templateObject7$1, _templateObject8$1, _templateObject9$1, _templateObject0$1, _templateObject1$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1, _templateObject20$1;
19450
19482
  var ChannelMessageText = function ChannelMessageText(_ref) {
19451
19483
  var isTypingOrRecording = _ref.isTypingOrRecording,
19452
19484
  textPrimary = _ref.textPrimary,
@@ -19469,7 +19501,7 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19469
19501
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19470
19502
  })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'RM' ? " removed " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.slice(0, 5).map(function (mem) {
19471
19503
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19472
- })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'LG' ? 'Left this group' : '') : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, channel.lastReactedMessage && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, "Reacted", /*#__PURE__*/React__default.createElement(ReactionItem, null, channel.newReactions && channel.newReactions[0] && channel.newReactions[0].key), "to", ' "')), !!(lastMessage.attachments && lastMessage.attachments.length) && (lastMessage.attachments[0].type === attachmentTypes.image ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgPicture, null), lastMessage.body ? '' : 'Photo')) : lastMessage.attachments[0].type === attachmentTypes.video ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVideoCall, null), lastMessage.body ? '' : 'Video')) : lastMessage.attachments[0].type === attachmentTypes.file ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgChoseFile, null), lastMessage.body ? '' : 'File')) : lastMessage.attachments[0].type === attachmentTypes.voice ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVoiceIcon, null), lastMessage.body ? '' : 'Voice')) : null), !!(lastMessage && lastMessage.id) && MessageTextFormat({
19504
+ })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'LG' ? 'Left this group' : '') : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, channel.lastReactedMessage && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, "Reacted", /*#__PURE__*/React__default.createElement(ReactionItem, null, channel.newReactions && channel.newReactions[0] && channel.newReactions[0].key), "to", ' "')), !!(lastMessage.attachments && lastMessage.attachments.length) && (lastMessage.attachments[0].type === attachmentTypes.image ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgPicture, null), lastMessage.body ? '' : 'Photo')) : lastMessage.attachments[0].type === attachmentTypes.video ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVideoCall, null), lastMessage.body ? '' : 'Video')) : lastMessage.attachments[0].type === attachmentTypes.file ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgChoseFile, null), lastMessage.body ? '' : 'File')) : lastMessage.attachments[0].type === attachmentTypes.voice ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVoiceIcon, null), lastMessage.body ? '' : 'Voice')) : null), /*#__PURE__*/React__default.createElement(LastMessageDescription, null, !!(lastMessage && lastMessage.id) && MessageTextFormat({
19473
19505
  text: lastMessage.body,
19474
19506
  message: lastMessage,
19475
19507
  contactsMap: contactsMap,
@@ -19477,7 +19509,7 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19477
19509
  isLastMessage: true,
19478
19510
  accentColor: accentColor,
19479
19511
  textSecondary: textSecondary
19480
- }), channel.lastReactedMessage && '"'))));
19512
+ })), channel.lastReactedMessage && '"'))));
19481
19513
  };
19482
19514
  var Channel = function Channel(_ref2) {
19483
19515
  var _channel$metadata, _channel$metadata2;
@@ -19680,7 +19712,7 @@ var Channel = function Channel(_ref2) {
19680
19712
  }, /*#__PURE__*/React__default.createElement("span", {
19681
19713
  ref: messageAuthorRef
19682
19714
  }, lastMessage.user.id === user.id ? 'You' : makeUsername(contactsMap && contactsMap[lastMessage.user.id], lastMessage.user, getFromContacts, true)))), !isTypingOrRecording && (isDirectChannel ? !isTypingOrRecording && (draftMessageText || lastMessage.user && lastMessage.state !== MESSAGE_STATUS.DELETE && (channel.lastReactedMessage && channel.newReactions && channel.newReactions[0] ? channel.newReactions[0].user && channel.newReactions[0].user.id === user.id : lastMessage.user.id === user.id)) : isTypingOrRecording && draftMessageText || lastMessage && lastMessage.state !== MESSAGE_STATUS.DELETE && lastMessage.type !== 'system') && (/*#__PURE__*/React__default.createElement(Points, {
19683
- color: draftMessageText && warningColor
19715
+ color: draftMessageText && warningColor || textPrimary
19684
19716
  }, ": ")), /*#__PURE__*/React__default.createElement(LastMessageText, {
19685
19717
  color: textSecondary,
19686
19718
  withAttachments: !!(lastMessage && lastMessage.attachments && lastMessage.attachments.length && lastMessage.attachments[0].type !== attachmentTypes.link) && !isTypingOrRecording,
@@ -19776,12 +19808,12 @@ var LastMessageAuthor = styled.div(_templateObject9$1 || (_templateObject9$1 = _
19776
19808
  }, function (_ref4) {
19777
19809
  var typing = _ref4.typing,
19778
19810
  recording = _ref4.recording;
19779
- return (typing || recording) && "\n font-weight: 400;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: calc(100% - " + (typing ? 62 : 76) + "px);\n ";
19811
+ 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 ";
19780
19812
  });
19781
- var Points = styled.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n"])), function (props) {
19813
+ var Points = styled.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
19782
19814
  return props.color;
19783
19815
  });
19784
- var LastMessageText = styled.span(_templateObject1$1 || (_templateObject1$1 = _taggedTemplateLiteralLoose(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n font-style: ", ";\n transform: ", ";\n //height: 20px;\n\n > svg {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n color: ", ";\n //transform: ", ";\n transform: translate(0px, 3px);\n }\n"])), function (props) {
19816
+ var LastMessageText = styled.span(_templateObject1$1 || (_templateObject1$1 = _taggedTemplateLiteralLoose(["\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ", ";\n font-style: ", ";\n transform: ", ";\n //height: 20px;\n\n > svg {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n margin-right: 4px;\n color: ", ";\n transform: translate(0px, 3px);\n }\n & > span {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n }\n & > div {\n display: flex;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n & > svg {\n width: 18px;\n height: 18px;\n min-width: 18px;\n min-height: 18px;\n color: ", ";\n }\n }\n"])), function (props) {
19785
19817
  return props.color;
19786
19818
  }, function (props) {
19787
19819
  return props.deletedMessage && 'italic';
@@ -19790,28 +19822,29 @@ var LastMessageText = styled.span(_templateObject1$1 || (_templateObject1$1 = _t
19790
19822
  }, function (props) {
19791
19823
  return props.color;
19792
19824
  }, function (props) {
19793
- return props.withAttachments ? 'translate(0px, 3px)' : 'translate(0px, 2px)';
19825
+ return props.color;
19794
19826
  });
19795
- var ChannelStatus = styled.div(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n position: absolute;\n right: 16px;\n top: 15px;\n display: flex;\n flex-wrap: wrap;\n height: 42px;\n margin-left: auto;\n\n & > svg {\n width: 16px;\n height: 16px;\n color: ", ";\n }\n"])), function (props) {
19827
+ var LastMessageDescription = styled.div(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n"])));
19828
+ var ChannelStatus = styled.div(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n position: absolute;\n right: 16px;\n top: 15px;\n display: flex;\n flex-wrap: wrap;\n height: 42px;\n margin-left: auto;\n\n & > svg {\n width: 16px;\n height: 16px;\n color: ", ";\n }\n"])), function (props) {
19796
19829
  return props.color;
19797
19830
  });
19798
- var LastMessageDate = styled.span(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n color: ", ";\n font-size: ", ";\n line-height: 16px;\n"])), function (props) {
19831
+ var LastMessageDate = styled.span(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["\n color: ", ";\n font-size: ", ";\n line-height: 16px;\n"])), function (props) {
19799
19832
  return props.color;
19800
19833
  }, function (props) {
19801
19834
  return props.fontSize || '12px';
19802
19835
  });
19803
- var DeliveryIconCont = styled.span(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["\n margin-right: 6px;\n line-height: 13px;\n"])));
19804
- var UnreadMentionIconWrapper = styled.span(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n line-height: 13px;\n\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19836
+ var DeliveryIconCont = styled.span(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["\n margin-right: 6px;\n line-height: 13px;\n"])));
19837
+ var UnreadMentionIconWrapper = styled.span(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n line-height: 13px;\n\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19805
19838
  return props.rightMargin && '8px';
19806
19839
  }, function (props) {
19807
19840
  return props.iconColor;
19808
19841
  });
19809
- var TypingIndicator = styled.span(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n font-style: italic;\n"])));
19810
- var ReactionItem = styled.span(_templateObject15$1 || (_templateObject15$1 = _taggedTemplateLiteralLoose(["\n font-family:\n apple color emoji,\n segoe ui emoji,\n noto color emoji,\n android emoji,\n emojisymbols,\n emojione mozilla,\n twemoji mozilla,\n segoe ui symbol;\n padding: 0 3px;\n"])));
19811
- var UnreadInfo = styled.span(_templateObject16$1 || (_templateObject16$1 = _taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: ", ";\n right: 16px;\n display: flex;\n margin-top: 7px;\n align-items: center;\n flex: 0 0 auto;\n margin-left: auto;\n"])), function (props) {
19842
+ var TypingIndicator = styled.span(_templateObject15$1 || (_templateObject15$1 = _taggedTemplateLiteralLoose(["\n font-style: italic;\n"])));
19843
+ var ReactionItem = styled.span(_templateObject16$1 || (_templateObject16$1 = _taggedTemplateLiteralLoose(["\n font-family:\n apple color emoji,\n segoe ui emoji,\n noto color emoji,\n android emoji,\n emojisymbols,\n emojione mozilla,\n twemoji mozilla,\n segoe ui symbol;\n padding: 0 3px;\n"])));
19844
+ var UnreadInfo = styled.span(_templateObject17$1 || (_templateObject17$1 = _taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: ", ";\n right: 16px;\n display: flex;\n margin-top: 7px;\n align-items: center;\n flex: 0 0 auto;\n margin-left: auto;\n"])), function (props) {
19812
19845
  return props.bottom || '11px';
19813
19846
  });
19814
- var UnreadCount = styled.span(_templateObject17$1 || (_templateObject17$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n padding: 0 4px;\n font-size: ", ";\n min-width: ", ";\n height: ", ";\n text-align: center;\n font-weight: 500;\n color: ", ";\n border-radius: 10px;\n box-sizing: border-box;\n\n ", "\n"])), function (props) {
19847
+ var UnreadCount = styled.span(_templateObject18$1 || (_templateObject18$1 = _taggedTemplateLiteralLoose(["\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n padding: 0 4px;\n font-size: ", ";\n min-width: ", ";\n height: ", ";\n text-align: center;\n font-weight: 500;\n color: ", ";\n border-radius: 10px;\n box-sizing: border-box;\n\n ", "\n"])), function (props) {
19815
19848
  return props.backgroundColor;
19816
19849
  }, function (props) {
19817
19850
  return props.fontSize || '13px';
@@ -19824,10 +19857,10 @@ var UnreadCount = styled.span(_templateObject17$1 || (_templateObject17$1 = _tag
19824
19857
  }, function (props) {
19825
19858
  return props.isMuted && "background-color: " + props.mutedBackgroundColor + ";";
19826
19859
  });
19827
- var PinnedIconWrapper = styled.span(_templateObject18$1 || (_templateObject18$1 = _taggedTemplateLiteralLoose(["\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19860
+ var PinnedIconWrapper = styled.span(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19828
19861
  return props.color;
19829
19862
  });
19830
- var MessageTextContainer = styled.div(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-end;\n gap: 4px;\n"])));
19863
+ var MessageTextContainer = styled.div(_templateObject20$1 || (_templateObject20$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-end;\n gap: 4px;\n"])));
19831
19864
 
19832
19865
  var _templateObject$5, _templateObject2$5;
19833
19866
  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) {
@@ -21637,7 +21670,7 @@ var UserNumber = styled.h4(_templateObject6$4 || (_templateObject6$4 = _taggedTe
21637
21670
 
21638
21671
  var _templateObject$g, _templateObject2$e, _templateObject3$a, _templateObject4$8, _templateObject5$6, _templateObject6$5, _templateObject7$4, _templateObject8$4, _templateObject9$4, _templateObject0$3;
21639
21672
  var ChannelList = function ChannelList(_ref) {
21640
- var _channelListRef$curre2, _searchedChannels$cha, _searchedChannels$cha2, _searchedChannels$con, _searchedChannels$cha3, _searchedChannels$cha4, _searchedChannels$cha5, _searchedChannels$cha6;
21673
+ var _activeChannel$member, _channelListRef$curre2, _searchedChannels$cha, _searchedChannels$cha2, _searchedChannels$con, _searchedChannels$cha3, _searchedChannels$cha4, _searchedChannels$cha5, _searchedChannels$cha6;
21641
21674
  var className = _ref.className,
21642
21675
  selectedChannelBackground = _ref.selectedChannelBackground,
21643
21676
  selectedChannelLeftBorder = _ref.selectedChannelLeftBorder,
@@ -21888,10 +21921,12 @@ var ChannelList = function ChannelList(_ref) {
21888
21921
  }, [searchValue]);
21889
21922
  useDidUpdate(function () {
21890
21923
  if (getSelectedChannel) {
21891
- dispatch(getChannelMentionsAC(activeChannel.id));
21924
+ if (!(activeChannel !== null && activeChannel !== void 0 && activeChannel.mentionsIds)) {
21925
+ dispatch(getChannelMentionsAC(activeChannel.id));
21926
+ }
21892
21927
  getSelectedChannel(activeChannel);
21893
21928
  }
21894
- }, [activeChannel && activeChannel.members && activeChannel.members.length]);
21929
+ }, [activeChannel, activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.members, activeChannel === null || activeChannel === void 0 ? void 0 : (_activeChannel$member = activeChannel.members) === null || _activeChannel$member === void 0 ? void 0 : _activeChannel$member.length, activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.id]);
21895
21930
  useDidUpdate(function () {
21896
21931
  if (closeSearchChannels) {
21897
21932
  getMyChannels();
@@ -22249,7 +22284,7 @@ var NoData = styled.div(_templateObject8$4 || (_templateObject8$4 = _taggedTempl
22249
22284
  return props.color;
22250
22285
  });
22251
22286
  var LoadingWrapper = styled.div(_templateObject9$4 || (_templateObject9$4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n left: calc(50% - 20px);\n top: calc(50% - 20px);\n"])));
22252
- 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: 12px;\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
22287
+ 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: 12px;\n padding-left: 22px;\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
22253
22288
  return props.maxWidth ? props.maxWidth + "px" : 'inherit';
22254
22289
  }, function (props) {
22255
22290
  return props.withoutProfile && '52px';
@@ -22369,7 +22404,7 @@ function Chat(_ref) {
22369
22404
  color: textSecondary
22370
22405
  }, "Please select a chat to start messaging."))))), children);
22371
22406
  }
22372
- var Container$8 = styled.div(_templateObject$h || (_templateObject$h = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n max-width: ", ";\n display: flex;\n transition: all 0.1s;\n flex-direction: column;\n"])), function (props) {
22407
+ var Container$8 = styled.div(_templateObject$h || (_templateObject$h = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n max-width: ", ";\n display: flex;\n transition: all 0.1s;\n flex-direction: column;\n overflow: hidden;\n"])), function (props) {
22373
22408
  return props.widthOffset || props.channelDetailsWidth ? "calc(100% - " + (props.widthOffset + (props.channelDetailsWidth ? props.channelDetailsWidth + 1 : 0)) + "px)" : '';
22374
22409
  });
22375
22410
  var SelectChatContainer = styled.div(_templateObject2$f || (_templateObject2$f = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n background: ", ";\n z-index: 99;\n"])), function (props) {
@@ -25356,18 +25391,21 @@ var VideoPreview = /*#__PURE__*/memo(function VideoPreview(_ref) {
25356
25391
  border = _useColor[THEME_COLORS.BORDER],
25357
25392
  overlayBackground2 = _useColor[THEME_COLORS.OVERLAY_BACKGROUND_2],
25358
25393
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY];
25359
- var _useState = useState(0),
25360
- videoDuration = _useState[0],
25361
- setVideoDuration = _useState[1];
25362
- var _useState2 = useState(null),
25363
- videoCurrentTime = _useState2[0],
25364
- setVideoCurrentTime = _useState2[1];
25365
- var _useState3 = useState(true),
25366
- loading = _useState3[0],
25367
- setLoading = _useState3[1];
25368
- var _useState4 = useState(''),
25369
- videoUrl = _useState4[0],
25370
- setVideoUrl = _useState4[1];
25394
+ var currentTime = '';
25395
+ if (file.metadata && file.metadata.dur) {
25396
+ var mins = Math.floor(file.metadata.dur / 60);
25397
+ var seconds = Math.floor(file.metadata.dur % 60);
25398
+ currentTime = mins + ":" + (seconds < 10 ? "0" + seconds : seconds);
25399
+ }
25400
+ var _useState = useState(currentTime),
25401
+ videoCurrentTime = _useState[0],
25402
+ setVideoCurrentTime = _useState[1];
25403
+ var _useState2 = useState(true),
25404
+ loading = _useState2[0],
25405
+ setLoading = _useState2[1];
25406
+ var _useState3 = useState(''),
25407
+ videoUrl = _useState3[0],
25408
+ setVideoUrl = _useState3[1];
25371
25409
  var videoRef = useRef(null);
25372
25410
  var attachmentThumb;
25373
25411
  var withPrefix = true;
@@ -25380,55 +25418,39 @@ var VideoPreview = /*#__PURE__*/memo(function VideoPreview(_ref) {
25380
25418
  }
25381
25419
  }
25382
25420
  useEffect(function () {
25383
- var checkVideoInterval;
25384
- if (videoRef.current) {
25385
- var intervalCount = 0;
25386
- checkVideoInterval = setInterval(function () {
25387
- try {
25388
- var _temp4 = function _temp4() {
25389
- if (intervalCount >= 8) {
25390
- if (setVideoIsReadyToSend) {
25391
- setVideoIsReadyToSend(file.tid);
25392
- clearInterval(checkVideoInterval);
25393
- }
25394
- }
25395
- };
25396
- intervalCount++;
25397
- var _temp3 = function () {
25398
- if (videoRef.current && videoRef.current.readyState > 3) {
25399
- var _temp2 = function _temp2() {
25400
- clearInterval(checkVideoInterval);
25401
- };
25402
- setLoading(false);
25403
- setVideoDuration(videoRef.current.duration);
25404
- var minutes = Math.floor(videoRef.current.duration / 60);
25405
- var seconds = Math.floor(videoRef.current.duration % 60);
25406
- setVideoCurrentTime(minutes + ":" + (seconds < 10 ? "0" + seconds : seconds));
25407
- var _temp = function () {
25408
- if (isPreview) {
25409
- return Promise.resolve(getFrame3(videoRef.current, 0)).then(function (thumb) {
25410
- if (thumb) {
25411
- setVideoThumb(file.tid, _extends({}, thumb, {
25412
- duration: videoRef.current.duration
25413
- }));
25414
- if (setVideoIsReadyToSend) {
25415
- setVideoIsReadyToSend(file.tid);
25416
- }
25417
- }
25418
- });
25419
- }
25420
- }();
25421
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
25422
- }
25423
- }();
25424
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
25425
- } catch (e) {
25426
- return Promise.reject(e);
25421
+ var video = videoRef.current;
25422
+ if (!video) return;
25423
+ var checkReadyState = function checkReadyState() {
25424
+ if (video.readyState > 3) {
25425
+ setLoading(false);
25426
+ var minutes = Math.floor(video.duration / 60);
25427
+ var _seconds = Math.floor(video.duration % 60);
25428
+ setVideoCurrentTime(minutes + ":" + (_seconds < 10 ? "0" + _seconds : _seconds));
25429
+ if (setVideoIsReadyToSend) {
25430
+ setVideoIsReadyToSend(file.tid);
25427
25431
  }
25428
- }, 1000);
25429
- }
25432
+ return true;
25433
+ }
25434
+ return false;
25435
+ };
25436
+ if (checkReadyState()) return;
25437
+ var handleCanPlay = function handleCanPlay() {
25438
+ return checkReadyState();
25439
+ };
25440
+ var handleLoadedMetadata = function handleLoadedMetadata() {
25441
+ return checkReadyState();
25442
+ };
25443
+ video.addEventListener('canplay', handleCanPlay);
25444
+ video.addEventListener('loadedmetadata', handleLoadedMetadata);
25445
+ var interval = setInterval(function () {
25446
+ if (checkReadyState()) {
25447
+ clearInterval(interval);
25448
+ }
25449
+ }, 1000);
25430
25450
  return function () {
25431
- return clearInterval(checkVideoInterval);
25451
+ video.removeEventListener('canplay', handleCanPlay);
25452
+ video.removeEventListener('loadedmetadata', handleLoadedMetadata);
25453
+ clearInterval(interval);
25432
25454
  };
25433
25455
  }, []);
25434
25456
  useEffect(function () {
@@ -25463,7 +25485,7 @@ var VideoPreview = /*#__PURE__*/memo(function VideoPreview(_ref) {
25463
25485
  preload: 'auto',
25464
25486
  id: 'video',
25465
25487
  src: file.attachmentUrl || videoUrl
25466
- }), videoCurrentTime && (/*#__PURE__*/React__default.createElement(VideoControls, null, !isPreview && !!videoDuration && !isRepliedMessage && !uploading && !isDetailsView && (
25488
+ }), videoCurrentTime && (/*#__PURE__*/React__default.createElement(VideoControls, null, !isPreview && !!videoCurrentTime && !isRepliedMessage && !uploading && !isDetailsView && (
25467
25489
  /*#__PURE__*/
25468
25490
  React__default.createElement(VideoPlayButton, null, /*#__PURE__*/React__default.createElement(SvgPlayVideo, null))), /*#__PURE__*/React__default.createElement(VideoTime, {
25469
25491
  isDetailsView: isDetailsView,
@@ -25473,7 +25495,7 @@ var VideoPreview = /*#__PURE__*/memo(function VideoPreview(_ref) {
25473
25495
  }, !isRepliedMessage && !isPreview && /*#__PURE__*/React__default.createElement(SvgVideoCall, null), videoCurrentTime))));
25474
25496
  });
25475
25497
  var VideoControls = styled.div(_templateObject$s || (_templateObject$s = _taggedTemplateLiteralLoose(["\n position: absolute;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n"])));
25476
- var VideoTime = styled.div(_templateObject2$o || (_templateObject2$o = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: ", ";\n bottom: ", ";\n left: ", ";\n font-size: ", ";\n display: flex;\n align-items: center;\n border-radius: 16px;\n padding: ", ";\n background-color: ", ";\n line-height: 14px;\n color: ", ";\n\n & > svg {\n color: ", ";\n margin-right: 4px;\n }\n"])), function (props) {
25498
+ var VideoTime = styled.div(_templateObject2$o || (_templateObject2$o = _taggedTemplateLiteralLoose(["\n position: absolute;\n top: ", ";\n bottom: ", ";\n left: ", ";\n font-size: ", ";\n display: flex;\n align-items: center;\n border-radius: 16px;\n padding: ", ";\n background-color: ", ";\n line-height: 14px;\n color: ", ";\n z-index: 10;\n\n & > svg {\n color: ", ";\n margin-right: 4px;\n }\n"])), function (props) {
25477
25499
  return props.isRepliedMessage ? '3px' : props.isDetailsView ? undefined : '8px';
25478
25500
  }, function (props) {
25479
25501
  return props.isDetailsView ? '8px' : undefined;
@@ -27662,7 +27684,10 @@ var Attachment = function Attachment(_ref) {
27662
27684
  var _useState5 = useState(3),
27663
27685
  progress = _useState5[0],
27664
27686
  setProgress = _useState5[1];
27665
- var _useState6 = useState(),
27687
+ var _useState6 = useState({
27688
+ loaded: 0,
27689
+ total: (attachment === null || attachment === void 0 ? void 0 : attachment.size) || 0
27690
+ }),
27666
27691
  sizeProgress = _useState6[0],
27667
27692
  setSizeProgress = _useState6[1];
27668
27693
  var _useState7 = useState(true),
@@ -29362,7 +29387,7 @@ var HiddenMessageTime = styled.span(_templateObject2$u || (_templateObject2$u =
29362
29387
  }, function (props) {
29363
29388
  return props.color;
29364
29389
  });
29365
- var MessageStatusAndTimeContainer = styled.span(_templateObject3$o || (_templateObject3$o = _taggedTemplateLiteralLoose(["\n visibility: ", ";\n display: ", ";\n align-items: flex-end;\n border-radius: 16px;\n padding: ", ";\n background-color: ", ";\n float: right;\n line-height: ", ";\n margin-right: ", ";\n margin-left: ", ";\n margin-bottom: ", ";\n direction: ", ";\n transform: translate(0px, 4px);\n white-space: nowrap;\n width: ", ";\n justify-content: ", ";\n\n & > svg {\n margin-left: 4px;\n height: 14px;\n width: 16px;\n }\n\n & > ", " {\n color: ", ";\n }\n\n ", "\n"])), function (props) {
29390
+ var MessageStatusAndTimeContainer = styled.span(_templateObject3$o || (_templateObject3$o = _taggedTemplateLiteralLoose(["\n visibility: ", ";\n display: ", ";\n align-items: flex-end;\n border-radius: 16px;\n padding: ", ";\n background-color: ", ";\n float: right;\n line-height: ", ";\n margin-right: ", ";\n margin-left: ", ";\n margin-bottom: ", ";\n direction: ", ";\n transform: translate(0px, 4px);\n white-space: nowrap;\n width: ", ";\n justify-content: ", ";\n z-index: 10;\n\n & > svg {\n margin-left: 4px;\n height: 14px;\n width: 16px;\n }\n\n & > ", " {\n color: ", ";\n }\n\n ", "\n"])), function (props) {
29366
29391
  return props.showOnlyOnHover && 'hidden';
29367
29392
  }, function (props) {
29368
29393
  return props.hide ? 'none' : 'flex';
@@ -29387,7 +29412,7 @@ var MessageStatusAndTimeContainer = styled.span(_templateObject3$o || (_template
29387
29412
  }, HiddenMessageTime, function (props) {
29388
29413
  return props.withAttachment ? props.messageTimeColorOnAttachment : '';
29389
29414
  }, function (props) {
29390
- return props.withAttachment && "\n position: absolute;\n z-index: 3;\n right: " + (props.fileAttachment ? '6px' : '10px') + ";\n bottom: " + (props.fileAttachment ? '9px' : '14px') + ";\n ";
29415
+ return props.withAttachment && "\n position: absolute;\n z-index: 10;\n right: " + (props.fileAttachment ? '6px' : '10px') + ";\n bottom: " + (props.fileAttachment ? '9px' : '14px') + ";\n ";
29391
29416
  });
29392
29417
  var MessageStatusUpdated = styled.span(_templateObject4$k || (_templateObject4$k = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n font-style: italic;\n font-weight: 400;\n font-size: ", ";\n color: ", ";\n"])), function (props) {
29393
29418
  return props.fontSize || '12px';
@@ -29530,7 +29555,9 @@ var MessageBody = function MessageBody(_ref) {
29530
29555
  handleMouseLeave = _ref.handleMouseLeave,
29531
29556
  handleReactionAddDelete = _ref.handleReactionAddDelete,
29532
29557
  handleCreateChat = _ref.handleCreateChat,
29533
- messageTextRef = _ref.messageTextRef;
29558
+ messageTextRef = _ref.messageTextRef,
29559
+ handleOpenUserProfile = _ref.handleOpenUserProfile,
29560
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
29534
29561
  var _useColor = useColors(),
29535
29562
  accentColor = _useColor[THEME_COLORS.ACCENT],
29536
29563
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -29731,7 +29758,9 @@ var MessageBody = function MessageBody(_ref) {
29731
29758
  contactsMap: contactsMap,
29732
29759
  getFromContacts: getFromContacts,
29733
29760
  accentColor: accentColor,
29734
- textSecondary: textSecondary
29761
+ textSecondary: textSecondary,
29762
+ onMentionNameClick: handleOpenUserProfile,
29763
+ shouldOpenUserProfileForMention: !!shouldOpenUserProfileForMention
29735
29764
  })), !withAttachments && message.state === MESSAGE_STATUS.DELETE ? (/*#__PURE__*/React__default.createElement(MessageStatusDeleted$1, {
29736
29765
  color: textSecondary
29737
29766
  }, " Message was deleted. ")) : '', messageStatusAndTimePosition === 'onMessage' && !notLinkAttachment && (messageStatusVisible || messageTimeVisible) ? (/*#__PURE__*/React__default.createElement(MessageStatusAndTime$1, {
@@ -30017,7 +30046,8 @@ var Message$1 = function Message(_ref) {
30017
30046
  theme = _ref.theme,
30018
30047
  messageTextFontSize = _ref.messageTextFontSize,
30019
30048
  messageTextLineHeight = _ref.messageTextLineHeight,
30020
- messageTimeColorOnAttachment = _ref.messageTimeColorOnAttachment;
30049
+ messageTimeColorOnAttachment = _ref.messageTimeColorOnAttachment,
30050
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
30021
30051
  var _useColor = useColors(),
30022
30052
  accentColor = _useColor[THEME_COLORS.ACCENT],
30023
30053
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS],
@@ -30281,8 +30311,22 @@ var Message$1 = function Message(_ref) {
30281
30311
  document.removeEventListener('mousedown', handleClick);
30282
30312
  };
30283
30313
  }, []);
30314
+ var handleOpenChannelDetails = function handleOpenChannelDetails() {
30315
+ dispatch(switchChannelInfoAC(true));
30316
+ };
30317
+ var handleOpenUserProfile = function handleOpenUserProfile(user) {
30318
+ if (getOpenChatOnUserInteraction() && user && !selectionIsActive) {
30319
+ dispatch(createChannelAC({
30320
+ metadata: '',
30321
+ type: DEFAULT_CHANNEL_TYPE.DIRECT,
30322
+ members: [_extends({}, user, {
30323
+ role: 'owner'
30324
+ })]
30325
+ }, true));
30326
+ handleOpenChannelDetails();
30327
+ }
30328
+ };
30284
30329
  return /*#__PURE__*/React__default.createElement(MessageItem, {
30285
- key: message.id || message.tid,
30286
30330
  className: 'message_item',
30287
30331
  rtl: ownMessageOnRightSide && !message.incoming,
30288
30332
  withAvatar: renderAvatar,
@@ -30320,7 +30364,7 @@ var Message$1 = function Message(_ref) {
30320
30364
  }, message.state === MESSAGE_STATUS.FAILED && (/*#__PURE__*/React__default.createElement(FailedMessageIcon, {
30321
30365
  rtl: ownMessageOnRightSide && !message.incoming
30322
30366
  }, /*#__PURE__*/React__default.createElement(ErrorIconWrapper, null))), CustomMessageItem ? (/*#__PURE__*/React__default.createElement(CustomMessageItem, {
30323
- key: message.id,
30367
+ key: message.id || message.tid,
30324
30368
  channel: channel,
30325
30369
  message: message,
30326
30370
  prevMessage: prevMessage,
@@ -30350,7 +30394,8 @@ var Message$1 = function Message(_ref) {
30350
30394
  handleReactionAddDelete: handleReactionAddDelete,
30351
30395
  handleScrollToRepliedMessage: handleScrollToRepliedMessage,
30352
30396
  handleMediaItemClick: handleMediaItemClick,
30353
- isThreadMessage: isThreadMessage
30397
+ isThreadMessage: isThreadMessage,
30398
+ handleOpenUserProfile: handleOpenUserProfile
30354
30399
  })) : (/*#__PURE__*/React__default.createElement(MessageBody$1, {
30355
30400
  message: message,
30356
30401
  channel: channel,
@@ -30470,7 +30515,9 @@ var Message$1 = function Message(_ref) {
30470
30515
  handleDeletePendingMessage: handleDeletePendingMessage,
30471
30516
  handleCreateChat: handleCreateChat,
30472
30517
  messageTextRef: messageTextRef,
30473
- messageTimeColorOnAttachment: messageTimeColorOnAttachment || textOnPrimary
30518
+ messageTimeColorOnAttachment: messageTimeColorOnAttachment || textOnPrimary,
30519
+ handleOpenUserProfile: handleOpenUserProfile,
30520
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
30474
30521
  })), messageStatusAndTimePosition === 'bottomOfMessage' && (messageStatusVisible || messageTimeVisible) && (/*#__PURE__*/React__default.createElement(MessageStatusAndTime$1, {
30475
30522
  message: message,
30476
30523
  showMessageTimeAndStatusOnlyOnHover: showMessageTimeAndStatusOnlyOnHover,
@@ -30718,6 +30765,7 @@ var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
30718
30765
  }));
30719
30766
  };
30720
30767
  var MessageList = function MessageList(_ref2) {
30768
+ var _channel$lastMessage, _channel$lastMessage3, _scrollRef$current;
30721
30769
  var messages = _ref2.messages,
30722
30770
  fontFamily = _ref2.fontFamily,
30723
30771
  _ref2$ownMessageOnRig = _ref2.ownMessageOnRightSide,
@@ -30858,7 +30906,8 @@ var MessageList = function MessageList(_ref2) {
30858
30906
  messageTimeFontSize = _ref2.messageTimeFontSize,
30859
30907
  messageTimeColor = _ref2.messageTimeColor,
30860
30908
  messageStatusAndTimeLineHeight = _ref2.messageStatusAndTimeLineHeight,
30861
- hiddenMessagesProperties = _ref2.hiddenMessagesProperties;
30909
+ hiddenMessagesProperties = _ref2.hiddenMessagesProperties,
30910
+ shouldOpenUserProfileForMention = _ref2.shouldOpenUserProfileForMention;
30862
30911
  var _useColor = useColors(),
30863
30912
  outgoingMessageBackground = _useColor[THEME_COLORS.OUTGOING_MESSAGE_BACKGROUND],
30864
30913
  themeBackgroundColor = _useColor[THEME_COLORS.BACKGROUND],
@@ -30870,7 +30919,8 @@ var MessageList = function MessageList(_ref2) {
30870
30919
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
30871
30920
  textSecondary = _useColor[THEME_COLORS.TEXT_SECONDARY],
30872
30921
  surface2 = _useColor[THEME_COLORS.SURFACE_2],
30873
- border = _useColor[THEME_COLORS.BORDER];
30922
+ border = _useColor[THEME_COLORS.BORDER],
30923
+ highlightedBackground = _useColor[THEME_COLORS.HIGHLIGHTED_BACKGROUND];
30874
30924
  var ChatClient = getClient();
30875
30925
  var user = ChatClient.user;
30876
30926
  var dispatch = useDispatch();
@@ -30882,12 +30932,14 @@ var MessageList = function MessageList(_ref2) {
30882
30932
  var tabIsActive = useSelector(tabIsActiveSelector, shallowEqual);
30883
30933
  var selectedMessagesMap = useSelector(selectedMessagesMapSelector);
30884
30934
  var scrollToNewMessage = useSelector(scrollToNewMessageSelector, shallowEqual);
30935
+ var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, shallowEqual);
30885
30936
  var scrollToRepliedMessage = useSelector(scrollToMessageSelector, shallowEqual);
30886
30937
  var browserTabIsActive = useSelector(browserTabIsActiveSelector, shallowEqual);
30887
30938
  var hasNextMessages = useSelector(messagesHasNextSelector, shallowEqual);
30888
30939
  var hasPrevMessages = useSelector(messagesHasPrevSelector, shallowEqual);
30889
30940
  var messagesLoading = useSelector(messagesLoadingState);
30890
30941
  var draggingSelector = useSelector(isDraggingSelector, shallowEqual);
30942
+ var showScrollToNewMessageButton = useSelector(showScrollToNewMessageButtonSelector, shallowEqual);
30891
30943
  var _useState = useState(''),
30892
30944
  unreadMessageId = _useState[0],
30893
30945
  setUnreadMessageId = _useState[1];
@@ -30913,6 +30965,12 @@ var MessageList = function MessageList(_ref2) {
30913
30965
  var _useState8 = useState(null),
30914
30966
  scrollToReply = _useState8[0],
30915
30967
  setScrollToReply = _useState8[1];
30968
+ var _useState9 = useState(0),
30969
+ previousScrollTop = _useState9[0],
30970
+ setPreviousScrollTop = _useState9[1];
30971
+ var _useState0 = useState(false),
30972
+ shouldPreserveScroll = _useState0[0],
30973
+ setShouldPreserveScroll = _useState0[1];
30916
30974
  var messageForReply = {};
30917
30975
  var messageList = useMemo(function () {
30918
30976
  return messages;
@@ -30943,8 +31001,17 @@ var MessageList = function MessageList(_ref2) {
30943
31001
  messageTopDate.style.display = 'none';
30944
31002
  }
30945
31003
  };
30946
- var handleMessagesListScroll = function handleMessagesListScroll(event) {
31004
+ var handleMessagesListScroll = useCallback(function (event) {
30947
31005
  try {
31006
+ if (scrollToMentionedMessage) {
31007
+ var _target = event.target;
31008
+ if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
31009
+ dispatch(showScrollToNewMessageButtonAC(true));
31010
+ } else {
31011
+ dispatch(showScrollToNewMessageButtonAC(false));
31012
+ }
31013
+ return Promise.resolve();
31014
+ }
30948
31015
  setShowTopDate(true);
30949
31016
  clearTimeout(hideTopDateTimeout.current);
30950
31017
  hideTopDateTimeout.current = setTimeout(function () {
@@ -31006,7 +31073,7 @@ var MessageList = function MessageList(_ref2) {
31006
31073
  } catch (e) {
31007
31074
  return Promise.reject(e);
31008
31075
  }
31009
- };
31076
+ }, [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, loading, hasPrevMessages, hasNextMessages, messagesIndexMap, lastVisibleMessageId, connectionStatus, shouldLoadMessages, loadDirection, getHasPrevCached, getHasNextCached, scrollToReply]);
31010
31077
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
31011
31078
  try {
31012
31079
  prevDisable = true;
@@ -31033,6 +31100,9 @@ var MessageList = function MessageList(_ref2) {
31033
31100
  }
31034
31101
  };
31035
31102
  var handleLoadMoreMessages = function handleLoadMoreMessages(direction, limit) {
31103
+ if (scrollToMentionedMessage) {
31104
+ return;
31105
+ }
31036
31106
  var lastMessageId = messages.length && messages[messages.length - 1].id;
31037
31107
  var firstMessageId = messages.length && messages[0].id;
31038
31108
  var hasPrevCached = getHasPrevCached();
@@ -31133,6 +31203,12 @@ var MessageList = function MessageList(_ref2) {
31133
31203
  e.dataTransfer.clearData();
31134
31204
  }
31135
31205
  };
31206
+ useEffect(function () {
31207
+ var _messages, _channel$lastMessage2;
31208
+ 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) {
31209
+ dispatch(showScrollToNewMessageButtonAC(false));
31210
+ }
31211
+ }, [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]);
31136
31212
  useEffect(function () {
31137
31213
  if (scrollToRepliedMessage) {
31138
31214
  loading = false;
@@ -31141,6 +31217,7 @@ var MessageList = function MessageList(_ref2) {
31141
31217
  if (repliedMessage) {
31142
31218
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
31143
31219
  scrollRef.current.scrollTop = repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200);
31220
+ scrollRef.current.style.scrollBehavior = 'smooth';
31144
31221
  if (!channel.backToLinkedChannel) {
31145
31222
  repliedMessage && repliedMessage.classList.add('highlight');
31146
31223
  }
@@ -31198,7 +31275,7 @@ var MessageList = function MessageList(_ref2) {
31198
31275
  clearVisibleMessagesMap();
31199
31276
  }
31200
31277
  if (channel) {
31201
- dispatch(getMessagesAC(channel));
31278
+ dispatch(getMessagesAC(channel, true, undefined, undefined, true));
31202
31279
  }
31203
31280
  if (channel.id) {
31204
31281
  if (channel.newMessageCount && channel.newMessageCount > 0) {
@@ -31212,6 +31289,8 @@ var MessageList = function MessageList(_ref2) {
31212
31289
  if (selectedMessagesMap && selectedMessagesMap.size) {
31213
31290
  dispatch(clearSelectedMessagesAC());
31214
31291
  }
31292
+ setPreviousScrollTop(0);
31293
+ setShouldPreserveScroll(false);
31215
31294
  nextDisable = false;
31216
31295
  prevDisable = false;
31217
31296
  scrollToBottom = true;
@@ -31231,6 +31310,13 @@ var MessageList = function MessageList(_ref2) {
31231
31310
  }
31232
31311
  }, [messages]);
31233
31312
  useEffect(function () {
31313
+ if (scrollRef.current) {
31314
+ var isAtBottom = scrollRef.current.scrollTop > -50;
31315
+ if (!isAtBottom) {
31316
+ setPreviousScrollTop(scrollRef.current.scrollTop);
31317
+ setShouldPreserveScroll(true);
31318
+ }
31319
+ }
31234
31320
  if (loading) {
31235
31321
  if (loadDirection !== 'next') {
31236
31322
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
@@ -31291,6 +31377,17 @@ var MessageList = function MessageList(_ref2) {
31291
31377
  dispatch(scrollToNewMessageAC(true));
31292
31378
  scrollToBottom = false;
31293
31379
  }
31380
+ if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
31381
+ requestAnimationFrame(function () {
31382
+ if (scrollRef.current) {
31383
+ scrollRef.current.style.scrollBehavior = 'inherit';
31384
+ scrollRef.current.scrollTop = previousScrollTop;
31385
+ scrollRef.current.style.scrollBehavior = 'smooth';
31386
+ }
31387
+ setShouldPreserveScroll(false);
31388
+ setPreviousScrollTop(0);
31389
+ });
31390
+ }
31294
31391
  }, [messages]);
31295
31392
  useDidUpdate(function () {
31296
31393
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
@@ -31391,9 +31488,7 @@ var MessageList = function MessageList(_ref2) {
31391
31488
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
31392
31489
  var messageMetas = isJSON(message.metadata) ? JSON.parse(message.metadata) : message.metadata;
31393
31490
  messagesIndexMap[message.id] = index;
31394
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
31395
- key: message.id || message.tid
31396
- }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
31491
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
31397
31492
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
31398
31493
  theme: theme,
31399
31494
  lastIndex: false,
@@ -31409,6 +31504,7 @@ var MessageList = function MessageList(_ref2) {
31409
31504
  marginBottom: prevMessage && prevMessage.type === 'system' && message.type !== 'system' ? '16px' : '0',
31410
31505
  marginTop: differentUserMessageSpacing
31411
31506
  }), message.type === 'system' ? (/*#__PURE__*/React__default.createElement(SystemMessage, {
31507
+ key: message.id || message.tid,
31412
31508
  channel: channel,
31413
31509
  message: message,
31414
31510
  nextMessage: nextMessage,
@@ -31422,8 +31518,10 @@ var MessageList = function MessageList(_ref2) {
31422
31518
  backgroundColor: dateDividerBackgroundColor,
31423
31519
  borderRadius: dateDividerBorderRadius
31424
31520
  })) : (/*#__PURE__*/React__default.createElement(MessageWrapper, {
31521
+ key: message.id || message.tid,
31425
31522
  id: message.id,
31426
- className: (message.incoming ? incomingMessageStyles === null || incomingMessageStyles === void 0 ? void 0 : incomingMessageStyles.classname : outgoingMessageStyles === null || outgoingMessageStyles === void 0 ? void 0 : outgoingMessageStyles.classname) || ''
31523
+ className: (message.incoming ? incomingMessageStyles === null || incomingMessageStyles === void 0 ? void 0 : incomingMessageStyles.classname : outgoingMessageStyles === null || outgoingMessageStyles === void 0 ? void 0 : outgoingMessageStyles.classname) || '',
31524
+ highlightBg: highlightedBackground
31427
31525
  }, /*#__PURE__*/React__default.createElement(Message$2, {
31428
31526
  message: _extends({}, message, {
31429
31527
  metadata: messageMetas
@@ -31554,7 +31652,8 @@ var MessageList = function MessageList(_ref2) {
31554
31652
  messageStateColor: messageStateColor,
31555
31653
  messageTimeFontSize: messageTimeFontSize,
31556
31654
  messageTimeColor: messageTimeColor,
31557
- messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight
31655
+ messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight,
31656
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
31558
31657
  }))), isUnreadMessage ? (/*#__PURE__*/React__default.createElement(MessageDivider, {
31559
31658
  theme: theme,
31560
31659
  newMessagesSeparatorTextColor: newMessagesSeparatorTextColor,
@@ -31635,7 +31734,9 @@ var DropAttachmentArea = styled.div(_templateObject7$e || (_templateObject7$e =
31635
31734
  }, IconWrapper$1, function (props) {
31636
31735
  return props.iconBackgroundColor;
31637
31736
  });
31638
- var MessageWrapper = styled.div(_templateObject8$d || (_templateObject8$d = _taggedTemplateLiteralLoose(["\n &.highlight {\n & .messageBody {\n transform: scale(1.1);\n background-color: #d5d5d5;\n }\n }\n"])));
31737
+ var MessageWrapper = styled.div(_templateObject8$d || (_templateObject8$d = _taggedTemplateLiteralLoose(["\n &.highlight {\n & .messageBody {\n transform: scale(1.1);\n background-color: ", ";\n }\n }\n"])), function (props) {
31738
+ return props.highlightBg || '#d5d5d5';
31739
+ });
31639
31740
  var NoMessagesContainer = styled.div(_templateObject9$c || (_templateObject9$c = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: column;\n height: 100%;\n width: 100%;\n font-weight: 400;\n font-size: 15px;\n line-height: 18px;\n letter-spacing: -0.2px;\n color: ", ";\n"])), function (props) {
31640
31741
  return props.color;
31641
31742
  });
@@ -31787,7 +31888,8 @@ var MessagesContainer = function MessagesContainer(_ref) {
31787
31888
  messageTimeColor = _ref.messageTimeColor,
31788
31889
  messageStatusAndTimeLineHeight = _ref.messageStatusAndTimeLineHeight,
31789
31890
  _ref$hiddenMessagesPr = _ref.hiddenMessagesProperties,
31790
- hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr;
31891
+ hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr,
31892
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
31791
31893
  var messages = useSelector(activeChannelMessagesSelector) || [];
31792
31894
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MessageList, {
31793
31895
  messages: messages,
@@ -31915,7 +32017,8 @@ var MessagesContainer = function MessagesContainer(_ref) {
31915
32017
  messageTimeFontSize: messageTimeFontSize,
31916
32018
  messageTimeColor: messageTimeColor,
31917
32019
  messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight,
31918
- hiddenMessagesProperties: hiddenMessagesProperties
32020
+ hiddenMessagesProperties: hiddenMessagesProperties,
32021
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
31919
32022
  }));
31920
32023
  };
31921
32024
 
@@ -34074,7 +34177,7 @@ var RecordingAnimation = function RecordingAnimation(_ref2) {
34074
34177
  }));
34075
34178
  };
34076
34179
 
34077
- var _templateObject$I, _templateObject2$D, _templateObject3$w, _templateObject4$r, _templateObject5$n, _templateObject6$j, _templateObject7$h, _templateObject8$f, _templateObject9$d, _templateObject0$c, _templateObject1$8, _templateObject10$5, _templateObject11$5, _templateObject12$4, _templateObject13$3, _templateObject14$2, _templateObject15$2, _templateObject16$2, _templateObject17$2, _templateObject18$2, _templateObject19$2, _templateObject20$1, _templateObject21$1, _templateObject22$1, _templateObject23$1, _templateObject24$1, _templateObject25$1, _templateObject26$1, _templateObject27$1, _templateObject28$1, _templateObject29$1, _templateObject30$1, _templateObject31$1, _templateObject32$1, _templateObject33$1, _templateObject34$1;
34180
+ var _templateObject$I, _templateObject2$D, _templateObject3$w, _templateObject4$r, _templateObject5$n, _templateObject6$j, _templateObject7$h, _templateObject8$f, _templateObject9$d, _templateObject0$c, _templateObject1$8, _templateObject10$5, _templateObject11$5, _templateObject12$4, _templateObject13$3, _templateObject14$2, _templateObject15$2, _templateObject16$2, _templateObject17$2, _templateObject18$2, _templateObject19$2, _templateObject20$2, _templateObject21$1, _templateObject22$1, _templateObject23$1, _templateObject24$1, _templateObject25$1, _templateObject26$1, _templateObject27$1, _templateObject28$1, _templateObject29$1, _templateObject30$1, _templateObject31$1, _templateObject32$1, _templateObject33$1, _templateObject34$1;
34078
34181
  function AutoFocusPlugin(_ref) {
34079
34182
  var messageForReply = _ref.messageForReply;
34080
34183
  var _useLexicalComposerCo = useLexicalComposerContext(),
@@ -34389,17 +34492,6 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34389
34492
  }
34390
34493
  };
34391
34494
  var handleSendEditMessage = function handleSendEditMessage(event) {
34392
- if (typingTimout) {
34393
- if (!inTypingStateTimout) {
34394
- handleSendTypingState(true);
34395
- }
34396
- clearTimeout(typingTimout);
34397
- } else {
34398
- handleSendTypingState(true);
34399
- }
34400
- setTypingTimout(setTimeout(function () {
34401
- setTypingTimout(0);
34402
- }, 2000));
34403
34495
  var shiftKey = event.shiftKey,
34404
34496
  type = event.type,
34405
34497
  code = event.code;
@@ -34501,6 +34593,18 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34501
34593
  setMentionedMembers([]);
34502
34594
  setMessageBodyAttributes([]);
34503
34595
  dispatch(setCloseSearchChannelsAC(true));
34596
+ } else {
34597
+ if (typingTimout) {
34598
+ if (!inTypingStateTimout) {
34599
+ handleSendTypingState(true);
34600
+ }
34601
+ clearTimeout(typingTimout);
34602
+ } else {
34603
+ handleSendTypingState(true);
34604
+ }
34605
+ setTypingTimout(setTimeout(function () {
34606
+ setTypingTimout(0);
34607
+ }, 2000));
34504
34608
  }
34505
34609
  };
34506
34610
  var handleEditMessage = function handleEditMessage() {
@@ -34729,7 +34833,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34729
34833
  fileChecksum = "" + reader.result;
34730
34834
  }
34731
34835
  return Promise.resolve(hashString(fileChecksum || '')).then(function (checksumHash) {
34732
- function _temp10() {
34836
+ function _temp12() {
34733
34837
  if (dataFromDb) {
34734
34838
  cachedUrl = dataFromDb.url;
34735
34839
  setPendingAttachment(tid, {
@@ -34741,60 +34845,86 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34741
34845
  checksum: checksumHash
34742
34846
  });
34743
34847
  }
34744
- var _temp0 = function () {
34848
+ var _temp10 = function () {
34745
34849
  if (customUploader) {
34746
- if (fileType === 'image') {
34747
- resizeImage(file).then(function (resizedFile) {
34748
- try {
34749
- setAttachments(function (prevState) {
34750
- return [].concat(prevState, [{
34751
- data: file,
34752
- cachedUrl: cachedUrl,
34753
- upload: false,
34754
- type: isMediaAttachment ? fileType : 'file',
34755
- attachmentUrl: URL.createObjectURL(resizedFile.blob),
34756
- tid: tid,
34757
- size: dataFromDb ? dataFromDb.size : file.size,
34758
- metadata: dataFromDb && dataFromDb.metadata
34759
- }]);
34760
- });
34761
- return Promise.resolve();
34762
- } catch (e) {
34763
- return Promise.reject(e);
34764
- }
34765
- });
34766
- } else if (fileType === 'video') {
34767
- setAttachments(function (prevState) {
34768
- return [].concat(prevState, [{
34769
- data: file,
34770
- cachedUrl: cachedUrl,
34771
- upload: false,
34772
- type: isMediaAttachment ? fileType : 'file',
34773
- attachmentUrl: URL.createObjectURL(file),
34774
- tid: tid,
34775
- size: dataFromDb ? dataFromDb.size : file.size,
34776
- metadata: dataFromDb && dataFromDb.metadata
34777
- }]);
34778
- });
34779
- } else {
34780
- setAttachments(function (prevState) {
34781
- return [].concat(prevState, [{
34782
- data: file,
34783
- cachedUrl: cachedUrl,
34784
- upload: false,
34785
- type: 'file',
34786
- tid: tid,
34787
- size: dataFromDb ? dataFromDb.size : file.size,
34788
- metadata: dataFromDb && dataFromDb.metadata
34789
- }]);
34790
- });
34791
- }
34850
+ var _temp2 = function () {
34851
+ if (fileType === 'image') {
34852
+ resizeImage(file).then(function (resizedFile) {
34853
+ try {
34854
+ return Promise.resolve(createImageThumbnail(file)).then(function (_ref4) {
34855
+ var thumbnail = _ref4.thumbnail,
34856
+ imageWidth = _ref4.imageWidth,
34857
+ imageHeight = _ref4.imageHeight;
34858
+ setAttachments(function (prevState) {
34859
+ var _resizedFile$blob;
34860
+ return [].concat(prevState, [{
34861
+ data: file,
34862
+ cachedUrl: cachedUrl,
34863
+ upload: false,
34864
+ type: isMediaAttachment ? fileType : 'file',
34865
+ attachmentUrl: URL.createObjectURL(resizedFile.blob),
34866
+ tid: tid,
34867
+ size: resizedFile !== null && resizedFile !== void 0 && resizedFile.blob ? resizedFile === null || resizedFile === void 0 ? void 0 : (_resizedFile$blob = resizedFile.blob) === null || _resizedFile$blob === void 0 ? void 0 : _resizedFile$blob.size : file.size,
34868
+ metadata: _extends({}, dataFromDb && dataFromDb.metadata, {
34869
+ szw: imageWidth,
34870
+ szh: imageHeight,
34871
+ tmb: thumbnail
34872
+ })
34873
+ }]);
34874
+ });
34875
+ });
34876
+ } catch (e) {
34877
+ return Promise.reject(e);
34878
+ }
34879
+ });
34880
+ } else {
34881
+ var _temp13 = function () {
34882
+ if (fileType === 'video') {
34883
+ return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref5) {
34884
+ var thumb = _ref5.thumb,
34885
+ width = _ref5.width,
34886
+ height = _ref5.height;
34887
+ setAttachments(function (prevState) {
34888
+ return [].concat(prevState, [{
34889
+ data: file,
34890
+ cachedUrl: cachedUrl,
34891
+ upload: false,
34892
+ type: isMediaAttachment ? fileType : 'file',
34893
+ attachmentUrl: URL.createObjectURL(file),
34894
+ tid: tid,
34895
+ size: dataFromDb ? dataFromDb.size : file.size,
34896
+ metadata: _extends({}, dataFromDb && dataFromDb.metadata, {
34897
+ szw: width,
34898
+ szh: height,
34899
+ tmb: thumb
34900
+ })
34901
+ }]);
34902
+ });
34903
+ });
34904
+ } else {
34905
+ setAttachments(function (prevState) {
34906
+ return [].concat(prevState, [{
34907
+ data: file,
34908
+ cachedUrl: cachedUrl,
34909
+ upload: false,
34910
+ type: 'file',
34911
+ tid: tid,
34912
+ size: dataFromDb ? dataFromDb.size : file.size,
34913
+ metadata: dataFromDb && dataFromDb.metadata
34914
+ }]);
34915
+ });
34916
+ }
34917
+ }();
34918
+ if (_temp13 && _temp13.then) return _temp13.then(function () {});
34919
+ }
34920
+ }();
34921
+ if (_temp2 && _temp2.then) return _temp2.then(function () {});
34792
34922
  } else {
34793
- var _temp9 = function () {
34923
+ var _temp1 = function () {
34794
34924
  if (fileType === 'image') {
34795
- var _temp5 = function () {
34925
+ var _temp7 = function () {
34796
34926
  if (isMediaAttachment) {
34797
- var _temp2 = function _temp2() {
34927
+ var _temp4 = function _temp4() {
34798
34928
  if (file.type === 'image/gif') {
34799
34929
  setAttachments(function (prevState) {
34800
34930
  return [].concat(prevState, [{
@@ -34854,23 +34984,23 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34854
34984
  }
34855
34985
  };
34856
34986
  var metas = {};
34857
- var _temp = function () {
34987
+ var _temp3 = function () {
34858
34988
  if (dataFromDb) {
34859
34989
  metas = dataFromDb.metadata;
34860
34990
  } else {
34861
- return Promise.resolve(createImageThumbnail(file)).then(function (_ref4) {
34862
- var thumbnail = _ref4.thumbnail,
34863
- imageWidth = _ref4.imageWidth,
34864
- imageHeight = _ref4.imageHeight;
34991
+ return Promise.resolve(createImageThumbnail(file)).then(function (_ref6) {
34992
+ var thumbnail = _ref6.thumbnail,
34993
+ imageWidth = _ref6.imageWidth,
34994
+ imageHeight = _ref6.imageHeight;
34865
34995
  metas.imageHeight = imageHeight;
34866
34996
  metas.imageWidth = imageWidth;
34867
34997
  metas.thumbnail = thumbnail;
34868
34998
  });
34869
34999
  }
34870
35000
  }();
34871
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
35001
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
34872
35002
  } else {
34873
- var _temp4 = function _temp4() {
35003
+ var _temp6 = function _temp6() {
34874
35004
  setAttachments(function (prevState) {
34875
35005
  return [].concat(prevState, [{
34876
35006
  data: file,
@@ -34887,24 +35017,24 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34887
35017
  });
34888
35018
  };
34889
35019
  var _metas = {};
34890
- var _temp3 = function () {
35020
+ var _temp5 = function () {
34891
35021
  if (dataFromDb) {
34892
35022
  _metas = dataFromDb.metadata;
34893
35023
  } else {
34894
- return Promise.resolve(createImageThumbnail(file, undefined, 50, 50)).then(function (_ref5) {
34895
- var thumbnail = _ref5.thumbnail;
35024
+ return Promise.resolve(createImageThumbnail(file, undefined, 50, 50)).then(function (_ref7) {
35025
+ var thumbnail = _ref7.thumbnail;
34896
35026
  _metas.thumbnail = thumbnail;
34897
35027
  });
34898
35028
  }
34899
35029
  }();
34900
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
35030
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
34901
35031
  }
34902
35032
  }();
34903
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
35033
+ if (_temp7 && _temp7.then) return _temp7.then(function () {});
34904
35034
  } else {
34905
- var _temp11 = function () {
35035
+ var _temp14 = function () {
34906
35036
  if (fileType === 'video') {
34907
- var _temp7 = function _temp7() {
35037
+ var _temp9 = function _temp9() {
34908
35038
  setAttachments(function (prevState) {
34909
35039
  return [].concat(prevState, [{
34910
35040
  data: file,
@@ -34919,14 +35049,14 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34919
35049
  });
34920
35050
  };
34921
35051
  var metas = {};
34922
- var _temp6 = function () {
35052
+ var _temp8 = function () {
34923
35053
  if (dataFromDb) {
34924
35054
  metas = dataFromDb.metadata;
34925
35055
  } else {
34926
- return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref6) {
34927
- var thumb = _ref6.thumb,
34928
- width = _ref6.width,
34929
- height = _ref6.height;
35056
+ return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref8) {
35057
+ var thumb = _ref8.thumb,
35058
+ width = _ref8.width,
35059
+ height = _ref8.height;
34930
35060
  metas.tmb = thumb;
34931
35061
  metas.width = width;
34932
35062
  metas.height = height;
@@ -34934,7 +35064,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34934
35064
  });
34935
35065
  }
34936
35066
  }();
34937
- return _temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6);
35067
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
34938
35068
  } else {
34939
35069
  setAttachments(function (prevState) {
34940
35070
  return [].concat(prevState, [{
@@ -34949,23 +35079,23 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34949
35079
  });
34950
35080
  }
34951
35081
  }();
34952
- if (_temp11 && _temp11.then) return _temp11.then(function () {});
35082
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
34953
35083
  }
34954
35084
  }();
34955
- if (_temp9 && _temp9.then) return _temp9.then(function () {});
35085
+ if (_temp1 && _temp1.then) return _temp1.then(function () {});
34956
35086
  }
34957
35087
  }();
34958
- if (_temp0 && _temp0.then) return _temp0.then(function () {});
35088
+ if (_temp10 && _temp10.then) return _temp10.then(function () {});
34959
35089
  }
34960
35090
  var dataFromDb;
34961
- var _temp1 = _catch(function () {
35091
+ var _temp11 = _catch(function () {
34962
35092
  return Promise.resolve(_getDataFromDB(DB_NAMES.FILES_STORAGE, DB_STORE_NAMES.ATTACHMENTS, checksumHash, 'checksum')).then(function (_getDataFromDB) {
34963
35093
  dataFromDb = _getDataFromDB;
34964
35094
  });
34965
35095
  }, function (e) {
34966
35096
  log.error('error in get data from db . . . . ', e);
34967
35097
  });
34968
- return _temp1 && _temp1.then ? _temp1.then(_temp10) : _temp10(_temp1);
35098
+ return _temp11 && _temp11.then ? _temp11.then(_temp12) : _temp12(_temp11);
34969
35099
  });
34970
35100
  } catch (e) {
34971
35101
  return Promise.reject(e);
@@ -35612,10 +35742,10 @@ var SendMessageInput = function SendMessageInput(_ref3) {
35612
35742
  showRecording: showRecording
35613
35743
  }))))))))));
35614
35744
  };
35615
- var SendMessageWrapper = styled.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n"])), function (props) {
35745
+ var SendMessageWrapper = styled.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n position: relative;\n z-index: 15;\n"])), function (props) {
35616
35746
  return props.backgroundColor;
35617
35747
  });
35618
- var Container$k = styled.div(_templateObject2$D || (_templateObject2$D = _taggedTemplateLiteralLoose(["\n margin: ", ";\n border: ", ";\n border-radius: ", ";\n position: relative;\n padding: ", ";\n\n & span.rdw-suggestion-dropdown {\n position: absolute;\n bottom: 100%;\n height: 160px;\n min-width: 150px;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 6px 12px;\n border: 1px solid #ccc;\n background: #fff;\n z-index: 99;\n }\n\n & .text_formatting_toolbar {\n display: ", ";\n position: fixed;\n top: ", ";\n left: ", ";\n }\n\n & .rdw-suggestion-option-active {\n background-color: rgb(243, 245, 248);\n }\n\n & .custom_editor {\n cursor: text;\n\n & .rdw-mention-link {\n color: ", ";\n }\n }\n"])), function (props) {
35748
+ var Container$k = styled.div(_templateObject2$D || (_templateObject2$D = _taggedTemplateLiteralLoose(["\n margin: ", ";\n border: ", ";\n border-radius: ", ";\n position: relative;\n padding: ", ";\n z-index: 15;\n\n & span.rdw-suggestion-dropdown {\n position: absolute;\n bottom: 100%;\n height: 160px;\n min-width: 150px;\n display: flex;\n flex-direction: column;\n overflow: auto;\n padding: 6px 12px;\n border: 1px solid #ccc;\n background: #fff;\n z-index: 99;\n }\n\n & .text_formatting_toolbar {\n display: ", ";\n position: fixed;\n top: ", ";\n left: ", ";\n }\n\n & .rdw-suggestion-option-active {\n background-color: rgb(243, 245, 248);\n }\n\n & .custom_editor {\n cursor: text;\n\n & .rdw-mention-link {\n color: ", ";\n }\n }\n"])), function (props) {
35619
35749
  return props.margin || '30px 0 16px';
35620
35750
  }, function (props) {
35621
35751
  return props.border || '';
@@ -35727,7 +35857,7 @@ var TypingIndicatorCont = styled.div(_templateObject18$2 || (_templateObject18$2
35727
35857
  var TypingFrom = styled.h5(_templateObject19$2 || (_templateObject19$2 = _taggedTemplateLiteralLoose(["\n margin: 0 4px 0 0;\n font-weight: 400;\n font-size: 13px;\n line-height: 16px;\n letter-spacing: -0.2px;\n color: ", ";\n"])), function (props) {
35728
35858
  return props.color;
35729
35859
  });
35730
- var sizeAnimation = keyframes(_templateObject20$1 || (_templateObject20$1 = _taggedTemplateLiteralLoose(["\n 0% {\n width: 2px;\n height: 2px;\n opacity: 0.4;\n }\n 50% {\n width: 2px;\n height: 2px;\n opacity: 0.4;\n }\n 100% {\n width: 6px;\n height: 6px;\n opacity: 1;\n }\n"])));
35860
+ var sizeAnimation = keyframes(_templateObject20$2 || (_templateObject20$2 = _taggedTemplateLiteralLoose(["\n 0% {\n width: 2px;\n height: 2px;\n opacity: 0.4;\n }\n 50% {\n width: 2px;\n height: 2px;\n opacity: 0.4;\n }\n 100% {\n width: 6px;\n height: 6px;\n opacity: 1;\n }\n"])));
35731
35861
  var DotOne = styled.span(_templateObject21$1 || (_templateObject21$1 = _taggedTemplateLiteralLoose([""])));
35732
35862
  var DotTwo = styled.span(_templateObject22$1 || (_templateObject22$1 = _taggedTemplateLiteralLoose([""])));
35733
35863
  var DotThree = styled.span(_templateObject23$1 || (_templateObject23$1 = _taggedTemplateLiteralLoose([""])));
@@ -38690,7 +38820,9 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38690
38820
  unreadCountWidth = _ref.unreadCountWidth,
38691
38821
  unreadCountHeight = _ref.unreadCountHeight,
38692
38822
  unreadCountFontSize = _ref.unreadCountFontSize,
38693
- unreadCountTextColor = _ref.unreadCountTextColor;
38823
+ unreadCountTextColor = _ref.unreadCountTextColor,
38824
+ _ref$animateFrom = _ref.animateFrom,
38825
+ animateFrom = _ref$animateFrom === void 0 ? 'bottom' : _ref$animateFrom;
38694
38826
  var _useColor = useColors(),
38695
38827
  accentColor = _useColor[THEME_COLORS.ACCENT],
38696
38828
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS];
@@ -38713,12 +38845,8 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38713
38845
  if (repliedMessage) {
38714
38846
  var scrollRef = document.getElementById('scrollableDiv');
38715
38847
  if (scrollRef) {
38716
- scrollRef.scrollTop = repliedMessage.offsetTop - scrollRef.offsetHeight / 2;
38848
+ scrollRef.scrollTop = repliedMessage.offsetTop;
38717
38849
  }
38718
- repliedMessage.classList.add('highlight');
38719
- setTimeout(function () {
38720
- repliedMessage.classList.remove('highlight');
38721
- }, 1000);
38722
38850
  }
38723
38851
  } else {
38724
38852
  dispatch(getMessagesAC(channel, undefined, messageId));
@@ -38728,7 +38856,9 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38728
38856
  return Promise.reject(e);
38729
38857
  }
38730
38858
  };
38731
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, showScrollToNewMessageButton && (/*#__PURE__*/React__default.createElement(BottomButton, {
38859
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BottomButton, {
38860
+ show: !!showScrollToNewMessageButton,
38861
+ animateFrom: animateFrom,
38732
38862
  theme: theme,
38733
38863
  width: buttonWidth,
38734
38864
  height: buttonHeight,
@@ -38748,12 +38878,16 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38748
38878
  fontSize: unreadCountFontSize,
38749
38879
  backgroundColor: accentColor,
38750
38880
  isMuted: channel.muted
38751
- }, channel.newMessageCount ? channel.newMessageCount > 99 ? '99+' : channel.newMessageCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgChevronDown, null))));
38881
+ }, channel.newMessageCount ? channel.newMessageCount > 99 ? '99+' : channel.newMessageCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgChevronDown, null)));
38752
38882
  };
38753
- var BottomButton = styled.div(_templateObject$W || (_templateObject$W = _taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: ", ";\n right: ", ";\n margin-right: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n border-radius: 50px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n z-index: 14;\n\n & > svg {\n color: rgba(129, 140, 153, 1);\n }\n\n & > span {\n bottom: 32px;\n right: 0;\n }\n"])), function (props) {
38754
- return props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + "px";
38883
+ var BottomButton = styled.div(_templateObject$W || (_templateObject$W = _taggedTemplateLiteralLoose(["\n transition: all 0.3s ease-in-out;\n position: absolute;\n ", ";\n\n ", ";\n\n ", ";\n right: ", "px;\n\n margin-right: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n border-radius: 50px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n z-index: 14;\n & > svg {\n color: rgba(129, 140, 153, 1);\n }\n\n & > span {\n bottom: 32px;\n right: 0;\n }\n"])), function (props) {
38884
+ return props.animateFrom === 'bottom' && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) - 130) + "px";
38755
38885
  }, function (props) {
38756
- return (props.rightPosition === undefined ? 16 : props.rightPosition) + "px";
38886
+ return props.animateFrom === 'right' && "right: " + (props.rightPosition === undefined ? 16 : props.rightPosition - 100) + "px";
38887
+ }, function (props) {
38888
+ return props.show && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition)) + "px";
38889
+ }, function (props) {
38890
+ return props.rightPosition === undefined ? 16 : props.rightPosition;
38757
38891
  }, function (props) {
38758
38892
  return props.backgroundColor;
38759
38893
  });
@@ -38815,7 +38949,9 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38815
38949
  unreadCountWidth = _ref.unreadCountWidth,
38816
38950
  unreadCountHeight = _ref.unreadCountHeight,
38817
38951
  unreadCountFontSize = _ref.unreadCountFontSize,
38818
- unreadCountTextColor = _ref.unreadCountTextColor;
38952
+ unreadCountTextColor = _ref.unreadCountTextColor,
38953
+ _ref$animateFrom = _ref.animateFrom,
38954
+ animateFrom = _ref$animateFrom === void 0 ? 'bottom' : _ref$animateFrom;
38819
38955
  var _useColor = useColors(),
38820
38956
  accentColor = _useColor[THEME_COLORS.ACCENT],
38821
38957
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS];
@@ -38825,19 +38961,41 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38825
38961
  var sendMessageInputHeight = useSelector(sendMessageInputHeightSelector);
38826
38962
  var showScrollToNewMessageButton = useSelector(showScrollToNewMessageButtonSelector);
38827
38963
  var messages = useSelector(activeChannelMessagesSelector) || [];
38828
- var handleScrollToBottom = function handleScrollToBottom() {
38829
- if (channel.newMentionCount >= 3 && (!channel.mentionsIds || channel.mentionsIds.length < 3)) {
38830
- dispatch(getChannelMentionsAC(channel.id));
38831
- }
38832
- if (channel.mentionsIds && channel.mentionsIds.length) {
38833
- handleScrollToRepliedMessage(channel.mentionsIds[0]);
38834
- dispatch(markMessagesAsReadAC(channel.id, [channel.mentionsIds[0]]));
38964
+ var isMessageRead = useCallback(function (messageId) {
38965
+ var _message$userMarkers;
38966
+ var message = messages.find(function (msg) {
38967
+ return msg.id === messageId;
38968
+ });
38969
+ return message === null || message === void 0 ? void 0 : (_message$userMarkers = message.userMarkers) === null || _message$userMarkers === void 0 ? void 0 : _message$userMarkers.find(function (marker) {
38970
+ return marker.name === MESSAGE_DELIVERY_STATUS.READ;
38971
+ });
38972
+ }, [messages]);
38973
+ var _handleScrollToMentions = function handleScrollToMentions(mentionsIds) {
38974
+ var newMentionsIds = [].concat(mentionsIds);
38975
+ var isRead = isMessageRead(mentionsIds[0]);
38976
+ if (!isRead) {
38977
+ handleScrollToMentionedMessage(mentionsIds[0]);
38978
+ dispatch(markMessagesAsReadAC(channel.id, [mentionsIds[0]]));
38979
+ newMentionsIds = mentionsIds.slice(1);
38835
38980
  dispatch(updateChannelDataAC(channel.id, {
38836
- mentionsIds: channel.mentionsIds.slice(1)
38981
+ mentionsIds: newMentionsIds
38837
38982
  }));
38983
+ } else {
38984
+ newMentionsIds = mentionsIds.slice(1);
38985
+ if (newMentionsIds.length > 0) {
38986
+ _handleScrollToMentions(newMentionsIds);
38987
+ } else {
38988
+ dispatch(updateChannelDataAC(channel.id, {
38989
+ mentionsIds: []
38990
+ }));
38991
+ return;
38992
+ }
38993
+ }
38994
+ if (channel.newMentionCount >= 3 && (!newMentionsIds || newMentionsIds.length < 3)) {
38995
+ dispatch(getChannelMentionsAC(channel.id));
38838
38996
  }
38839
38997
  };
38840
- var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
38998
+ var handleScrollToMentionedMessage = function handleScrollToMentionedMessage(messageId) {
38841
38999
  try {
38842
39000
  if (messages.findIndex(function (msg) {
38843
39001
  return msg.id === messageId;
@@ -38846,12 +39004,38 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38846
39004
  if (repliedMessage) {
38847
39005
  var scrollRef = document.getElementById('scrollableDiv');
38848
39006
  if (scrollRef) {
38849
- scrollRef.scrollTop = repliedMessage.offsetTop - scrollRef.offsetHeight / 2;
39007
+ var handleScrollEnd = function handleScrollEnd() {
39008
+ dispatch(setScrollToMentionedMessageAC(false));
39009
+ };
39010
+ var _handleScrollEndEvent = function handleScrollEndEvent() {
39011
+ scrollRef.removeEventListener('scrollend', _handleScrollEndEvent);
39012
+ handleScrollEnd();
39013
+ };
39014
+ var scrollTimeout;
39015
+ var _handleScrollEvent = function handleScrollEvent() {
39016
+ clearTimeout(scrollTimeout);
39017
+ scrollTimeout = setTimeout(function () {
39018
+ scrollRef.removeEventListener('scroll', _handleScrollEvent);
39019
+ handleScrollEnd();
39020
+ }, 150);
39021
+ };
39022
+ if ('onscrollend' in scrollRef) {
39023
+ ;
39024
+ scrollRef.addEventListener('scrollend', _handleScrollEndEvent);
39025
+ } else {
39026
+ ;
39027
+ scrollRef.addEventListener('scroll', _handleScrollEvent);
39028
+ }
39029
+ dispatch(setScrollToMentionedMessageAC(true));
39030
+ scrollRef.scrollTo({
39031
+ top: repliedMessage.offsetTop - scrollRef.offsetHeight / 2,
39032
+ behavior: 'smooth'
39033
+ });
38850
39034
  }
38851
39035
  repliedMessage.classList.add('highlight');
38852
39036
  setTimeout(function () {
38853
39037
  repliedMessage.classList.remove('highlight');
38854
- }, 1000);
39038
+ }, 1500);
38855
39039
  }
38856
39040
  } else {
38857
39041
  dispatch(getMessagesAC(channel, undefined, messageId));
@@ -38866,8 +39050,10 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38866
39050
  dispatch(getChannelMentionsAC(channel.id));
38867
39051
  }
38868
39052
  }, [channel.newMentionCount]);
38869
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, channel.newMentionCount ? (/*#__PURE__*/React__default.createElement(BottomButton$1, {
39053
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BottomButton$1, {
38870
39054
  theme: theme,
39055
+ animateFrom: animateFrom,
39056
+ show: !!channel.newMentionCount,
38871
39057
  width: buttonWidth,
38872
39058
  height: buttonHeight,
38873
39059
  border: buttonBorder,
@@ -38875,7 +39061,9 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38875
39061
  backgroundColor: buttonBackgroundColor || backgroundSections,
38876
39062
  hoverBackgroundColor: buttonHoverBackgroundColor,
38877
39063
  shadow: buttonShadow,
38878
- onClick: handleScrollToBottom,
39064
+ onClick: function onClick() {
39065
+ return _handleScrollToMentions(channel.mentionsIds || []);
39066
+ },
38879
39067
  bottomOffset: sendMessageInputHeight,
38880
39068
  bottomPosition: bottomPosition,
38881
39069
  showsUnreadMentionsButton: !!showScrollToNewMessageButton,
@@ -38887,10 +39075,14 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38887
39075
  fontSize: unreadCountFontSize,
38888
39076
  backgroundColor: accentColor,
38889
39077
  isMuted: channel.muted
38890
- }, channel.newMentionCount ? channel.newMentionCount > 99 ? '99+' : channel.newMentionCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgMention, null))) : null);
39078
+ }, channel.newMentionCount ? channel.newMentionCount > 99 ? '99+' : channel.newMentionCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgMention, null)));
38891
39079
  };
38892
- var BottomButton$1 = styled.div(_templateObject$X || (_templateObject$X = _taggedTemplateLiteralLoose(["\n position: absolute;\n bottom: ", ";\n right: ", ";\n margin-right: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n border-radius: 50px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n z-index: 14;\n\n & > svg {\n color: rgba(129, 140, 153, 1);\n }\n\n & > span {\n bottom: 32px;\n right: 0;\n }\n"])), function (props) {
38893
- return props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0) + "px";
39080
+ var BottomButton$1 = styled.div(_templateObject$X || (_templateObject$X = _taggedTemplateLiteralLoose(["\n transition: all 0.3s ease-in-out;\n position: absolute;\n ", ";\n\n ", ";\n\n ", ";\n right: ", ";\n margin-right: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ", ";\n border: 0.5px solid rgba(0, 0, 0, 0.1);\n border-radius: 50px;\n width: 48px;\n height: 48px;\n cursor: pointer;\n z-index: 14;\n\n & > svg {\n color: rgba(129, 140, 153, 1);\n }\n\n & > span {\n bottom: 32px;\n right: 0;\n }\n"])), function (props) {
39081
+ return props.animateFrom === 'bottom' && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0) - 180) + "px";
39082
+ }, function (props) {
39083
+ return props.animateFrom === 'right' && "right: " + (props.rightPosition === undefined ? 16 : props.rightPosition - 100) + "px";
39084
+ }, function (props) {
39085
+ return props.show && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0)) + "px";
38894
39086
  }, function (props) {
38895
39087
  return (props.rightPosition === undefined ? 16 : props.rightPosition) + "px";
38896
39088
  }, function (props) {