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.js CHANGED
@@ -7692,6 +7692,7 @@ var DELETE_REACTION = 'DELETE_REACTION';
7692
7692
  var SET_SCROLL_TO_NEW_MESSAGE = 'SET_SCROLL_TO_NEW_MESSAGE';
7693
7693
  var SET_SHOW_SCROLL_TO_NEW_MESSAGE_BUTTON = 'SET_SHOW_SCROLL_TO_NEW_MESSAGE_BUTTON';
7694
7694
  var SET_MESSAGE_MENU_OPENED = 'SET_MESSAGE_MENU_OPENED';
7695
+ var SET_SCROLL_TO_MENTIONED_MESSAGE = 'SET_SCROLL_TO_MENTIONED_MESSAGE';
7695
7696
  var queryDirection = {
7696
7697
  PREV: 'prev',
7697
7698
  NEXT: 'next',
@@ -8290,9 +8291,6 @@ function checkChannelExistsOnMessagesMap(channelId) {
8290
8291
  return !!messagesMap[channelId];
8291
8292
  }
8292
8293
  var pendingVideoAttachmentsThumbs = {};
8293
- var setVideoThumb = function setVideoThumb(attachmentId, thumb) {
8294
- pendingVideoAttachmentsThumbs[attachmentId] = thumb;
8295
- };
8296
8294
  var getVideoThumb = function getVideoThumb(attachmentId) {
8297
8295
  return pendingVideoAttachmentsThumbs[attachmentId];
8298
8296
  };
@@ -8395,6 +8393,7 @@ var initialState$1 = {
8395
8393
  messageForReply: null,
8396
8394
  attachmentsUploadingState: {},
8397
8395
  scrollToMessage: null,
8396
+ scrollToMentionedMessage: false,
8398
8397
  reactionsList: [],
8399
8398
  reactionsHasNext: true,
8400
8399
  reactionsLoadingState: null,
@@ -8437,6 +8436,11 @@ var MessageReducer = (function (state, _temp) {
8437
8436
  newState.scrollToMessage = payload.messageId;
8438
8437
  return newState;
8439
8438
  }
8439
+ case SET_SCROLL_TO_MENTIONED_MESSAGE:
8440
+ {
8441
+ newState.scrollToMentionedMessage = payload.isScrollToMentionedMessage;
8442
+ return newState;
8443
+ }
8440
8444
  case SET_SCROLL_TO_NEW_MESSAGE:
8441
8445
  {
8442
8446
  newState.scrollToNewMessage = {
@@ -9205,8 +9209,8 @@ var defaultTheme = {
9205
9209
  light: '#C8D0FF',
9206
9210
  dark: '#3B3D68'
9207
9211
  }, _colors[THEME_COLORS.TOOLTIP_BACKGROUND] = {
9208
- light: '#11153980',
9209
- dark: '#00000080'
9212
+ light: '#111539E5',
9213
+ dark: '#000000E5'
9210
9214
  }, _colors)
9211
9215
  };
9212
9216
  var defaultThemeMode = 'light';
@@ -9844,14 +9848,15 @@ function setMessageToEditAC(message) {
9844
9848
  }
9845
9849
  };
9846
9850
  }
9847
- function getMessagesAC(channel, loadWithLastMessage, messageId, limit) {
9851
+ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages) {
9848
9852
  return {
9849
9853
  type: GET_MESSAGES,
9850
9854
  payload: {
9851
9855
  channel: channel,
9852
9856
  loadWithLastMessage: loadWithLastMessage,
9853
9857
  messageId: messageId,
9854
- limit: limit
9858
+ limit: limit,
9859
+ withDeliveredMessages: withDeliveredMessages
9855
9860
  }
9856
9861
  };
9857
9862
  }
@@ -9863,6 +9868,14 @@ function setScrollToMessagesAC(messageId) {
9863
9868
  }
9864
9869
  };
9865
9870
  }
9871
+ function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
9872
+ return {
9873
+ type: SET_SCROLL_TO_MENTIONED_MESSAGE,
9874
+ payload: {
9875
+ isScrollToMentionedMessage: isScrollToMentionedMessage
9876
+ }
9877
+ };
9878
+ }
9866
9879
  function setMessagesLoadingStateAC(state) {
9867
9880
  return {
9868
9881
  type: SET_MESSAGES_LOADING_STATE,
@@ -10627,6 +10640,9 @@ var messageToEditSelector = function messageToEditSelector(store) {
10627
10640
  var scrollToNewMessageSelector = function scrollToNewMessageSelector(store) {
10628
10641
  return store.MessageReducer.scrollToNewMessage;
10629
10642
  };
10643
+ var scrollToMentionedMessageSelector = function scrollToMentionedMessageSelector(store) {
10644
+ return store.MessageReducer.scrollToMentionedMessage;
10645
+ };
10630
10646
  var showScrollToNewMessageButtonSelector = function showScrollToNewMessageButtonSelector(store) {
10631
10647
  return store.MessageReducer.showScrollToNewMessageButton;
10632
10648
  };
@@ -10770,6 +10786,10 @@ var setAvatarColor = function setAvatarColor(colors) {
10770
10786
  };
10771
10787
  };
10772
10788
  var getAvatarColors = function getAvatarColors(theme) {
10789
+ var _avatarColors$theme;
10790
+ if (!((_avatarColors$theme = _avatarColors[theme]) !== null && _avatarColors$theme !== void 0 && _avatarColors$theme.length)) {
10791
+ return _avatarColors.light;
10792
+ }
10773
10793
  return _avatarColors[theme];
10774
10794
  };
10775
10795
 
@@ -11171,7 +11191,7 @@ var UploadAvatarButton = styled__default.button(_templateObject24 || (_templateO
11171
11191
  var UploadAvatarHandler = styled__default.div(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n margin-left: 18px;\n font-size: 13px;\n color: ", ";\n"])), function (props) {
11172
11192
  return props.color;
11173
11193
  });
11174
- var StyledText = styled__default.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) {
11194
+ var StyledText = styled__default.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) {
11175
11195
  return props.fontWeight || props.isLastMessage && '500';
11176
11196
  }, function (props) {
11177
11197
  return props.fontFamily;
@@ -11185,6 +11205,8 @@ var StyledText = styled__default.span(_templateObject26 || (_templateObject26 =
11185
11205
  return props.color;
11186
11206
  }, function (props) {
11187
11207
  return props.isLastMessage && '500';
11208
+ }, function (props) {
11209
+ return props.shouldOpenUserProfileForMention && 'pointer';
11188
11210
  });
11189
11211
  var MessageOwner = styled__default.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) {
11190
11212
  return props.color;
@@ -11430,7 +11452,9 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11430
11452
  isLastMessage = _ref2.isLastMessage,
11431
11453
  asSampleText = _ref2.asSampleText,
11432
11454
  accentColor = _ref2.accentColor,
11433
- textSecondary = _ref2.textSecondary;
11455
+ textSecondary = _ref2.textSecondary,
11456
+ onMentionNameClick = _ref2.onMentionNameClick,
11457
+ shouldOpenUserProfileForMention = _ref2.shouldOpenUserProfileForMention;
11434
11458
  try {
11435
11459
  var messageText = [];
11436
11460
  var linkify = new LinkifyIt();
@@ -11475,12 +11499,18 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11475
11499
  className: "" + combinedAttributesList[index - 1].type,
11476
11500
  isLastMessage: isLastMessage,
11477
11501
  key: attributeOffset + index,
11478
- color: isLastMessage ? textSecondary : accentColor
11502
+ color: isLastMessage ? textSecondary : accentColor,
11503
+ shouldOpenUserProfileForMention: onMentionNameClick && shouldOpenUserProfileForMention
11479
11504
  }, firsTextPart, /*#__PURE__*/React__default.createElement(StyledText, {
11480
11505
  className: 'mention',
11481
11506
  isLastMessage: isLastMessage,
11482
11507
  color: isLastMessage ? textSecondary : accentColor,
11483
- key: attributeOffset + index
11508
+ key: attributeOffset + index,
11509
+ onClick: function onClick() {
11510
+ if (onMentionNameClick && shouldOpenUserProfileForMention) {
11511
+ onMentionNameClick(mentionDisplay);
11512
+ }
11513
+ }
11484
11514
  }, mentionDisplayName), secondTextPart)), index === combinedAttributesList.length - 1 ? secondPart : '');
11485
11515
  } else {
11486
11516
  nextPartIndex = attribute.offset + attribute.length;
@@ -11488,7 +11518,13 @@ var MessageTextFormat = function MessageTextFormat(_ref2) {
11488
11518
  className: attribute.type,
11489
11519
  isLastMessage: isLastMessage,
11490
11520
  color: isLastMessage ? textSecondary : accentColor,
11491
- key: attributeOffset
11521
+ key: attributeOffset,
11522
+ onClick: function onClick() {
11523
+ if (onMentionNameClick && shouldOpenUserProfileForMention) {
11524
+ onMentionNameClick(mentionDisplay);
11525
+ }
11526
+ },
11527
+ shouldOpenUserProfileForMention: onMentionNameClick && shouldOpenUserProfileForMention
11492
11528
  }, mentionDisplayName)), index === combinedAttributesList.length - 1 ? secondPart : '');
11493
11529
  }
11494
11530
  } else {
@@ -13847,30 +13883,31 @@ function getChannelMentions(action) {
13847
13883
  mentionsQueryBuilder = new SceytChatClient.MentionsListQueryBuilder();
13848
13884
  mentionsQueryBuilder.setChannelId(channelId);
13849
13885
  mentionsQueryBuilder.limit(10);
13850
- _context7.next = 9;
13886
+ mentionsQueryBuilder.setDirection(queryDirection.NEXT);
13887
+ _context7.next = 10;
13851
13888
  return effects.call(mentionsQueryBuilder.build);
13852
- case 9:
13889
+ case 10:
13853
13890
  mentionsQuery = _context7.sent;
13854
- _context7.next = 12;
13891
+ _context7.next = 13;
13855
13892
  return effects.call(mentionsQuery.loadNext);
13856
- case 12:
13893
+ case 13:
13857
13894
  mentions = _context7.sent;
13858
- _context7.next = 15;
13895
+ _context7.next = 16;
13859
13896
  return effects.put(updateChannelDataAC(channelId, {
13860
13897
  mentionsIds: mentions.mentions
13861
13898
  }));
13862
- case 15:
13863
- _context7.next = 20;
13899
+ case 16:
13900
+ _context7.next = 21;
13864
13901
  break;
13865
- case 17:
13866
- _context7.prev = 17;
13902
+ case 18:
13903
+ _context7.prev = 18;
13867
13904
  _context7.t0 = _context7["catch"](0);
13868
13905
  log.error(_context7.t0, 'Error in get channel mentions');
13869
- case 20:
13906
+ case 21:
13870
13907
  case "end":
13871
13908
  return _context7.stop();
13872
13909
  }
13873
- }, _marked7, null, [[0, 17]]);
13910
+ }, _marked7, null, [[0, 18]]);
13874
13911
  }
13875
13912
  function channelsForForwardLoadMore(action) {
13876
13913
  var payload, limit, SceytChatClient, channelQueryForward, channelsData, channelsToAdd, _yield$call4, mappedChannels;
@@ -15490,21 +15527,6 @@ var addData = function addData(db, storeName, keyPath, data) {
15490
15527
  }
15491
15528
  };
15492
15529
 
15493
- var getFrame3 = function getFrame3(video, time) {
15494
- try {
15495
- var canvas = document.createElement('canvas');
15496
- canvas.width = video.videoWidth;
15497
- canvas.height = video.videoHeight;
15498
- var ctx = canvas.getContext('2d');
15499
- if (time) {
15500
- video.currentTime = time;
15501
- }
15502
- ctx.drawImage(video, 0, 0);
15503
- return Promise.resolve(createImageThumbnail(null, canvas.toDataURL(), 10, 10));
15504
- } catch (e) {
15505
- return Promise.reject(e);
15506
- }
15507
- };
15508
15530
  var getFrame = function getFrame(videoSrc, time) {
15509
15531
  try {
15510
15532
  var video = document.createElement('video');
@@ -16985,14 +17007,14 @@ function editMessage(action) {
16985
17007
  }, _marked6$1, null, [[0, 21]]);
16986
17008
  }
16987
17009
  function getMessagesQuery(action) {
16988
- 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;
17010
+ 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;
16989
17011
  return _regeneratorRuntime().wrap(function getMessagesQuery$(_context9) {
16990
17012
  while (1) switch (_context9.prev = _context9.next) {
16991
17013
  case 0:
16992
17014
  _context9.prev = 0;
16993
- _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit;
17015
+ _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages;
16994
17016
  if (!(channel.id && !channel.isMockChannel)) {
16995
- _context9.next = 172;
17017
+ _context9.next = 175;
16996
17018
  break;
16997
17019
  }
16998
17020
  SceytChatClient = getClient();
@@ -17013,13 +17035,13 @@ function getMessagesQuery(action) {
17013
17035
  hasNext: false
17014
17036
  };
17015
17037
  if (!loadWithLastMessage) {
17016
- _context9.next = 51;
17038
+ _context9.next = 54;
17017
17039
  break;
17018
17040
  }
17019
17041
  allMessages = getAllMessages();
17020
17042
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
17021
17043
  if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
17022
- _context9.next = 41;
17044
+ _context9.next = 44;
17023
17045
  break;
17024
17046
  }
17025
17047
  setHasPrevCached(false);
@@ -17040,36 +17062,41 @@ function getMessagesQuery(action) {
17040
17062
  result.messages = [].concat(secondResult.messages, result.messages);
17041
17063
  result.hasNext = secondResult.hasNext;
17042
17064
  case 31:
17043
- _context9.next = 33;
17065
+ sentMessages = [];
17066
+ if (withDeliveredMessages) {
17067
+ sentMessages = getFromAllMessagesByMessageId('', '', true);
17068
+ }
17069
+ result.messages = [].concat(result.messages, sentMessages);
17070
+ _context9.next = 36;
17044
17071
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17045
- case 33:
17072
+ case 36:
17046
17073
  setMessagesToMap(channel.id, result.messages);
17047
- setAllMessages([].concat(result.messages));
17048
- _context9.next = 37;
17074
+ setAllMessages(result.messages);
17075
+ _context9.next = 40;
17049
17076
  return effects.put(setMessagesHasPrevAC(true));
17050
- case 37:
17051
- _context9.next = 39;
17077
+ case 40:
17078
+ _context9.next = 42;
17052
17079
  return effects.put(markChannelAsReadAC(channel.id));
17053
- case 39:
17054
- _context9.next = 46;
17080
+ case 42:
17081
+ _context9.next = 49;
17055
17082
  break;
17056
- case 41:
17083
+ case 44:
17057
17084
  result.messages = getFromAllMessagesByMessageId('', '', true);
17058
- _context9.next = 44;
17085
+ _context9.next = 47;
17059
17086
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17060
- case 44:
17061
- _context9.next = 46;
17087
+ case 47:
17088
+ _context9.next = 49;
17062
17089
  return effects.put(setMessagesHasPrevAC(true));
17063
- case 46:
17064
- _context9.next = 48;
17090
+ case 49:
17091
+ _context9.next = 51;
17065
17092
  return effects.put(setMessagesHasNextAC(false));
17066
- case 48:
17093
+ case 51:
17067
17094
  setHasNextCached(false);
17068
- _context9.next = 161;
17095
+ _context9.next = 164;
17069
17096
  break;
17070
- case 51:
17097
+ case 54:
17071
17098
  if (!messageId) {
17072
- _context9.next = 94;
17099
+ _context9.next = 97;
17073
17100
  break;
17074
17101
  }
17075
17102
  _allMessages = getAllMessages();
@@ -17078,46 +17105,46 @@ function getMessagesQuery(action) {
17078
17105
  });
17079
17106
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
17080
17107
  if (!(messageIndex >= maxLengthPart)) {
17081
- _context9.next = 63;
17108
+ _context9.next = 66;
17082
17109
  break;
17083
17110
  }
17084
17111
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
17085
- _context9.next = 59;
17112
+ _context9.next = 62;
17086
17113
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17087
- case 59:
17114
+ case 62:
17088
17115
  setHasPrevCached(messageIndex > maxLengthPart);
17089
17116
  setHasNextCached(_allMessages.length > maxLengthPart);
17090
- _context9.next = 90;
17117
+ _context9.next = 93;
17091
17118
  break;
17092
- case 63:
17119
+ case 66:
17093
17120
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17094
17121
  log.info('load by message id from server ...............', messageId);
17095
- _context9.next = 67;
17122
+ _context9.next = 70;
17096
17123
  return effects.call(messageQuery.loadNearMessageId, messageId);
17097
- case 67:
17124
+ case 70:
17098
17125
  result = _context9.sent;
17099
17126
  if (!(result.messages.length === 50)) {
17100
- _context9.next = 80;
17127
+ _context9.next = 83;
17101
17128
  break;
17102
17129
  }
17103
17130
  messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
17104
- _context9.next = 72;
17131
+ _context9.next = 75;
17105
17132
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17106
- case 72:
17133
+ case 75:
17107
17134
  _secondResult = _context9.sent;
17108
17135
  messageQuery.reverse = false;
17109
- _context9.next = 76;
17136
+ _context9.next = 79;
17110
17137
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17111
- case 76:
17138
+ case 79:
17112
17139
  thirdResult = _context9.sent;
17113
17140
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
17114
17141
  result.hasNext = _secondResult.hasNext;
17115
17142
  messageQuery.reverse = true;
17116
- case 80:
17143
+ case 83:
17117
17144
  log.info('result from server ....... ', result);
17118
- _context9.next = 83;
17145
+ _context9.next = 86;
17119
17146
  return effects.put(setMessagesHasNextAC(true));
17120
- case 83:
17147
+ case 86:
17121
17148
  pendingMessages = getPendingMessages(channel.id);
17122
17149
  if (pendingMessages && pendingMessages.length) {
17123
17150
  messagesMap = {};
@@ -17130,84 +17157,84 @@ function getMessagesQuery(action) {
17130
17157
  setPendingMessages(channel.id, filteredPendingMessages);
17131
17158
  result.messages = [].concat(result.messages, filteredPendingMessages);
17132
17159
  }
17133
- _context9.next = 87;
17160
+ _context9.next = 90;
17134
17161
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17135
- case 87:
17162
+ case 90:
17136
17163
  setAllMessages([].concat(result.messages));
17137
17164
  setHasPrevCached(false);
17138
17165
  setHasNextCached(false);
17139
- case 90:
17140
- _context9.next = 92;
17166
+ case 93:
17167
+ _context9.next = 95;
17141
17168
  return effects.put(setScrollToMessagesAC(messageId));
17142
- case 92:
17143
- _context9.next = 161;
17169
+ case 95:
17170
+ _context9.next = 164;
17144
17171
  break;
17145
- case 94:
17172
+ case 97:
17146
17173
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
17147
- _context9.next = 140;
17174
+ _context9.next = 143;
17148
17175
  break;
17149
17176
  }
17150
17177
  setAllMessages([]);
17151
17178
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17152
17179
  if (!Number(channel.lastDisplayedMessageId)) {
17153
- _context9.next = 118;
17180
+ _context9.next = 121;
17154
17181
  break;
17155
17182
  }
17156
- _context9.next = 100;
17183
+ _context9.next = 103;
17157
17184
  return effects.call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
17158
- case 100:
17185
+ case 103:
17159
17186
  result = _context9.sent;
17160
17187
  if (!(result.messages.length === 50)) {
17161
- _context9.next = 116;
17188
+ _context9.next = 119;
17162
17189
  break;
17163
17190
  }
17164
17191
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
17165
- _context9.next = 105;
17192
+ _context9.next = 108;
17166
17193
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17167
- case 105:
17194
+ case 108:
17168
17195
  _secondResult2 = _context9.sent;
17169
17196
  if (!(channel.newMessageCount > 25)) {
17170
- _context9.next = 115;
17197
+ _context9.next = 118;
17171
17198
  break;
17172
17199
  }
17173
17200
  messageQuery.reverse = false;
17174
- _context9.next = 110;
17201
+ _context9.next = 113;
17175
17202
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17176
- case 110:
17203
+ case 113:
17177
17204
  _thirdResult = _context9.sent;
17178
17205
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
17179
17206
  messageQuery.reverse = true;
17180
- _context9.next = 116;
17207
+ _context9.next = 119;
17181
17208
  break;
17182
- case 115:
17209
+ case 118:
17183
17210
  result.messages = [].concat(_secondResult2.messages, result.messages);
17184
- case 116:
17185
- _context9.next = 128;
17211
+ case 119:
17212
+ _context9.next = 131;
17186
17213
  break;
17187
- case 118:
17188
- _context9.next = 120;
17214
+ case 121:
17215
+ _context9.next = 123;
17189
17216
  return effects.call(messageQuery.loadPrevious);
17190
- case 120:
17217
+ case 123:
17191
17218
  result = _context9.sent;
17192
17219
  if (!(result.messages.length === 50)) {
17193
- _context9.next = 128;
17220
+ _context9.next = 131;
17194
17221
  break;
17195
17222
  }
17196
17223
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17197
- _context9.next = 125;
17224
+ _context9.next = 128;
17198
17225
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17199
- case 125:
17226
+ case 128:
17200
17227
  _secondResult3 = _context9.sent;
17201
17228
  result.messages = [].concat(_secondResult3.messages, result.messages);
17202
17229
  result.hasNext = _secondResult3.hasNext;
17203
- case 128:
17230
+ case 131:
17204
17231
  setMessagesToMap(channel.id, result.messages);
17205
- _context9.next = 131;
17232
+ _context9.next = 134;
17206
17233
  return effects.put(setMessagesHasPrevAC(true));
17207
- case 131:
17208
- _context9.next = 133;
17234
+ case 134:
17235
+ _context9.next = 136;
17209
17236
  return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
17210
- case 133:
17237
+ case 136:
17211
17238
  _pendingMessages = getPendingMessages(channel.id);
17212
17239
  if (_pendingMessages && _pendingMessages.length) {
17213
17240
  _messagesMap = {};
@@ -17221,38 +17248,38 @@ function getMessagesQuery(action) {
17221
17248
  result.messages = [].concat(result.messages, _filteredPendingMessages);
17222
17249
  }
17223
17250
  setAllMessages([].concat(result.messages));
17224
- _context9.next = 138;
17251
+ _context9.next = 141;
17225
17252
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17226
- case 138:
17227
- _context9.next = 161;
17253
+ case 141:
17254
+ _context9.next = 164;
17228
17255
  break;
17229
- case 140:
17256
+ case 143:
17230
17257
  setAllMessages([]);
17231
17258
  if (!(cachedMessages && cachedMessages.length)) {
17232
- _context9.next = 145;
17259
+ _context9.next = 148;
17233
17260
  break;
17234
17261
  }
17235
17262
  setAllMessages([].concat(cachedMessages));
17236
- _context9.next = 145;
17263
+ _context9.next = 148;
17237
17264
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
17238
- case 145:
17265
+ case 148:
17239
17266
  log.info('load message from server');
17240
- _context9.next = 148;
17267
+ _context9.next = 151;
17241
17268
  return effects.call(messageQuery.loadPrevious);
17242
- case 148:
17269
+ case 151:
17243
17270
  result = _context9.sent;
17244
17271
  if (!(result.messages.length === 50)) {
17245
- _context9.next = 156;
17272
+ _context9.next = 159;
17246
17273
  break;
17247
17274
  }
17248
17275
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17249
- _context9.next = 153;
17276
+ _context9.next = 156;
17250
17277
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17251
- case 153:
17278
+ case 156:
17252
17279
  _secondResult4 = _context9.sent;
17253
17280
  result.messages = [].concat(_secondResult4.messages, result.messages);
17254
17281
  result.hasNext = _secondResult4.hasNext;
17255
- case 156:
17282
+ case 159:
17256
17283
  result.messages.forEach(function (msg) {
17257
17284
  updateMessageOnMap(channel.id, {
17258
17285
  messageId: msg.id,
@@ -17260,14 +17287,14 @@ function getMessagesQuery(action) {
17260
17287
  });
17261
17288
  updateMessageOnAllMessages(msg.id, msg);
17262
17289
  });
17263
- _context9.next = 159;
17290
+ _context9.next = 162;
17264
17291
  return effects.put(setMessagesHasPrevAC(result.hasNext));
17265
- case 159:
17266
- _context9.next = 161;
17292
+ case 162:
17293
+ _context9.next = 164;
17267
17294
  return effects.put(setMessagesHasNextAC(false));
17268
- case 161:
17295
+ case 164:
17269
17296
  if (cachedMessages && cachedMessages.length) {
17270
- _context9.next = 168;
17297
+ _context9.next = 171;
17271
17298
  break;
17272
17299
  }
17273
17300
  _pendingMessages2 = getPendingMessages(channel.id);
@@ -17282,36 +17309,36 @@ function getMessagesQuery(action) {
17282
17309
  setPendingMessages(channel.id, _filteredPendingMessages2);
17283
17310
  result.messages = [].concat(result.messages, _filteredPendingMessages2);
17284
17311
  }
17285
- _context9.next = 166;
17312
+ _context9.next = 169;
17286
17313
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17287
- case 166:
17314
+ case 169:
17288
17315
  setMessagesToMap(channel.id, result.messages);
17289
17316
  setAllMessages([].concat(result.messages));
17290
- case 168:
17291
- _context9.next = 170;
17317
+ case 171:
17318
+ _context9.next = 173;
17292
17319
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
17293
- case 170:
17294
- _context9.next = 175;
17320
+ case 173:
17321
+ _context9.next = 178;
17295
17322
  break;
17296
- case 172:
17323
+ case 175:
17297
17324
  if (!channel.isMockChannel) {
17298
- _context9.next = 175;
17325
+ _context9.next = 178;
17299
17326
  break;
17300
17327
  }
17301
- _context9.next = 175;
17328
+ _context9.next = 178;
17302
17329
  return effects.put(setMessagesAC([]));
17303
- case 175:
17304
- _context9.next = 180;
17330
+ case 178:
17331
+ _context9.next = 183;
17305
17332
  break;
17306
- case 177:
17307
- _context9.prev = 177;
17333
+ case 180:
17334
+ _context9.prev = 180;
17308
17335
  _context9.t0 = _context9["catch"](0);
17309
17336
  log.error('error in message query', _context9.t0);
17310
- case 180:
17337
+ case 183:
17311
17338
  case "end":
17312
17339
  return _context9.stop();
17313
17340
  }
17314
- }, _marked7$1, null, [[0, 177]]);
17341
+ }, _marked7$1, null, [[0, 180]]);
17315
17342
  }
17316
17343
  function loadMoreMessages(action) {
17317
17344
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result;
@@ -18732,20 +18759,25 @@ var useStateComplex = function useStateComplex(initialState) {
18732
18759
  }];
18733
18760
  };
18734
18761
 
18735
- function useOnScreen(ref) {
18762
+ function useOnScreen(ref, rootElement) {
18736
18763
  var _useState = React.useState(false),
18737
18764
  isIntersecting = _useState[0],
18738
18765
  setIntersecting = _useState[1];
18739
- var observer = new IntersectionObserver(function (_ref) {
18740
- var entry = _ref[0];
18741
- return setIntersecting(entry.isIntersecting);
18742
- });
18743
18766
  React.useEffect(function () {
18767
+ if (!(ref !== null && ref !== void 0 && ref.current)) return;
18768
+ var observer = new IntersectionObserver(function (_ref) {
18769
+ var entry = _ref[0];
18770
+ return setIntersecting(entry.isIntersecting);
18771
+ }, {
18772
+ root: rootElement || null,
18773
+ rootMargin: '0px',
18774
+ threshold: 0.1
18775
+ });
18744
18776
  observer.observe(ref.current);
18745
18777
  return function () {
18746
18778
  observer.disconnect();
18747
18779
  };
18748
- }, []);
18780
+ }, [ref, rootElement]);
18749
18781
  return isIntersecting;
18750
18782
  }
18751
18783
 
@@ -19469,7 +19501,7 @@ var DeletedAvatarWrapper = styled__default(SvgDeletedUserAvatar)(_templateObject
19469
19501
  return props.color;
19470
19502
  });
19471
19503
 
19472
- 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;
19504
+ 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;
19473
19505
  var ChannelMessageText = function ChannelMessageText(_ref) {
19474
19506
  var isTypingOrRecording = _ref.isTypingOrRecording,
19475
19507
  textPrimary = _ref.textPrimary,
@@ -19492,7 +19524,7 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19492
19524
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19493
19525
  })) + " " + (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) {
19494
19526
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19495
- })) + " " + (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({
19527
+ })) + " " + (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({
19496
19528
  text: lastMessage.body,
19497
19529
  message: lastMessage,
19498
19530
  contactsMap: contactsMap,
@@ -19500,7 +19532,7 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19500
19532
  isLastMessage: true,
19501
19533
  accentColor: accentColor,
19502
19534
  textSecondary: textSecondary
19503
- }), channel.lastReactedMessage && '"'))));
19535
+ })), channel.lastReactedMessage && '"'))));
19504
19536
  };
19505
19537
  var Channel = function Channel(_ref2) {
19506
19538
  var _channel$metadata, _channel$metadata2;
@@ -19703,7 +19735,7 @@ var Channel = function Channel(_ref2) {
19703
19735
  }, /*#__PURE__*/React__default.createElement("span", {
19704
19736
  ref: messageAuthorRef
19705
19737
  }, 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, {
19706
- color: draftMessageText && warningColor
19738
+ color: draftMessageText && warningColor || textPrimary
19707
19739
  }, ": ")), /*#__PURE__*/React__default.createElement(LastMessageText, {
19708
19740
  color: textSecondary,
19709
19741
  withAttachments: !!(lastMessage && lastMessage.attachments && lastMessage.attachments.length && lastMessage.attachments[0].type !== attachmentTypes.link) && !isTypingOrRecording,
@@ -19799,12 +19831,12 @@ var LastMessageAuthor = styled__default.div(_templateObject9$1 || (_templateObje
19799
19831
  }, function (_ref4) {
19800
19832
  var typing = _ref4.typing,
19801
19833
  recording = _ref4.recording;
19802
- 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 ";
19834
+ 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 ";
19803
19835
  });
19804
- var Points = styled__default.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n"])), function (props) {
19836
+ var Points = styled__default.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
19805
19837
  return props.color;
19806
19838
  });
19807
- var LastMessageText = styled__default.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) {
19839
+ var LastMessageText = styled__default.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) {
19808
19840
  return props.color;
19809
19841
  }, function (props) {
19810
19842
  return props.deletedMessage && 'italic';
@@ -19813,28 +19845,29 @@ var LastMessageText = styled__default.span(_templateObject1$1 || (_templateObjec
19813
19845
  }, function (props) {
19814
19846
  return props.color;
19815
19847
  }, function (props) {
19816
- return props.withAttachments ? 'translate(0px, 3px)' : 'translate(0px, 2px)';
19848
+ return props.color;
19817
19849
  });
19818
- var ChannelStatus = styled__default.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) {
19850
+ var LastMessageDescription = styled__default.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"])));
19851
+ var ChannelStatus = styled__default.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) {
19819
19852
  return props.color;
19820
19853
  });
19821
- var LastMessageDate = styled__default.span(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n color: ", ";\n font-size: ", ";\n line-height: 16px;\n"])), function (props) {
19854
+ var LastMessageDate = styled__default.span(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["\n color: ", ";\n font-size: ", ";\n line-height: 16px;\n"])), function (props) {
19822
19855
  return props.color;
19823
19856
  }, function (props) {
19824
19857
  return props.fontSize || '12px';
19825
19858
  });
19826
- var DeliveryIconCont = styled__default.span(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["\n margin-right: 6px;\n line-height: 13px;\n"])));
19827
- var UnreadMentionIconWrapper = styled__default.span(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n line-height: 13px;\n\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19859
+ var DeliveryIconCont = styled__default.span(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["\n margin-right: 6px;\n line-height: 13px;\n"])));
19860
+ var UnreadMentionIconWrapper = styled__default.span(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n margin-right: ", ";\n line-height: 13px;\n\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19828
19861
  return props.rightMargin && '8px';
19829
19862
  }, function (props) {
19830
19863
  return props.iconColor;
19831
19864
  });
19832
- var TypingIndicator = styled__default.span(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n font-style: italic;\n"])));
19833
- var ReactionItem = styled__default.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"])));
19834
- var UnreadInfo = styled__default.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) {
19865
+ var TypingIndicator = styled__default.span(_templateObject15$1 || (_templateObject15$1 = _taggedTemplateLiteralLoose(["\n font-style: italic;\n"])));
19866
+ var ReactionItem = styled__default.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"])));
19867
+ var UnreadInfo = styled__default.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) {
19835
19868
  return props.bottom || '11px';
19836
19869
  });
19837
- var UnreadCount = styled__default.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) {
19870
+ var UnreadCount = styled__default.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) {
19838
19871
  return props.backgroundColor;
19839
19872
  }, function (props) {
19840
19873
  return props.fontSize || '13px';
@@ -19847,10 +19880,10 @@ var UnreadCount = styled__default.span(_templateObject17$1 || (_templateObject17
19847
19880
  }, function (props) {
19848
19881
  return props.isMuted && "background-color: " + props.mutedBackgroundColor + ";";
19849
19882
  });
19850
- var PinnedIconWrapper = styled__default.span(_templateObject18$1 || (_templateObject18$1 = _taggedTemplateLiteralLoose(["\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19883
+ var PinnedIconWrapper = styled__default.span(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n & > svg {\n color: ", ";\n }\n"])), function (props) {
19851
19884
  return props.color;
19852
19885
  });
19853
- var MessageTextContainer = styled__default.div(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-end;\n gap: 4px;\n"])));
19886
+ var MessageTextContainer = styled__default.div(_templateObject20$1 || (_templateObject20$1 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: flex-end;\n gap: 4px;\n"])));
19854
19887
 
19855
19888
  var _templateObject$5, _templateObject2$5;
19856
19889
  var SearchInputContainer = styled__default.div(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n position: relative;\n width: 100%;\n max-width: ", ";\n box-sizing: border-box;\n padding: ", ";\n\n & ", " {\n ", ";\n }\n"])), function (props) {
@@ -21660,7 +21693,7 @@ var UserNumber = styled__default.h4(_templateObject6$4 || (_templateObject6$4 =
21660
21693
 
21661
21694
  var _templateObject$g, _templateObject2$e, _templateObject3$a, _templateObject4$8, _templateObject5$6, _templateObject6$5, _templateObject7$4, _templateObject8$4, _templateObject9$4, _templateObject0$3;
21662
21695
  var ChannelList = function ChannelList(_ref) {
21663
- var _channelListRef$curre2, _searchedChannels$cha, _searchedChannels$cha2, _searchedChannels$con, _searchedChannels$cha3, _searchedChannels$cha4, _searchedChannels$cha5, _searchedChannels$cha6;
21696
+ var _activeChannel$member, _channelListRef$curre2, _searchedChannels$cha, _searchedChannels$cha2, _searchedChannels$con, _searchedChannels$cha3, _searchedChannels$cha4, _searchedChannels$cha5, _searchedChannels$cha6;
21664
21697
  var className = _ref.className,
21665
21698
  selectedChannelBackground = _ref.selectedChannelBackground,
21666
21699
  selectedChannelLeftBorder = _ref.selectedChannelLeftBorder,
@@ -21911,10 +21944,12 @@ var ChannelList = function ChannelList(_ref) {
21911
21944
  }, [searchValue]);
21912
21945
  useDidUpdate(function () {
21913
21946
  if (getSelectedChannel) {
21914
- dispatch(getChannelMentionsAC(activeChannel.id));
21947
+ if (!(activeChannel !== null && activeChannel !== void 0 && activeChannel.mentionsIds)) {
21948
+ dispatch(getChannelMentionsAC(activeChannel.id));
21949
+ }
21915
21950
  getSelectedChannel(activeChannel);
21916
21951
  }
21917
- }, [activeChannel && activeChannel.members && activeChannel.members.length]);
21952
+ }, [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]);
21918
21953
  useDidUpdate(function () {
21919
21954
  if (closeSearchChannels) {
21920
21955
  getMyChannels();
@@ -22272,7 +22307,7 @@ var NoData = styled__default.div(_templateObject8$4 || (_templateObject8$4 = _ta
22272
22307
  return props.color;
22273
22308
  });
22274
22309
  var LoadingWrapper = styled__default.div(_templateObject9$4 || (_templateObject9$4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n left: calc(50% - 20px);\n top: calc(50% - 20px);\n"])));
22275
- var ChannelListHeader = styled__default.div(_templateObject0$3 || (_templateObject0$3 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n max-width: ", ";\n padding: 12px;\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
22310
+ var ChannelListHeader = styled__default.div(_templateObject0$3 || (_templateObject0$3 = _taggedTemplateLiteralLoose(["\n display: flex;\n align-items: center;\n flex-direction: row;\n justify-content: space-between;\n max-width: ", ";\n padding: 12px;\n padding-left: 22px;\n box-sizing: border-box;\n padding-left: ", ";\n border-right: ", ";\n"])), function (props) {
22276
22311
  return props.maxWidth ? props.maxWidth + "px" : 'inherit';
22277
22312
  }, function (props) {
22278
22313
  return props.withoutProfile && '52px';
@@ -22392,7 +22427,7 @@ function Chat(_ref) {
22392
22427
  color: textSecondary
22393
22428
  }, "Please select a chat to start messaging."))))), children);
22394
22429
  }
22395
- var Container$8 = styled__default.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) {
22430
+ var Container$8 = styled__default.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) {
22396
22431
  return props.widthOffset || props.channelDetailsWidth ? "calc(100% - " + (props.widthOffset + (props.channelDetailsWidth ? props.channelDetailsWidth + 1 : 0)) + "px)" : '';
22397
22432
  });
22398
22433
  var SelectChatContainer = styled__default.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) {
@@ -25379,18 +25414,21 @@ var VideoPreview = /*#__PURE__*/React.memo(function VideoPreview(_ref) {
25379
25414
  border = _useColor[THEME_COLORS.BORDER],
25380
25415
  overlayBackground2 = _useColor[THEME_COLORS.OVERLAY_BACKGROUND_2],
25381
25416
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY];
25382
- var _useState = React.useState(0),
25383
- videoDuration = _useState[0],
25384
- setVideoDuration = _useState[1];
25385
- var _useState2 = React.useState(null),
25386
- videoCurrentTime = _useState2[0],
25387
- setVideoCurrentTime = _useState2[1];
25388
- var _useState3 = React.useState(true),
25389
- loading = _useState3[0],
25390
- setLoading = _useState3[1];
25391
- var _useState4 = React.useState(''),
25392
- videoUrl = _useState4[0],
25393
- setVideoUrl = _useState4[1];
25417
+ var currentTime = '';
25418
+ if (file.metadata && file.metadata.dur) {
25419
+ var mins = Math.floor(file.metadata.dur / 60);
25420
+ var seconds = Math.floor(file.metadata.dur % 60);
25421
+ currentTime = mins + ":" + (seconds < 10 ? "0" + seconds : seconds);
25422
+ }
25423
+ var _useState = React.useState(currentTime),
25424
+ videoCurrentTime = _useState[0],
25425
+ setVideoCurrentTime = _useState[1];
25426
+ var _useState2 = React.useState(true),
25427
+ loading = _useState2[0],
25428
+ setLoading = _useState2[1];
25429
+ var _useState3 = React.useState(''),
25430
+ videoUrl = _useState3[0],
25431
+ setVideoUrl = _useState3[1];
25394
25432
  var videoRef = React.useRef(null);
25395
25433
  var attachmentThumb;
25396
25434
  var withPrefix = true;
@@ -25403,55 +25441,39 @@ var VideoPreview = /*#__PURE__*/React.memo(function VideoPreview(_ref) {
25403
25441
  }
25404
25442
  }
25405
25443
  React.useEffect(function () {
25406
- var checkVideoInterval;
25407
- if (videoRef.current) {
25408
- var intervalCount = 0;
25409
- checkVideoInterval = setInterval(function () {
25410
- try {
25411
- var _temp4 = function _temp4() {
25412
- if (intervalCount >= 8) {
25413
- if (setVideoIsReadyToSend) {
25414
- setVideoIsReadyToSend(file.tid);
25415
- clearInterval(checkVideoInterval);
25416
- }
25417
- }
25418
- };
25419
- intervalCount++;
25420
- var _temp3 = function () {
25421
- if (videoRef.current && videoRef.current.readyState > 3) {
25422
- var _temp2 = function _temp2() {
25423
- clearInterval(checkVideoInterval);
25424
- };
25425
- setLoading(false);
25426
- setVideoDuration(videoRef.current.duration);
25427
- var minutes = Math.floor(videoRef.current.duration / 60);
25428
- var seconds = Math.floor(videoRef.current.duration % 60);
25429
- setVideoCurrentTime(minutes + ":" + (seconds < 10 ? "0" + seconds : seconds));
25430
- var _temp = function () {
25431
- if (isPreview) {
25432
- return Promise.resolve(getFrame3(videoRef.current, 0)).then(function (thumb) {
25433
- if (thumb) {
25434
- setVideoThumb(file.tid, _extends({}, thumb, {
25435
- duration: videoRef.current.duration
25436
- }));
25437
- if (setVideoIsReadyToSend) {
25438
- setVideoIsReadyToSend(file.tid);
25439
- }
25440
- }
25441
- });
25442
- }
25443
- }();
25444
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
25445
- }
25446
- }();
25447
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
25448
- } catch (e) {
25449
- return Promise.reject(e);
25444
+ var video = videoRef.current;
25445
+ if (!video) return;
25446
+ var checkReadyState = function checkReadyState() {
25447
+ if (video.readyState > 3) {
25448
+ setLoading(false);
25449
+ var minutes = Math.floor(video.duration / 60);
25450
+ var _seconds = Math.floor(video.duration % 60);
25451
+ setVideoCurrentTime(minutes + ":" + (_seconds < 10 ? "0" + _seconds : _seconds));
25452
+ if (setVideoIsReadyToSend) {
25453
+ setVideoIsReadyToSend(file.tid);
25450
25454
  }
25451
- }, 1000);
25452
- }
25455
+ return true;
25456
+ }
25457
+ return false;
25458
+ };
25459
+ if (checkReadyState()) return;
25460
+ var handleCanPlay = function handleCanPlay() {
25461
+ return checkReadyState();
25462
+ };
25463
+ var handleLoadedMetadata = function handleLoadedMetadata() {
25464
+ return checkReadyState();
25465
+ };
25466
+ video.addEventListener('canplay', handleCanPlay);
25467
+ video.addEventListener('loadedmetadata', handleLoadedMetadata);
25468
+ var interval = setInterval(function () {
25469
+ if (checkReadyState()) {
25470
+ clearInterval(interval);
25471
+ }
25472
+ }, 1000);
25453
25473
  return function () {
25454
- return clearInterval(checkVideoInterval);
25474
+ video.removeEventListener('canplay', handleCanPlay);
25475
+ video.removeEventListener('loadedmetadata', handleLoadedMetadata);
25476
+ clearInterval(interval);
25455
25477
  };
25456
25478
  }, []);
25457
25479
  React.useEffect(function () {
@@ -25486,7 +25508,7 @@ var VideoPreview = /*#__PURE__*/React.memo(function VideoPreview(_ref) {
25486
25508
  preload: 'auto',
25487
25509
  id: 'video',
25488
25510
  src: file.attachmentUrl || videoUrl
25489
- }), videoCurrentTime && (/*#__PURE__*/React__default.createElement(VideoControls, null, !isPreview && !!videoDuration && !isRepliedMessage && !uploading && !isDetailsView && (
25511
+ }), videoCurrentTime && (/*#__PURE__*/React__default.createElement(VideoControls, null, !isPreview && !!videoCurrentTime && !isRepliedMessage && !uploading && !isDetailsView && (
25490
25512
  /*#__PURE__*/
25491
25513
  React__default.createElement(VideoPlayButton, null, /*#__PURE__*/React__default.createElement(SvgPlayVideo, null))), /*#__PURE__*/React__default.createElement(VideoTime, {
25492
25514
  isDetailsView: isDetailsView,
@@ -25496,7 +25518,7 @@ var VideoPreview = /*#__PURE__*/React.memo(function VideoPreview(_ref) {
25496
25518
  }, !isRepliedMessage && !isPreview && /*#__PURE__*/React__default.createElement(SvgVideoCall, null), videoCurrentTime))));
25497
25519
  });
25498
25520
  var VideoControls = styled__default.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"])));
25499
- var VideoTime = styled__default.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) {
25521
+ var VideoTime = styled__default.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) {
25500
25522
  return props.isRepliedMessage ? '3px' : props.isDetailsView ? undefined : '8px';
25501
25523
  }, function (props) {
25502
25524
  return props.isDetailsView ? '8px' : undefined;
@@ -27685,7 +27707,10 @@ var Attachment = function Attachment(_ref) {
27685
27707
  var _useState5 = React.useState(3),
27686
27708
  progress = _useState5[0],
27687
27709
  setProgress = _useState5[1];
27688
- var _useState6 = React.useState(),
27710
+ var _useState6 = React.useState({
27711
+ loaded: 0,
27712
+ total: (attachment === null || attachment === void 0 ? void 0 : attachment.size) || 0
27713
+ }),
27689
27714
  sizeProgress = _useState6[0],
27690
27715
  setSizeProgress = _useState6[1];
27691
27716
  var _useState7 = React.useState(true),
@@ -29385,7 +29410,7 @@ var HiddenMessageTime = styled__default.span(_templateObject2$u || (_templateObj
29385
29410
  }, function (props) {
29386
29411
  return props.color;
29387
29412
  });
29388
- var MessageStatusAndTimeContainer = styled__default.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) {
29413
+ var MessageStatusAndTimeContainer = styled__default.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) {
29389
29414
  return props.showOnlyOnHover && 'hidden';
29390
29415
  }, function (props) {
29391
29416
  return props.hide ? 'none' : 'flex';
@@ -29410,7 +29435,7 @@ var MessageStatusAndTimeContainer = styled__default.span(_templateObject3$o || (
29410
29435
  }, HiddenMessageTime, function (props) {
29411
29436
  return props.withAttachment ? props.messageTimeColorOnAttachment : '';
29412
29437
  }, function (props) {
29413
- return props.withAttachment && "\n position: absolute;\n z-index: 3;\n right: " + (props.fileAttachment ? '6px' : '10px') + ";\n bottom: " + (props.fileAttachment ? '9px' : '14px') + ";\n ";
29438
+ return props.withAttachment && "\n position: absolute;\n z-index: 10;\n right: " + (props.fileAttachment ? '6px' : '10px') + ";\n bottom: " + (props.fileAttachment ? '9px' : '14px') + ";\n ";
29414
29439
  });
29415
29440
  var MessageStatusUpdated = styled__default.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) {
29416
29441
  return props.fontSize || '12px';
@@ -29553,7 +29578,9 @@ var MessageBody = function MessageBody(_ref) {
29553
29578
  handleMouseLeave = _ref.handleMouseLeave,
29554
29579
  handleReactionAddDelete = _ref.handleReactionAddDelete,
29555
29580
  handleCreateChat = _ref.handleCreateChat,
29556
- messageTextRef = _ref.messageTextRef;
29581
+ messageTextRef = _ref.messageTextRef,
29582
+ handleOpenUserProfile = _ref.handleOpenUserProfile,
29583
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
29557
29584
  var _useColor = useColors(),
29558
29585
  accentColor = _useColor[THEME_COLORS.ACCENT],
29559
29586
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -29754,7 +29781,9 @@ var MessageBody = function MessageBody(_ref) {
29754
29781
  contactsMap: contactsMap,
29755
29782
  getFromContacts: getFromContacts,
29756
29783
  accentColor: accentColor,
29757
- textSecondary: textSecondary
29784
+ textSecondary: textSecondary,
29785
+ onMentionNameClick: handleOpenUserProfile,
29786
+ shouldOpenUserProfileForMention: !!shouldOpenUserProfileForMention
29758
29787
  })), !withAttachments && message.state === MESSAGE_STATUS.DELETE ? (/*#__PURE__*/React__default.createElement(MessageStatusDeleted$1, {
29759
29788
  color: textSecondary
29760
29789
  }, " Message was deleted. ")) : '', messageStatusAndTimePosition === 'onMessage' && !notLinkAttachment && (messageStatusVisible || messageTimeVisible) ? (/*#__PURE__*/React__default.createElement(MessageStatusAndTime$1, {
@@ -30040,7 +30069,8 @@ var Message$1 = function Message(_ref) {
30040
30069
  theme = _ref.theme,
30041
30070
  messageTextFontSize = _ref.messageTextFontSize,
30042
30071
  messageTextLineHeight = _ref.messageTextLineHeight,
30043
- messageTimeColorOnAttachment = _ref.messageTimeColorOnAttachment;
30072
+ messageTimeColorOnAttachment = _ref.messageTimeColorOnAttachment,
30073
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
30044
30074
  var _useColor = useColors(),
30045
30075
  accentColor = _useColor[THEME_COLORS.ACCENT],
30046
30076
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS],
@@ -30304,8 +30334,22 @@ var Message$1 = function Message(_ref) {
30304
30334
  document.removeEventListener('mousedown', handleClick);
30305
30335
  };
30306
30336
  }, []);
30337
+ var handleOpenChannelDetails = function handleOpenChannelDetails() {
30338
+ dispatch(switchChannelInfoAC(true));
30339
+ };
30340
+ var handleOpenUserProfile = function handleOpenUserProfile(user) {
30341
+ if (getOpenChatOnUserInteraction() && user && !selectionIsActive) {
30342
+ dispatch(createChannelAC({
30343
+ metadata: '',
30344
+ type: DEFAULT_CHANNEL_TYPE.DIRECT,
30345
+ members: [_extends({}, user, {
30346
+ role: 'owner'
30347
+ })]
30348
+ }, true));
30349
+ handleOpenChannelDetails();
30350
+ }
30351
+ };
30307
30352
  return /*#__PURE__*/React__default.createElement(MessageItem, {
30308
- key: message.id || message.tid,
30309
30353
  className: 'message_item',
30310
30354
  rtl: ownMessageOnRightSide && !message.incoming,
30311
30355
  withAvatar: renderAvatar,
@@ -30343,7 +30387,7 @@ var Message$1 = function Message(_ref) {
30343
30387
  }, message.state === MESSAGE_STATUS.FAILED && (/*#__PURE__*/React__default.createElement(FailedMessageIcon, {
30344
30388
  rtl: ownMessageOnRightSide && !message.incoming
30345
30389
  }, /*#__PURE__*/React__default.createElement(ErrorIconWrapper, null))), CustomMessageItem ? (/*#__PURE__*/React__default.createElement(CustomMessageItem, {
30346
- key: message.id,
30390
+ key: message.id || message.tid,
30347
30391
  channel: channel,
30348
30392
  message: message,
30349
30393
  prevMessage: prevMessage,
@@ -30373,7 +30417,8 @@ var Message$1 = function Message(_ref) {
30373
30417
  handleReactionAddDelete: handleReactionAddDelete,
30374
30418
  handleScrollToRepliedMessage: handleScrollToRepliedMessage,
30375
30419
  handleMediaItemClick: handleMediaItemClick,
30376
- isThreadMessage: isThreadMessage
30420
+ isThreadMessage: isThreadMessage,
30421
+ handleOpenUserProfile: handleOpenUserProfile
30377
30422
  })) : (/*#__PURE__*/React__default.createElement(MessageBody$1, {
30378
30423
  message: message,
30379
30424
  channel: channel,
@@ -30493,7 +30538,9 @@ var Message$1 = function Message(_ref) {
30493
30538
  handleDeletePendingMessage: handleDeletePendingMessage,
30494
30539
  handleCreateChat: handleCreateChat,
30495
30540
  messageTextRef: messageTextRef,
30496
- messageTimeColorOnAttachment: messageTimeColorOnAttachment || textOnPrimary
30541
+ messageTimeColorOnAttachment: messageTimeColorOnAttachment || textOnPrimary,
30542
+ handleOpenUserProfile: handleOpenUserProfile,
30543
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
30497
30544
  })), messageStatusAndTimePosition === 'bottomOfMessage' && (messageStatusVisible || messageTimeVisible) && (/*#__PURE__*/React__default.createElement(MessageStatusAndTime$1, {
30498
30545
  message: message,
30499
30546
  showMessageTimeAndStatusOnlyOnHover: showMessageTimeAndStatusOnlyOnHover,
@@ -30741,6 +30788,7 @@ var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
30741
30788
  }));
30742
30789
  };
30743
30790
  var MessageList = function MessageList(_ref2) {
30791
+ var _channel$lastMessage, _channel$lastMessage3, _scrollRef$current;
30744
30792
  var messages = _ref2.messages,
30745
30793
  fontFamily = _ref2.fontFamily,
30746
30794
  _ref2$ownMessageOnRig = _ref2.ownMessageOnRightSide,
@@ -30881,7 +30929,8 @@ var MessageList = function MessageList(_ref2) {
30881
30929
  messageTimeFontSize = _ref2.messageTimeFontSize,
30882
30930
  messageTimeColor = _ref2.messageTimeColor,
30883
30931
  messageStatusAndTimeLineHeight = _ref2.messageStatusAndTimeLineHeight,
30884
- hiddenMessagesProperties = _ref2.hiddenMessagesProperties;
30932
+ hiddenMessagesProperties = _ref2.hiddenMessagesProperties,
30933
+ shouldOpenUserProfileForMention = _ref2.shouldOpenUserProfileForMention;
30885
30934
  var _useColor = useColors(),
30886
30935
  outgoingMessageBackground = _useColor[THEME_COLORS.OUTGOING_MESSAGE_BACKGROUND],
30887
30936
  themeBackgroundColor = _useColor[THEME_COLORS.BACKGROUND],
@@ -30893,7 +30942,8 @@ var MessageList = function MessageList(_ref2) {
30893
30942
  textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
30894
30943
  textSecondary = _useColor[THEME_COLORS.TEXT_SECONDARY],
30895
30944
  surface2 = _useColor[THEME_COLORS.SURFACE_2],
30896
- border = _useColor[THEME_COLORS.BORDER];
30945
+ border = _useColor[THEME_COLORS.BORDER],
30946
+ highlightedBackground = _useColor[THEME_COLORS.HIGHLIGHTED_BACKGROUND];
30897
30947
  var ChatClient = getClient();
30898
30948
  var user = ChatClient.user;
30899
30949
  var dispatch = reactRedux.useDispatch();
@@ -30905,12 +30955,14 @@ var MessageList = function MessageList(_ref2) {
30905
30955
  var tabIsActive = reactRedux.useSelector(tabIsActiveSelector, reactRedux.shallowEqual);
30906
30956
  var selectedMessagesMap = reactRedux.useSelector(selectedMessagesMapSelector);
30907
30957
  var scrollToNewMessage = reactRedux.useSelector(scrollToNewMessageSelector, reactRedux.shallowEqual);
30958
+ var scrollToMentionedMessage = reactRedux.useSelector(scrollToMentionedMessageSelector, reactRedux.shallowEqual);
30908
30959
  var scrollToRepliedMessage = reactRedux.useSelector(scrollToMessageSelector, reactRedux.shallowEqual);
30909
30960
  var browserTabIsActive = reactRedux.useSelector(browserTabIsActiveSelector, reactRedux.shallowEqual);
30910
30961
  var hasNextMessages = reactRedux.useSelector(messagesHasNextSelector, reactRedux.shallowEqual);
30911
30962
  var hasPrevMessages = reactRedux.useSelector(messagesHasPrevSelector, reactRedux.shallowEqual);
30912
30963
  var messagesLoading = reactRedux.useSelector(messagesLoadingState);
30913
30964
  var draggingSelector = reactRedux.useSelector(isDraggingSelector, reactRedux.shallowEqual);
30965
+ var showScrollToNewMessageButton = reactRedux.useSelector(showScrollToNewMessageButtonSelector, reactRedux.shallowEqual);
30914
30966
  var _useState = React.useState(''),
30915
30967
  unreadMessageId = _useState[0],
30916
30968
  setUnreadMessageId = _useState[1];
@@ -30936,6 +30988,12 @@ var MessageList = function MessageList(_ref2) {
30936
30988
  var _useState8 = React.useState(null),
30937
30989
  scrollToReply = _useState8[0],
30938
30990
  setScrollToReply = _useState8[1];
30991
+ var _useState9 = React.useState(0),
30992
+ previousScrollTop = _useState9[0],
30993
+ setPreviousScrollTop = _useState9[1];
30994
+ var _useState0 = React.useState(false),
30995
+ shouldPreserveScroll = _useState0[0],
30996
+ setShouldPreserveScroll = _useState0[1];
30939
30997
  var messageForReply = {};
30940
30998
  var messageList = React.useMemo(function () {
30941
30999
  return messages;
@@ -30966,8 +31024,17 @@ var MessageList = function MessageList(_ref2) {
30966
31024
  messageTopDate.style.display = 'none';
30967
31025
  }
30968
31026
  };
30969
- var handleMessagesListScroll = function handleMessagesListScroll(event) {
31027
+ var handleMessagesListScroll = React.useCallback(function (event) {
30970
31028
  try {
31029
+ if (scrollToMentionedMessage) {
31030
+ var _target = event.target;
31031
+ if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
31032
+ dispatch(showScrollToNewMessageButtonAC(true));
31033
+ } else {
31034
+ dispatch(showScrollToNewMessageButtonAC(false));
31035
+ }
31036
+ return Promise.resolve();
31037
+ }
30971
31038
  setShowTopDate(true);
30972
31039
  clearTimeout(hideTopDateTimeout.current);
30973
31040
  hideTopDateTimeout.current = setTimeout(function () {
@@ -31029,7 +31096,7 @@ var MessageList = function MessageList(_ref2) {
31029
31096
  } catch (e) {
31030
31097
  return Promise.reject(e);
31031
31098
  }
31032
- };
31099
+ }, [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]);
31033
31100
  var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
31034
31101
  try {
31035
31102
  prevDisable = true;
@@ -31056,6 +31123,9 @@ var MessageList = function MessageList(_ref2) {
31056
31123
  }
31057
31124
  };
31058
31125
  var handleLoadMoreMessages = function handleLoadMoreMessages(direction, limit) {
31126
+ if (scrollToMentionedMessage) {
31127
+ return;
31128
+ }
31059
31129
  var lastMessageId = messages.length && messages[messages.length - 1].id;
31060
31130
  var firstMessageId = messages.length && messages[0].id;
31061
31131
  var hasPrevCached = getHasPrevCached();
@@ -31156,6 +31226,12 @@ var MessageList = function MessageList(_ref2) {
31156
31226
  e.dataTransfer.clearData();
31157
31227
  }
31158
31228
  };
31229
+ React.useEffect(function () {
31230
+ var _messages, _channel$lastMessage2;
31231
+ 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) {
31232
+ dispatch(showScrollToNewMessageButtonAC(false));
31233
+ }
31234
+ }, [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]);
31159
31235
  React.useEffect(function () {
31160
31236
  if (scrollToRepliedMessage) {
31161
31237
  loading = false;
@@ -31164,6 +31240,7 @@ var MessageList = function MessageList(_ref2) {
31164
31240
  if (repliedMessage) {
31165
31241
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
31166
31242
  scrollRef.current.scrollTop = repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200);
31243
+ scrollRef.current.style.scrollBehavior = 'smooth';
31167
31244
  if (!channel.backToLinkedChannel) {
31168
31245
  repliedMessage && repliedMessage.classList.add('highlight');
31169
31246
  }
@@ -31221,7 +31298,7 @@ var MessageList = function MessageList(_ref2) {
31221
31298
  clearVisibleMessagesMap();
31222
31299
  }
31223
31300
  if (channel) {
31224
- dispatch(getMessagesAC(channel));
31301
+ dispatch(getMessagesAC(channel, true, undefined, undefined, true));
31225
31302
  }
31226
31303
  if (channel.id) {
31227
31304
  if (channel.newMessageCount && channel.newMessageCount > 0) {
@@ -31235,6 +31312,8 @@ var MessageList = function MessageList(_ref2) {
31235
31312
  if (selectedMessagesMap && selectedMessagesMap.size) {
31236
31313
  dispatch(clearSelectedMessagesAC());
31237
31314
  }
31315
+ setPreviousScrollTop(0);
31316
+ setShouldPreserveScroll(false);
31238
31317
  nextDisable = false;
31239
31318
  prevDisable = false;
31240
31319
  scrollToBottom = true;
@@ -31254,6 +31333,13 @@ var MessageList = function MessageList(_ref2) {
31254
31333
  }
31255
31334
  }, [messages]);
31256
31335
  React.useEffect(function () {
31336
+ if (scrollRef.current) {
31337
+ var isAtBottom = scrollRef.current.scrollTop > -50;
31338
+ if (!isAtBottom) {
31339
+ setPreviousScrollTop(scrollRef.current.scrollTop);
31340
+ setShouldPreserveScroll(true);
31341
+ }
31342
+ }
31257
31343
  if (loading) {
31258
31344
  if (loadDirection !== 'next') {
31259
31345
  var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
@@ -31314,6 +31400,17 @@ var MessageList = function MessageList(_ref2) {
31314
31400
  dispatch(scrollToNewMessageAC(true));
31315
31401
  scrollToBottom = false;
31316
31402
  }
31403
+ if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
31404
+ requestAnimationFrame(function () {
31405
+ if (scrollRef.current) {
31406
+ scrollRef.current.style.scrollBehavior = 'inherit';
31407
+ scrollRef.current.scrollTop = previousScrollTop;
31408
+ scrollRef.current.style.scrollBehavior = 'smooth';
31409
+ }
31410
+ setShouldPreserveScroll(false);
31411
+ setPreviousScrollTop(0);
31412
+ });
31413
+ }
31317
31414
  }, [messages]);
31318
31415
  useDidUpdate(function () {
31319
31416
  log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
@@ -31414,9 +31511,7 @@ var MessageList = function MessageList(_ref2) {
31414
31511
  var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
31415
31512
  var messageMetas = isJSON(message.metadata) ? JSON.parse(message.metadata) : message.metadata;
31416
31513
  messagesIndexMap[message.id] = index;
31417
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
31418
- key: message.id || message.tid
31419
- }, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
31514
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
31420
31515
  noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
31421
31516
  theme: theme,
31422
31517
  lastIndex: false,
@@ -31432,6 +31527,7 @@ var MessageList = function MessageList(_ref2) {
31432
31527
  marginBottom: prevMessage && prevMessage.type === 'system' && message.type !== 'system' ? '16px' : '0',
31433
31528
  marginTop: differentUserMessageSpacing
31434
31529
  }), message.type === 'system' ? (/*#__PURE__*/React__default.createElement(SystemMessage, {
31530
+ key: message.id || message.tid,
31435
31531
  channel: channel,
31436
31532
  message: message,
31437
31533
  nextMessage: nextMessage,
@@ -31445,8 +31541,10 @@ var MessageList = function MessageList(_ref2) {
31445
31541
  backgroundColor: dateDividerBackgroundColor,
31446
31542
  borderRadius: dateDividerBorderRadius
31447
31543
  })) : (/*#__PURE__*/React__default.createElement(MessageWrapper, {
31544
+ key: message.id || message.tid,
31448
31545
  id: message.id,
31449
- className: (message.incoming ? incomingMessageStyles === null || incomingMessageStyles === void 0 ? void 0 : incomingMessageStyles.classname : outgoingMessageStyles === null || outgoingMessageStyles === void 0 ? void 0 : outgoingMessageStyles.classname) || ''
31546
+ className: (message.incoming ? incomingMessageStyles === null || incomingMessageStyles === void 0 ? void 0 : incomingMessageStyles.classname : outgoingMessageStyles === null || outgoingMessageStyles === void 0 ? void 0 : outgoingMessageStyles.classname) || '',
31547
+ highlightBg: highlightedBackground
31450
31548
  }, /*#__PURE__*/React__default.createElement(Message$2, {
31451
31549
  message: _extends({}, message, {
31452
31550
  metadata: messageMetas
@@ -31577,7 +31675,8 @@ var MessageList = function MessageList(_ref2) {
31577
31675
  messageStateColor: messageStateColor,
31578
31676
  messageTimeFontSize: messageTimeFontSize,
31579
31677
  messageTimeColor: messageTimeColor,
31580
- messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight
31678
+ messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight,
31679
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
31581
31680
  }))), isUnreadMessage ? (/*#__PURE__*/React__default.createElement(MessageDivider, {
31582
31681
  theme: theme,
31583
31682
  newMessagesSeparatorTextColor: newMessagesSeparatorTextColor,
@@ -31658,7 +31757,9 @@ var DropAttachmentArea = styled__default.div(_templateObject7$e || (_templateObj
31658
31757
  }, IconWrapper$1, function (props) {
31659
31758
  return props.iconBackgroundColor;
31660
31759
  });
31661
- var MessageWrapper = styled__default.div(_templateObject8$d || (_templateObject8$d = _taggedTemplateLiteralLoose(["\n &.highlight {\n & .messageBody {\n transform: scale(1.1);\n background-color: #d5d5d5;\n }\n }\n"])));
31760
+ var MessageWrapper = styled__default.div(_templateObject8$d || (_templateObject8$d = _taggedTemplateLiteralLoose(["\n &.highlight {\n & .messageBody {\n transform: scale(1.1);\n background-color: ", ";\n }\n }\n"])), function (props) {
31761
+ return props.highlightBg || '#d5d5d5';
31762
+ });
31662
31763
  var NoMessagesContainer = styled__default.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) {
31663
31764
  return props.color;
31664
31765
  });
@@ -31810,7 +31911,8 @@ var MessagesContainer = function MessagesContainer(_ref) {
31810
31911
  messageTimeColor = _ref.messageTimeColor,
31811
31912
  messageStatusAndTimeLineHeight = _ref.messageStatusAndTimeLineHeight,
31812
31913
  _ref$hiddenMessagesPr = _ref.hiddenMessagesProperties,
31813
- hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr;
31914
+ hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr,
31915
+ shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
31814
31916
  var messages = reactRedux.useSelector(activeChannelMessagesSelector) || [];
31815
31917
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MessageList, {
31816
31918
  messages: messages,
@@ -31938,7 +32040,8 @@ var MessagesContainer = function MessagesContainer(_ref) {
31938
32040
  messageTimeFontSize: messageTimeFontSize,
31939
32041
  messageTimeColor: messageTimeColor,
31940
32042
  messageStatusAndTimeLineHeight: messageStatusAndTimeLineHeight,
31941
- hiddenMessagesProperties: hiddenMessagesProperties
32043
+ hiddenMessagesProperties: hiddenMessagesProperties,
32044
+ shouldOpenUserProfileForMention: shouldOpenUserProfileForMention
31942
32045
  }));
31943
32046
  };
31944
32047
 
@@ -34097,7 +34200,7 @@ var RecordingAnimation = function RecordingAnimation(_ref2) {
34097
34200
  }));
34098
34201
  };
34099
34202
 
34100
- 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;
34203
+ 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;
34101
34204
  function AutoFocusPlugin(_ref) {
34102
34205
  var messageForReply = _ref.messageForReply;
34103
34206
  var _useLexicalComposerCo = LexicalComposerContext.useLexicalComposerContext(),
@@ -34412,17 +34515,6 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34412
34515
  }
34413
34516
  };
34414
34517
  var handleSendEditMessage = function handleSendEditMessage(event) {
34415
- if (typingTimout) {
34416
- if (!inTypingStateTimout) {
34417
- handleSendTypingState(true);
34418
- }
34419
- clearTimeout(typingTimout);
34420
- } else {
34421
- handleSendTypingState(true);
34422
- }
34423
- setTypingTimout(setTimeout(function () {
34424
- setTypingTimout(0);
34425
- }, 2000));
34426
34518
  var shiftKey = event.shiftKey,
34427
34519
  type = event.type,
34428
34520
  code = event.code;
@@ -34524,6 +34616,18 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34524
34616
  setMentionedMembers([]);
34525
34617
  setMessageBodyAttributes([]);
34526
34618
  dispatch(setCloseSearchChannelsAC(true));
34619
+ } else {
34620
+ if (typingTimout) {
34621
+ if (!inTypingStateTimout) {
34622
+ handleSendTypingState(true);
34623
+ }
34624
+ clearTimeout(typingTimout);
34625
+ } else {
34626
+ handleSendTypingState(true);
34627
+ }
34628
+ setTypingTimout(setTimeout(function () {
34629
+ setTypingTimout(0);
34630
+ }, 2000));
34527
34631
  }
34528
34632
  };
34529
34633
  var handleEditMessage = function handleEditMessage() {
@@ -34752,7 +34856,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34752
34856
  fileChecksum = "" + reader.result;
34753
34857
  }
34754
34858
  return Promise.resolve(hashString(fileChecksum || '')).then(function (checksumHash) {
34755
- function _temp10() {
34859
+ function _temp12() {
34756
34860
  if (dataFromDb) {
34757
34861
  cachedUrl = dataFromDb.url;
34758
34862
  setPendingAttachment(tid, {
@@ -34764,60 +34868,86 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34764
34868
  checksum: checksumHash
34765
34869
  });
34766
34870
  }
34767
- var _temp0 = function () {
34871
+ var _temp10 = function () {
34768
34872
  if (customUploader) {
34769
- if (fileType === 'image') {
34770
- resizeImage(file).then(function (resizedFile) {
34771
- try {
34772
- setAttachments(function (prevState) {
34773
- return [].concat(prevState, [{
34774
- data: file,
34775
- cachedUrl: cachedUrl,
34776
- upload: false,
34777
- type: isMediaAttachment ? fileType : 'file',
34778
- attachmentUrl: URL.createObjectURL(resizedFile.blob),
34779
- tid: tid,
34780
- size: dataFromDb ? dataFromDb.size : file.size,
34781
- metadata: dataFromDb && dataFromDb.metadata
34782
- }]);
34783
- });
34784
- return Promise.resolve();
34785
- } catch (e) {
34786
- return Promise.reject(e);
34787
- }
34788
- });
34789
- } else if (fileType === 'video') {
34790
- setAttachments(function (prevState) {
34791
- return [].concat(prevState, [{
34792
- data: file,
34793
- cachedUrl: cachedUrl,
34794
- upload: false,
34795
- type: isMediaAttachment ? fileType : 'file',
34796
- attachmentUrl: URL.createObjectURL(file),
34797
- tid: tid,
34798
- size: dataFromDb ? dataFromDb.size : file.size,
34799
- metadata: dataFromDb && dataFromDb.metadata
34800
- }]);
34801
- });
34802
- } else {
34803
- setAttachments(function (prevState) {
34804
- return [].concat(prevState, [{
34805
- data: file,
34806
- cachedUrl: cachedUrl,
34807
- upload: false,
34808
- type: 'file',
34809
- tid: tid,
34810
- size: dataFromDb ? dataFromDb.size : file.size,
34811
- metadata: dataFromDb && dataFromDb.metadata
34812
- }]);
34813
- });
34814
- }
34873
+ var _temp2 = function () {
34874
+ if (fileType === 'image') {
34875
+ resizeImage(file).then(function (resizedFile) {
34876
+ try {
34877
+ return Promise.resolve(createImageThumbnail(file)).then(function (_ref4) {
34878
+ var thumbnail = _ref4.thumbnail,
34879
+ imageWidth = _ref4.imageWidth,
34880
+ imageHeight = _ref4.imageHeight;
34881
+ setAttachments(function (prevState) {
34882
+ var _resizedFile$blob;
34883
+ return [].concat(prevState, [{
34884
+ data: file,
34885
+ cachedUrl: cachedUrl,
34886
+ upload: false,
34887
+ type: isMediaAttachment ? fileType : 'file',
34888
+ attachmentUrl: URL.createObjectURL(resizedFile.blob),
34889
+ tid: tid,
34890
+ 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,
34891
+ metadata: _extends({}, dataFromDb && dataFromDb.metadata, {
34892
+ szw: imageWidth,
34893
+ szh: imageHeight,
34894
+ tmb: thumbnail
34895
+ })
34896
+ }]);
34897
+ });
34898
+ });
34899
+ } catch (e) {
34900
+ return Promise.reject(e);
34901
+ }
34902
+ });
34903
+ } else {
34904
+ var _temp13 = function () {
34905
+ if (fileType === 'video') {
34906
+ return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref5) {
34907
+ var thumb = _ref5.thumb,
34908
+ width = _ref5.width,
34909
+ height = _ref5.height;
34910
+ setAttachments(function (prevState) {
34911
+ return [].concat(prevState, [{
34912
+ data: file,
34913
+ cachedUrl: cachedUrl,
34914
+ upload: false,
34915
+ type: isMediaAttachment ? fileType : 'file',
34916
+ attachmentUrl: URL.createObjectURL(file),
34917
+ tid: tid,
34918
+ size: dataFromDb ? dataFromDb.size : file.size,
34919
+ metadata: _extends({}, dataFromDb && dataFromDb.metadata, {
34920
+ szw: width,
34921
+ szh: height,
34922
+ tmb: thumb
34923
+ })
34924
+ }]);
34925
+ });
34926
+ });
34927
+ } else {
34928
+ setAttachments(function (prevState) {
34929
+ return [].concat(prevState, [{
34930
+ data: file,
34931
+ cachedUrl: cachedUrl,
34932
+ upload: false,
34933
+ type: 'file',
34934
+ tid: tid,
34935
+ size: dataFromDb ? dataFromDb.size : file.size,
34936
+ metadata: dataFromDb && dataFromDb.metadata
34937
+ }]);
34938
+ });
34939
+ }
34940
+ }();
34941
+ if (_temp13 && _temp13.then) return _temp13.then(function () {});
34942
+ }
34943
+ }();
34944
+ if (_temp2 && _temp2.then) return _temp2.then(function () {});
34815
34945
  } else {
34816
- var _temp9 = function () {
34946
+ var _temp1 = function () {
34817
34947
  if (fileType === 'image') {
34818
- var _temp5 = function () {
34948
+ var _temp7 = function () {
34819
34949
  if (isMediaAttachment) {
34820
- var _temp2 = function _temp2() {
34950
+ var _temp4 = function _temp4() {
34821
34951
  if (file.type === 'image/gif') {
34822
34952
  setAttachments(function (prevState) {
34823
34953
  return [].concat(prevState, [{
@@ -34877,23 +35007,23 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34877
35007
  }
34878
35008
  };
34879
35009
  var metas = {};
34880
- var _temp = function () {
35010
+ var _temp3 = function () {
34881
35011
  if (dataFromDb) {
34882
35012
  metas = dataFromDb.metadata;
34883
35013
  } else {
34884
- return Promise.resolve(createImageThumbnail(file)).then(function (_ref4) {
34885
- var thumbnail = _ref4.thumbnail,
34886
- imageWidth = _ref4.imageWidth,
34887
- imageHeight = _ref4.imageHeight;
35014
+ return Promise.resolve(createImageThumbnail(file)).then(function (_ref6) {
35015
+ var thumbnail = _ref6.thumbnail,
35016
+ imageWidth = _ref6.imageWidth,
35017
+ imageHeight = _ref6.imageHeight;
34888
35018
  metas.imageHeight = imageHeight;
34889
35019
  metas.imageWidth = imageWidth;
34890
35020
  metas.thumbnail = thumbnail;
34891
35021
  });
34892
35022
  }
34893
35023
  }();
34894
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
35024
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
34895
35025
  } else {
34896
- var _temp4 = function _temp4() {
35026
+ var _temp6 = function _temp6() {
34897
35027
  setAttachments(function (prevState) {
34898
35028
  return [].concat(prevState, [{
34899
35029
  data: file,
@@ -34910,24 +35040,24 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34910
35040
  });
34911
35041
  };
34912
35042
  var _metas = {};
34913
- var _temp3 = function () {
35043
+ var _temp5 = function () {
34914
35044
  if (dataFromDb) {
34915
35045
  _metas = dataFromDb.metadata;
34916
35046
  } else {
34917
- return Promise.resolve(createImageThumbnail(file, undefined, 50, 50)).then(function (_ref5) {
34918
- var thumbnail = _ref5.thumbnail;
35047
+ return Promise.resolve(createImageThumbnail(file, undefined, 50, 50)).then(function (_ref7) {
35048
+ var thumbnail = _ref7.thumbnail;
34919
35049
  _metas.thumbnail = thumbnail;
34920
35050
  });
34921
35051
  }
34922
35052
  }();
34923
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
35053
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
34924
35054
  }
34925
35055
  }();
34926
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
35056
+ if (_temp7 && _temp7.then) return _temp7.then(function () {});
34927
35057
  } else {
34928
- var _temp11 = function () {
35058
+ var _temp14 = function () {
34929
35059
  if (fileType === 'video') {
34930
- var _temp7 = function _temp7() {
35060
+ var _temp9 = function _temp9() {
34931
35061
  setAttachments(function (prevState) {
34932
35062
  return [].concat(prevState, [{
34933
35063
  data: file,
@@ -34942,14 +35072,14 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34942
35072
  });
34943
35073
  };
34944
35074
  var metas = {};
34945
- var _temp6 = function () {
35075
+ var _temp8 = function () {
34946
35076
  if (dataFromDb) {
34947
35077
  metas = dataFromDb.metadata;
34948
35078
  } else {
34949
- return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref6) {
34950
- var thumb = _ref6.thumb,
34951
- width = _ref6.width,
34952
- height = _ref6.height;
35079
+ return Promise.resolve(getFrame(URL.createObjectURL(file), 0)).then(function (_ref8) {
35080
+ var thumb = _ref8.thumb,
35081
+ width = _ref8.width,
35082
+ height = _ref8.height;
34953
35083
  metas.tmb = thumb;
34954
35084
  metas.width = width;
34955
35085
  metas.height = height;
@@ -34957,7 +35087,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34957
35087
  });
34958
35088
  }
34959
35089
  }();
34960
- return _temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6);
35090
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
34961
35091
  } else {
34962
35092
  setAttachments(function (prevState) {
34963
35093
  return [].concat(prevState, [{
@@ -34972,23 +35102,23 @@ var SendMessageInput = function SendMessageInput(_ref3) {
34972
35102
  });
34973
35103
  }
34974
35104
  }();
34975
- if (_temp11 && _temp11.then) return _temp11.then(function () {});
35105
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
34976
35106
  }
34977
35107
  }();
34978
- if (_temp9 && _temp9.then) return _temp9.then(function () {});
35108
+ if (_temp1 && _temp1.then) return _temp1.then(function () {});
34979
35109
  }
34980
35110
  }();
34981
- if (_temp0 && _temp0.then) return _temp0.then(function () {});
35111
+ if (_temp10 && _temp10.then) return _temp10.then(function () {});
34982
35112
  }
34983
35113
  var dataFromDb;
34984
- var _temp1 = _catch(function () {
35114
+ var _temp11 = _catch(function () {
34985
35115
  return Promise.resolve(_getDataFromDB(DB_NAMES.FILES_STORAGE, DB_STORE_NAMES.ATTACHMENTS, checksumHash, 'checksum')).then(function (_getDataFromDB) {
34986
35116
  dataFromDb = _getDataFromDB;
34987
35117
  });
34988
35118
  }, function (e) {
34989
35119
  log.error('error in get data from db . . . . ', e);
34990
35120
  });
34991
- return _temp1 && _temp1.then ? _temp1.then(_temp10) : _temp10(_temp1);
35121
+ return _temp11 && _temp11.then ? _temp11.then(_temp12) : _temp12(_temp11);
34992
35122
  });
34993
35123
  } catch (e) {
34994
35124
  return Promise.reject(e);
@@ -35635,10 +35765,10 @@ var SendMessageInput = function SendMessageInput(_ref3) {
35635
35765
  showRecording: showRecording
35636
35766
  }))))))))));
35637
35767
  };
35638
- var SendMessageWrapper = styled__default.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n"])), function (props) {
35768
+ var SendMessageWrapper = styled__default.div(_templateObject$I || (_templateObject$I = _taggedTemplateLiteralLoose(["\n background-color: ", ";\n position: relative;\n z-index: 15;\n"])), function (props) {
35639
35769
  return props.backgroundColor;
35640
35770
  });
35641
- var Container$k = styled__default.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) {
35771
+ var Container$k = styled__default.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) {
35642
35772
  return props.margin || '30px 0 16px';
35643
35773
  }, function (props) {
35644
35774
  return props.border || '';
@@ -35750,7 +35880,7 @@ var TypingIndicatorCont = styled__default.div(_templateObject18$2 || (_templateO
35750
35880
  var TypingFrom = styled__default.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) {
35751
35881
  return props.color;
35752
35882
  });
35753
- var sizeAnimation = styled.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"])));
35883
+ var sizeAnimation = styled.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"])));
35754
35884
  var DotOne = styled__default.span(_templateObject21$1 || (_templateObject21$1 = _taggedTemplateLiteralLoose([""])));
35755
35885
  var DotTwo = styled__default.span(_templateObject22$1 || (_templateObject22$1 = _taggedTemplateLiteralLoose([""])));
35756
35886
  var DotThree = styled__default.span(_templateObject23$1 || (_templateObject23$1 = _taggedTemplateLiteralLoose([""])));
@@ -38713,7 +38843,9 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38713
38843
  unreadCountWidth = _ref.unreadCountWidth,
38714
38844
  unreadCountHeight = _ref.unreadCountHeight,
38715
38845
  unreadCountFontSize = _ref.unreadCountFontSize,
38716
- unreadCountTextColor = _ref.unreadCountTextColor;
38846
+ unreadCountTextColor = _ref.unreadCountTextColor,
38847
+ _ref$animateFrom = _ref.animateFrom,
38848
+ animateFrom = _ref$animateFrom === void 0 ? 'bottom' : _ref$animateFrom;
38717
38849
  var _useColor = useColors(),
38718
38850
  accentColor = _useColor[THEME_COLORS.ACCENT],
38719
38851
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS];
@@ -38736,12 +38868,8 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38736
38868
  if (repliedMessage) {
38737
38869
  var scrollRef = document.getElementById('scrollableDiv');
38738
38870
  if (scrollRef) {
38739
- scrollRef.scrollTop = repliedMessage.offsetTop - scrollRef.offsetHeight / 2;
38871
+ scrollRef.scrollTop = repliedMessage.offsetTop;
38740
38872
  }
38741
- repliedMessage.classList.add('highlight');
38742
- setTimeout(function () {
38743
- repliedMessage.classList.remove('highlight');
38744
- }, 1000);
38745
38873
  }
38746
38874
  } else {
38747
38875
  dispatch(getMessagesAC(channel, undefined, messageId));
@@ -38751,7 +38879,9 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38751
38879
  return Promise.reject(e);
38752
38880
  }
38753
38881
  };
38754
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, showScrollToNewMessageButton && (/*#__PURE__*/React__default.createElement(BottomButton, {
38882
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BottomButton, {
38883
+ show: !!showScrollToNewMessageButton,
38884
+ animateFrom: animateFrom,
38755
38885
  theme: theme,
38756
38886
  width: buttonWidth,
38757
38887
  height: buttonHeight,
@@ -38771,12 +38901,16 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38771
38901
  fontSize: unreadCountFontSize,
38772
38902
  backgroundColor: accentColor,
38773
38903
  isMuted: channel.muted
38774
- }, channel.newMessageCount ? channel.newMessageCount > 99 ? '99+' : channel.newMessageCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgChevronDown, null))));
38904
+ }, channel.newMessageCount ? channel.newMessageCount > 99 ? '99+' : channel.newMessageCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgChevronDown, null)));
38775
38905
  };
38776
- var BottomButton = styled__default.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) {
38777
- return props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + "px";
38906
+ var BottomButton = styled__default.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) {
38907
+ return props.animateFrom === 'bottom' && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) - 130) + "px";
38778
38908
  }, function (props) {
38779
- return (props.rightPosition === undefined ? 16 : props.rightPosition) + "px";
38909
+ return props.animateFrom === 'right' && "right: " + (props.rightPosition === undefined ? 16 : props.rightPosition - 100) + "px";
38910
+ }, function (props) {
38911
+ return props.show && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition)) + "px";
38912
+ }, function (props) {
38913
+ return props.rightPosition === undefined ? 16 : props.rightPosition;
38780
38914
  }, function (props) {
38781
38915
  return props.backgroundColor;
38782
38916
  });
@@ -38838,7 +38972,9 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38838
38972
  unreadCountWidth = _ref.unreadCountWidth,
38839
38973
  unreadCountHeight = _ref.unreadCountHeight,
38840
38974
  unreadCountFontSize = _ref.unreadCountFontSize,
38841
- unreadCountTextColor = _ref.unreadCountTextColor;
38975
+ unreadCountTextColor = _ref.unreadCountTextColor,
38976
+ _ref$animateFrom = _ref.animateFrom,
38977
+ animateFrom = _ref$animateFrom === void 0 ? 'bottom' : _ref$animateFrom;
38842
38978
  var _useColor = useColors(),
38843
38979
  accentColor = _useColor[THEME_COLORS.ACCENT],
38844
38980
  backgroundSections = _useColor[THEME_COLORS.BACKGROUND_SECTIONS];
@@ -38848,19 +38984,41 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38848
38984
  var sendMessageInputHeight = reactRedux.useSelector(sendMessageInputHeightSelector);
38849
38985
  var showScrollToNewMessageButton = reactRedux.useSelector(showScrollToNewMessageButtonSelector);
38850
38986
  var messages = reactRedux.useSelector(activeChannelMessagesSelector) || [];
38851
- var handleScrollToBottom = function handleScrollToBottom() {
38852
- if (channel.newMentionCount >= 3 && (!channel.mentionsIds || channel.mentionsIds.length < 3)) {
38853
- dispatch(getChannelMentionsAC(channel.id));
38854
- }
38855
- if (channel.mentionsIds && channel.mentionsIds.length) {
38856
- handleScrollToRepliedMessage(channel.mentionsIds[0]);
38857
- dispatch(markMessagesAsReadAC(channel.id, [channel.mentionsIds[0]]));
38987
+ var isMessageRead = React.useCallback(function (messageId) {
38988
+ var _message$userMarkers;
38989
+ var message = messages.find(function (msg) {
38990
+ return msg.id === messageId;
38991
+ });
38992
+ return message === null || message === void 0 ? void 0 : (_message$userMarkers = message.userMarkers) === null || _message$userMarkers === void 0 ? void 0 : _message$userMarkers.find(function (marker) {
38993
+ return marker.name === MESSAGE_DELIVERY_STATUS.READ;
38994
+ });
38995
+ }, [messages]);
38996
+ var _handleScrollToMentions = function handleScrollToMentions(mentionsIds) {
38997
+ var newMentionsIds = [].concat(mentionsIds);
38998
+ var isRead = isMessageRead(mentionsIds[0]);
38999
+ if (!isRead) {
39000
+ handleScrollToMentionedMessage(mentionsIds[0]);
39001
+ dispatch(markMessagesAsReadAC(channel.id, [mentionsIds[0]]));
39002
+ newMentionsIds = mentionsIds.slice(1);
38858
39003
  dispatch(updateChannelDataAC(channel.id, {
38859
- mentionsIds: channel.mentionsIds.slice(1)
39004
+ mentionsIds: newMentionsIds
38860
39005
  }));
39006
+ } else {
39007
+ newMentionsIds = mentionsIds.slice(1);
39008
+ if (newMentionsIds.length > 0) {
39009
+ _handleScrollToMentions(newMentionsIds);
39010
+ } else {
39011
+ dispatch(updateChannelDataAC(channel.id, {
39012
+ mentionsIds: []
39013
+ }));
39014
+ return;
39015
+ }
39016
+ }
39017
+ if (channel.newMentionCount >= 3 && (!newMentionsIds || newMentionsIds.length < 3)) {
39018
+ dispatch(getChannelMentionsAC(channel.id));
38861
39019
  }
38862
39020
  };
38863
- var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
39021
+ var handleScrollToMentionedMessage = function handleScrollToMentionedMessage(messageId) {
38864
39022
  try {
38865
39023
  if (messages.findIndex(function (msg) {
38866
39024
  return msg.id === messageId;
@@ -38869,12 +39027,38 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38869
39027
  if (repliedMessage) {
38870
39028
  var scrollRef = document.getElementById('scrollableDiv');
38871
39029
  if (scrollRef) {
38872
- scrollRef.scrollTop = repliedMessage.offsetTop - scrollRef.offsetHeight / 2;
39030
+ var handleScrollEnd = function handleScrollEnd() {
39031
+ dispatch(setScrollToMentionedMessageAC(false));
39032
+ };
39033
+ var _handleScrollEndEvent = function handleScrollEndEvent() {
39034
+ scrollRef.removeEventListener('scrollend', _handleScrollEndEvent);
39035
+ handleScrollEnd();
39036
+ };
39037
+ var scrollTimeout;
39038
+ var _handleScrollEvent = function handleScrollEvent() {
39039
+ clearTimeout(scrollTimeout);
39040
+ scrollTimeout = setTimeout(function () {
39041
+ scrollRef.removeEventListener('scroll', _handleScrollEvent);
39042
+ handleScrollEnd();
39043
+ }, 150);
39044
+ };
39045
+ if ('onscrollend' in scrollRef) {
39046
+ ;
39047
+ scrollRef.addEventListener('scrollend', _handleScrollEndEvent);
39048
+ } else {
39049
+ ;
39050
+ scrollRef.addEventListener('scroll', _handleScrollEvent);
39051
+ }
39052
+ dispatch(setScrollToMentionedMessageAC(true));
39053
+ scrollRef.scrollTo({
39054
+ top: repliedMessage.offsetTop - scrollRef.offsetHeight / 2,
39055
+ behavior: 'smooth'
39056
+ });
38873
39057
  }
38874
39058
  repliedMessage.classList.add('highlight');
38875
39059
  setTimeout(function () {
38876
39060
  repliedMessage.classList.remove('highlight');
38877
- }, 1000);
39061
+ }, 1500);
38878
39062
  }
38879
39063
  } else {
38880
39064
  dispatch(getMessagesAC(channel, undefined, messageId));
@@ -38889,8 +39073,10 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38889
39073
  dispatch(getChannelMentionsAC(channel.id));
38890
39074
  }
38891
39075
  }, [channel.newMentionCount]);
38892
- return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, channel.newMentionCount ? (/*#__PURE__*/React__default.createElement(BottomButton$1, {
39076
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(BottomButton$1, {
38893
39077
  theme: theme,
39078
+ animateFrom: animateFrom,
39079
+ show: !!channel.newMentionCount,
38894
39080
  width: buttonWidth,
38895
39081
  height: buttonHeight,
38896
39082
  border: buttonBorder,
@@ -38898,7 +39084,9 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38898
39084
  backgroundColor: buttonBackgroundColor || backgroundSections,
38899
39085
  hoverBackgroundColor: buttonHoverBackgroundColor,
38900
39086
  shadow: buttonShadow,
38901
- onClick: handleScrollToBottom,
39087
+ onClick: function onClick() {
39088
+ return _handleScrollToMentions(channel.mentionsIds || []);
39089
+ },
38902
39090
  bottomOffset: sendMessageInputHeight,
38903
39091
  bottomPosition: bottomPosition,
38904
39092
  showsUnreadMentionsButton: !!showScrollToNewMessageButton,
@@ -38910,10 +39098,14 @@ var MessagesScrollToUnreadMentionsButton = function MessagesScrollToUnreadMentio
38910
39098
  fontSize: unreadCountFontSize,
38911
39099
  backgroundColor: accentColor,
38912
39100
  isMuted: channel.muted
38913
- }, channel.newMentionCount ? channel.newMentionCount > 99 ? '99+' : channel.newMentionCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgMention, null))) : null);
39101
+ }, channel.newMentionCount ? channel.newMentionCount > 99 ? '99+' : channel.newMentionCount : '')), buttonIcon || /*#__PURE__*/React__default.createElement(SvgMention, null)));
38914
39102
  };
38915
- var BottomButton$1 = styled__default.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) {
38916
- return props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0) + "px";
39103
+ var BottomButton$1 = styled__default.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) {
39104
+ return props.animateFrom === 'bottom' && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0) - 180) + "px";
39105
+ }, function (props) {
39106
+ return props.animateFrom === 'right' && "right: " + (props.rightPosition === undefined ? 16 : props.rightPosition - 100) + "px";
39107
+ }, function (props) {
39108
+ return props.show && "bottom: " + (props.bottomOffset + (props.bottomPosition === undefined ? 45 : props.bottomPosition) + (props.showsUnreadMentionsButton ? 60 : 0)) + "px";
38917
39109
  }, function (props) {
38918
39110
  return (props.rightPosition === undefined ? 16 : props.rightPosition) + "px";
38919
39111
  }, function (props) {