sceyt-chat-react-uikit 1.8.7-beta.17 → 1.8.7-beta.19

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.
@@ -1,5 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { IChannel, IMessage } from '../../../types';
3
+ import { VisibleMessagesMap } from '../../../store/message/reducers';
3
4
  export declare const PRELOAD_TRIGGER_PX = 5;
4
5
  export declare const LATEST_EDGE_GAP_PX = 0;
5
6
  declare type TimelineItem = {
@@ -41,12 +42,13 @@ export interface UseChatControllerParams {
41
42
  showScrollToNewMessageButton: boolean;
42
43
  unreadScrollTo: boolean | string;
43
44
  unreadMessageId: string;
45
+ visibleMessagesMap: VisibleMessagesMap;
44
46
  selectedMessagesMap: Map<string, any>;
45
47
  allowEditDeleteIncomingMessage: boolean;
46
48
  dispatch: (...args: any[]) => void;
47
49
  tabIsActive?: boolean;
48
50
  }
49
- export declare function useChatController({ messages, channel, hasPrevMessages, hasNextMessages, loadingPrevMessages, loadingNextMessages, connectionStatus, scrollToNewMessage, scrollToMentionedMessage, showScrollToNewMessageButton, unreadScrollTo, unreadMessageId, selectedMessagesMap, allowEditDeleteIncomingMessage, tabIsActive, dispatch }: UseChatControllerParams): {
51
+ export declare function useChatController({ messages, channel, hasPrevMessages, hasNextMessages, loadingPrevMessages, loadingNextMessages, connectionStatus, scrollToNewMessage, scrollToMentionedMessage, showScrollToNewMessageButton, unreadScrollTo, unreadMessageId, visibleMessagesMap, selectedMessagesMap, allowEditDeleteIncomingMessage, tabIsActive, dispatch }: UseChatControllerParams): {
50
52
  scrollRef: import("react").MutableRefObject<HTMLDivElement | null>;
51
53
  setLastVisibleMessageId: (message: IMessage) => void;
52
54
  handleScrollToRepliedMessage: (itemId: string, smooth?: boolean) => Promise<void>;
package/index.js CHANGED
@@ -9410,6 +9410,7 @@ var channelSlice = createSlice({
9410
9410
  state.channels = sortChannelByLastMessage([].concat(updatedChannels));
9411
9411
  },
9412
9412
  updateChannelLastMessage: function updateChannelLastMessage(state, action) {
9413
+ var _updateChannel2, _updateChannel3, _state$activeChannel2;
9413
9414
  var _action$payload5 = action.payload,
9414
9415
  channel = _action$payload5.channel,
9415
9416
  message = _action$payload5.message;
@@ -9440,6 +9441,9 @@ var channelSlice = createSlice({
9440
9441
  state.channels = sortChannelByLastMessage([updateChannel].concat(updatedChannels));
9441
9442
  }
9442
9443
  }
9444
+ if ((_updateChannel2 = updateChannel) !== null && _updateChannel2 !== void 0 && _updateChannel2.id && ((_updateChannel3 = updateChannel) === null || _updateChannel3 === void 0 ? void 0 : _updateChannel3.id) === ((_state$activeChannel2 = state.activeChannel) === null || _state$activeChannel2 === void 0 ? void 0 : _state$activeChannel2.id)) {
9445
+ state.activeChannel = updateChannel;
9446
+ }
9443
9447
  },
9444
9448
  updateChannelLastMessageStatus: function updateChannelLastMessageStatus(state, action) {
9445
9449
  var _action$payload6 = action.payload,
@@ -10693,6 +10697,19 @@ function showScrollToNewMessageButtonAC(state) {
10693
10697
  state: state
10694
10698
  });
10695
10699
  }
10700
+ function setVisibleMessageAC(message) {
10701
+ return setVisibleMessage({
10702
+ message: message
10703
+ });
10704
+ }
10705
+ function removeVisibleMessageAC(message) {
10706
+ return removeVisibleMessage({
10707
+ message: message
10708
+ });
10709
+ }
10710
+ function clearVisibleMessagesMapAC() {
10711
+ return clearVisibleMessagesMap();
10712
+ }
10696
10713
  function setUnreadScrollToAC(state) {
10697
10714
  return setUnreadScrollTo({
10698
10715
  state: state
@@ -11971,27 +11988,6 @@ var removeAudioRecordingFromMap = function removeAudioRecordingFromMap(channelId
11971
11988
  var setDraftMessageToMap = function setDraftMessageToMap(channelId, draftMessage) {
11972
11989
  draftMessagesMap[channelId] = draftMessage;
11973
11990
  };
11974
- var visibleMessagesMap = {};
11975
- var getVisibleMessagesMap = function getVisibleMessagesMap() {
11976
- return visibleMessagesMap;
11977
- };
11978
- var clearVisibleMessagesMap = function clearVisibleMessagesMap() {
11979
- visibleMessagesMap = {};
11980
- };
11981
- var setMessageToVisibleMessagesMap = function setMessageToVisibleMessagesMap(message) {
11982
- var localRef = getMessageLocalRef(message);
11983
- if (!localRef) {
11984
- return;
11985
- }
11986
- visibleMessagesMap[localRef] = {
11987
- id: message.id,
11988
- localRef: localRef,
11989
- sortKey: getMessageSortKey(message).toString()
11990
- };
11991
- };
11992
- var removeMessageFromVisibleMessagesMap = function removeMessageFromVisibleMessagesMap(message) {
11993
- delete visibleMessagesMap[getMessageLocalRef(message)];
11994
- };
11995
11991
  var checkPendingPollActionConflict = function checkPendingPollActionConflict(action) {
11996
11992
  var messageId = action.message.id || action.message.tid;
11997
11993
  if (!messageId) return {
@@ -12162,7 +12158,8 @@ var initialState$1 = {
12162
12158
  stableUnreadAnchor: {
12163
12159
  channelId: '',
12164
12160
  messageId: ''
12165
- }
12161
+ },
12162
+ visibleMessagesMap: {}
12166
12163
  };
12167
12164
  var isPendingMessage = function isPendingMessage(message) {
12168
12165
  return !message.id && !!message.tid;
@@ -12267,6 +12264,24 @@ var messageSlice = createSlice({
12267
12264
  setShowScrollToNewMessageButton: function setShowScrollToNewMessageButton(state, action) {
12268
12265
  state.showScrollToNewMessageButton = action.payload.state;
12269
12266
  },
12267
+ setVisibleMessage: function setVisibleMessage(state, action) {
12268
+ var message = action.payload.message;
12269
+ var localRef = getMessageLocalRef(message);
12270
+ if (!localRef) {
12271
+ return;
12272
+ }
12273
+ state.visibleMessagesMap[localRef] = {
12274
+ id: message.id,
12275
+ localRef: localRef,
12276
+ sortKey: getMessageSortKey(message).toString()
12277
+ };
12278
+ },
12279
+ removeVisibleMessage: function removeVisibleMessage(state, action) {
12280
+ delete state.visibleMessagesMap[getMessageLocalRef(action.payload.message)];
12281
+ },
12282
+ clearVisibleMessagesMap: function clearVisibleMessagesMap(state) {
12283
+ state.visibleMessagesMap = {};
12284
+ },
12270
12285
  setUnreadScrollTo: function setUnreadScrollTo(state, action) {
12271
12286
  state.unreadScrollTo = action.payload.state;
12272
12287
  },
@@ -12802,6 +12817,9 @@ var _messageSlice$actions = messageSlice.actions,
12802
12817
  setScrollToMentionedMessage = _messageSlice$actions.setScrollToMentionedMessage,
12803
12818
  setScrollToNewMessage = _messageSlice$actions.setScrollToNewMessage,
12804
12819
  setShowScrollToNewMessageButton = _messageSlice$actions.setShowScrollToNewMessageButton,
12820
+ setVisibleMessage = _messageSlice$actions.setVisibleMessage,
12821
+ removeVisibleMessage = _messageSlice$actions.removeVisibleMessage,
12822
+ clearVisibleMessagesMap = _messageSlice$actions.clearVisibleMessagesMap,
12805
12823
  setUnreadScrollTo = _messageSlice$actions.setUnreadScrollTo,
12806
12824
  setMessages = _messageSlice$actions.setMessages,
12807
12825
  addMessages = _messageSlice$actions.addMessages,
@@ -22223,8 +22241,8 @@ var getResolvedChannelLastMessage$1 = function getResolvedChannelLastMessage(cha
22223
22241
  return storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe2 = storedChannel.lastMessage) !== null && _storedChannel$lastMe2 !== void 0 && _storedChannel$lastMe2.id ? storedChannel.lastMessage : null;
22224
22242
  };
22225
22243
  function handleChannelMessageEvent(args, SceytChatClient) {
22226
- var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$parentMessag, _message$attachments;
22227
- var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, messages, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _storedChannel$lastMe7, lastMessageIsVisible, messagesHasNext, existingMessage, tabIsActive, channelDataUpdate, groupName, showNotifications, _tabIsActive, _state$ThemeReducer$n, _state$ThemeReducer$n2, _state$ThemeReducer$n3, _state$ThemeReducer$n4, _state$ThemeReducer$n5, _state$ThemeReducer$n6, contactsMap, getFromContacts, state, theme, accentColor, textSecondary, messageBody;
22244
+ var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$attachments;
22245
+ var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, messages, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _store$getState$Messa2, _storedChannel$lastMe7, visibleMessagesMap, lastMessageIsVisible, messagesHasNext, existingMessage, tabIsActive, channelDataUpdate, groupName, showNotifications, _tabIsActive, _state$ThemeReducer$n, _state$ThemeReducer$n2, _state$ThemeReducer$n3, _state$ThemeReducer$n4, _state$ThemeReducer$n5, _state$ThemeReducer$n6, contactsMap, getFromContacts, state, theme, accentColor, textSecondary, messageBody;
22228
22246
  return _regenerator().w(function (_context) {
22229
22247
  while (1) switch (_context.n) {
22230
22248
  case 0:
@@ -22279,7 +22297,8 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22279
22297
  _context.n = 10;
22280
22298
  break;
22281
22299
  }
22282
- lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
22300
+ visibleMessagesMap = ((_store$getState$Messa2 = store.getState().MessageReducer) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2.visibleMessagesMap) || {};
22301
+ lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(visibleMessagesMap).some(function (visibleMessage) {
22283
22302
  var _storedChannel$lastMe8;
22284
22303
  return visibleMessage.id === ((_storedChannel$lastMe8 = storedChannel.lastMessage) === null || _storedChannel$lastMe8 === void 0 ? void 0 : _storedChannel$lastMe8.id);
22285
22304
  }) : false;
@@ -22388,19 +22407,13 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22388
22407
  return att.type !== attachmentTypes.link;
22389
22408
  }) : undefined);
22390
22409
  case 15:
22391
- if (!(message.repliedInThread && (_message$parentMessag = message.parentMessage) !== null && _message$parentMessag !== void 0 && _message$parentMessag.id)) {
22392
- _context.n = 17;
22410
+ if (!(message.user.id !== SceytChatClient.user.id)) {
22411
+ _context.n = 16;
22393
22412
  break;
22394
22413
  }
22395
22414
  _context.n = 16;
22396
- return effects.put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
22397
- case 16:
22398
- _context.n = 18;
22399
- break;
22400
- case 17:
22401
- _context.n = 18;
22402
22415
  return effects.put(markMessagesAsDeliveredAC(channel.id, [message.id]));
22403
- case 18:
22416
+ case 16:
22404
22417
  updateChannelOnAllChannels(channel.id, channelDataUpdate);
22405
22418
  if (shouldUpdateLastMessage) {
22406
22419
  updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessageUpdate);
@@ -22408,7 +22421,7 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22408
22421
  if ((_message$attachments = message.attachments) !== null && _message$attachments !== void 0 && _message$attachments.length) {
22409
22422
  updateTabAttachmentCache(channel.id, message.attachments, message.user);
22410
22423
  }
22411
- case 19:
22424
+ case 17:
22412
22425
  return _context.a(2);
22413
22426
  }
22414
22427
  }, _marked$2);
@@ -23020,7 +23033,7 @@ function watchForEvents() {
23020
23033
  };
23021
23034
  });
23022
23035
  _loop = /*#__PURE__*/_regenerator().m(function _callee3() {
23023
- var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, users, blockedUsers, allChannels, _loop2, _iterator2, _step2, _users, unblockedUsers, _allChannels, _loop3, _iterator3, _step3, _channel2, removedMembers, _activeChannelId, _channelExists2, activeChannel, _updateChannelData2, _groupName, _channel3, addedMembers, _activeChannelId2, _channelExists3, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists4, subject, avatarUrl, muted, mutedTill, metadata, _channel4, fields, parsedChannelMeta, parsedMeta, _activeChannelId3, _groupName3, channelId, _channel5, _channel6, user, message, reaction, isSelf, _activeChannelId4, _state$ThemeReducer$n7, _state$ThemeReducer$n8, _state$ThemeReducer$n9, _state$ThemeReducer$n0, _state$ThemeReducer$n1, _state$ThemeReducer$n10, contactsMap, _getFromContacts, state, theme, accentColor, textSecondary, messageBody, channelUpdateParams, _pollDetailsData$chan, _pollDetailsData$chan2, _channel7, pollDetails, messageId, pollDetailsData, _activeChannelId5, addedVotes, deletedVotes, objs, _iterator4, _step4, vote, _iterator5, _step5, _vote, _i, _objs, obj, _store$getState$Messa2, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel8, _pollDetails, _messageId, _pollDetailsData, _activeChannelId6, _deletedVotes, _objs3, _iterator6, _step6, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel9, _pollDetails2, _messageId2, _activeChannelId7, _pollDetailsData2, retractedVotes, _objs6, _iterator7, _step7, _vote4, _i5, _objs7, _obj4, _iterator8, _step8, _vote3, _channel0, _messageId3, _activeChannelId8, _obj5, _channel1, _user, _message, _reaction, channelFromMap, _isSelf, _activeChannelId9, _channelUpdateParams, _channel10, _activeChannelId0, channelExist, _channel11, _channel12, _channel13, _channel14, _channel15, _activeChannelId1, lastChannel, _channel16, _channel17, _groupName4, _channel18, _groupName5, _channel19, members, _activeChannelId10, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel20, _channel21, _channelId, from, name, status, _t, _t2, _t3, _t4;
23036
+ var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, users, blockedUsers, allChannels, _loop2, _iterator2, _step2, _users, unblockedUsers, _allChannels, _loop3, _iterator3, _step3, _channel2, removedMembers, _activeChannelId, _channelExists2, activeChannel, _updateChannelData2, _groupName, _channel3, addedMembers, _activeChannelId2, _channelExists3, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists4, subject, avatarUrl, muted, mutedTill, metadata, _channel4, fields, parsedChannelMeta, parsedMeta, _activeChannelId3, _groupName3, channelId, _channel5, _channel6, user, message, reaction, isSelf, _activeChannelId4, _state$ThemeReducer$n7, _state$ThemeReducer$n8, _state$ThemeReducer$n9, _state$ThemeReducer$n0, _state$ThemeReducer$n1, _state$ThemeReducer$n10, contactsMap, _getFromContacts, state, theme, accentColor, textSecondary, messageBody, channelUpdateParams, _pollDetailsData$chan, _pollDetailsData$chan2, _channel7, pollDetails, messageId, pollDetailsData, _activeChannelId5, addedVotes, deletedVotes, objs, _iterator4, _step4, vote, _iterator5, _step5, _vote, _i, _objs, obj, _store$getState$Messa3, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel8, _pollDetails, _messageId, _pollDetailsData, _activeChannelId6, _deletedVotes, _objs3, _iterator6, _step6, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel9, _pollDetails2, _messageId2, _activeChannelId7, _pollDetailsData2, retractedVotes, _objs6, _iterator7, _step7, _vote4, _i5, _objs7, _obj4, _iterator8, _step8, _vote3, _channel0, _messageId3, _activeChannelId8, _obj5, _channel1, _user, _message, _reaction, channelFromMap, _isSelf, _activeChannelId9, _channelUpdateParams, _channel10, _activeChannelId0, channelExist, _channel11, _channel12, _channel13, _channel14, _channel15, _activeChannelId1, lastChannel, _channel16, _channel17, _groupName4, _channel18, _groupName5, _channel19, members, _activeChannelId10, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel20, _channel21, _channelId, from, name, status, _t, _t2, _t3, _t4;
23024
23037
  return _regenerator().w(function (_context8) {
23025
23038
  while (1) switch (_context8.p = _context8.n) {
23026
23039
  case 0:
@@ -23669,7 +23682,7 @@ function watchForEvents() {
23669
23682
  break;
23670
23683
  }
23671
23684
  key = pollDetailsData.id + "_" + obj.vote.optionId;
23672
- hasNext = ((_store$getState$Messa2 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2[key]) || false;
23685
+ hasNext = ((_store$getState$Messa3 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa3 === void 0 ? void 0 : _store$getState$Messa3[key]) || false;
23673
23686
  if (!(obj.type === 'addOwn')) {
23674
23687
  _context8.n = 90;
23675
23688
  break;
@@ -24564,22 +24577,27 @@ function getChannels(action) {
24564
24577
  mappedChannels = _yield$call.channels;
24565
24578
  channelsForUpdateLastReactionMessage = _yield$call.channelsForUpdateLastReactionMessage;
24566
24579
  _loop = /*#__PURE__*/_regenerator().m(function _callee() {
24567
- var channelId, pendingLastMessage, mappedChannel, mapEntry;
24580
+ var _store$getState$Chann;
24581
+ var channelId, pendingLastMessage, currentReduxLastMessage, resolvedLastMessage, mappedChannel, mapEntry;
24568
24582
  return _regenerator().w(function (_context2) {
24569
24583
  while (1) switch (_context2.n) {
24570
24584
  case 0:
24571
24585
  channelId = _Object$keys[_i];
24572
24586
  pendingLastMessage = pendingLastMessages[channelId];
24587
+ currentReduxLastMessage = (_store$getState$Chann = store.getState().ChannelReducer.channels.find(function (ch) {
24588
+ return ch.id === channelId;
24589
+ })) === null || _store$getState$Chann === void 0 ? void 0 : _store$getState$Chann.lastMessage;
24590
+ resolvedLastMessage = currentReduxLastMessage !== null && currentReduxLastMessage !== void 0 && currentReduxLastMessage.id && !pendingLastMessage.id ? currentReduxLastMessage : pendingLastMessage;
24573
24591
  mappedChannel = mappedChannels.find(function (ch) {
24574
24592
  return ch.id === channelId;
24575
24593
  });
24576
24594
  if (mappedChannel) {
24577
- mappedChannel.lastMessage = pendingLastMessage;
24595
+ mappedChannel.lastMessage = resolvedLastMessage;
24578
24596
  }
24579
24597
  mapEntry = getChannelFromMap(channelId);
24580
24598
  if (mapEntry) {
24581
24599
  setChannelInMap(_extends({}, mapEntry, {
24582
- lastMessage: pendingLastMessage
24600
+ lastMessage: resolvedLastMessage
24583
24601
  }));
24584
24602
  }
24585
24603
  case 1:
@@ -28672,6 +28690,9 @@ var scrollToMentionedMessageSelector = function scrollToMentionedMessageSelector
28672
28690
  var showScrollToNewMessageButtonSelector = function showScrollToNewMessageButtonSelector(store) {
28673
28691
  return store.MessageReducer.showScrollToNewMessageButton;
28674
28692
  };
28693
+ var visibleMessagesMapSelector = function visibleMessagesMapSelector(store) {
28694
+ return store.MessageReducer.visibleMessagesMap;
28695
+ };
28675
28696
  var sendMessageInputHeightSelector = function sendMessageInputHeightSelector(store) {
28676
28697
  return store.MessageReducer.sendMessageInputHeight;
28677
28698
  };
@@ -35895,24 +35916,24 @@ var Message = function Message(_ref) {
35895
35916
  setLastVisibleMessageId(message);
35896
35917
  }
35897
35918
  if (!channel.isLinkedChannel) {
35898
- setMessageToVisibleMessagesMap(message);
35919
+ dispatch(setVisibleMessageAC(message));
35899
35920
  }
35900
35921
  if (scrollToNewMessage.scrollToBottom && channel.lastMessage && compareMessagesForList(message, channel.lastMessage) >= 0) {
35901
35922
  dispatch(scrollToNewMessageAC(false, false, false));
35902
35923
  }
35903
35924
  } else {
35904
35925
  if (!channel.isLinkedChannel) {
35905
- removeMessageFromVisibleMessagesMap(message);
35926
+ dispatch(removeVisibleMessageAC(message));
35906
35927
  }
35907
35928
  }
35908
35929
  }, [channel.isLinkedChannel, channel.lastMessage, dispatch, isVisible, message, scrollToNewMessage.scrollToBottom, unreadScrollTo, setLastVisibleMessageId]);
35909
35930
  React.useEffect(function () {
35910
35931
  return function () {
35911
35932
  if (!channel.isLinkedChannel) {
35912
- removeMessageFromVisibleMessagesMap(message);
35933
+ dispatch(removeVisibleMessageAC(message));
35913
35934
  }
35914
35935
  };
35915
- }, [channel.isLinkedChannel, message]);
35936
+ }, [channel.isLinkedChannel, dispatch, message]);
35916
35937
  return /*#__PURE__*/React__default.createElement(Container$c, {
35917
35938
  id: message.id || message.tid,
35918
35939
  ref: messageItemRef,
@@ -43279,24 +43300,24 @@ var Message$1 = function Message(_ref) {
43279
43300
  }
43280
43301
  handleSendReadMarker();
43281
43302
  if (!channel.isLinkedChannel) {
43282
- setMessageToVisibleMessagesMap(message);
43303
+ dispatch(setVisibleMessageAC(message));
43283
43304
  }
43284
43305
  if (scrollToNewMessage.scrollToBottom && channel.lastMessage && compareMessagesForList(message, channel.lastMessage) >= 0) {
43285
43306
  dispatch(scrollToNewMessageAC(false, false, false));
43286
43307
  }
43287
43308
  } else {
43288
43309
  if (!channel.isLinkedChannel) {
43289
- removeMessageFromVisibleMessagesMap(message);
43310
+ dispatch(removeVisibleMessageAC(message));
43290
43311
  }
43291
43312
  }
43292
43313
  }, [isVisible, setLastVisibleMessageId, message.id, handleSendReadMarker, channel.isLinkedChannel, channel.lastMessage, scrollToNewMessage.scrollToBottom, dispatch, message, isTabActive]);
43293
43314
  React.useEffect(function () {
43294
43315
  return function () {
43295
43316
  if (!channel.isLinkedChannel) {
43296
- removeMessageFromVisibleMessagesMap(message);
43317
+ dispatch(removeVisibleMessageAC(message));
43297
43318
  }
43298
43319
  };
43299
- }, [channel.isLinkedChannel, message]);
43320
+ }, [channel.isLinkedChannel, dispatch, message]);
43300
43321
  React.useEffect(function () {
43301
43322
  if (!isVisible && infoPopupOpen) {
43302
43323
  setInfoPopupOpen(false);
@@ -43983,6 +44004,7 @@ function useChatController(_ref5) {
43983
44004
  showScrollToNewMessageButton = _ref5.showScrollToNewMessageButton,
43984
44005
  unreadScrollTo = _ref5.unreadScrollTo,
43985
44006
  unreadMessageId = _ref5.unreadMessageId,
44007
+ visibleMessagesMap = _ref5.visibleMessagesMap,
43986
44008
  selectedMessagesMap = _ref5.selectedMessagesMap,
43987
44009
  allowEditDeleteIncomingMessage = _ref5.allowEditDeleteIncomingMessage,
43988
44010
  _ref5$tabIsActive = _ref5.tabIsActive,
@@ -43992,6 +44014,7 @@ function useChatController(_ref5) {
43992
44014
  var itemElementsRef = React.useRef(new Map());
43993
44015
  var messagesIndexMapRef = React.useRef({});
43994
44016
  var messagesRef = React.useRef(messages);
44017
+ var visibleMessagesMapRef = React.useRef(visibleMessagesMap);
43995
44018
  var channelRef = React.useRef(channel);
43996
44019
  var lastVisibleMessageIdRef = React.useRef('');
43997
44020
  var lastVisibleAnchorIdRef = React.useRef('');
@@ -44125,6 +44148,7 @@ function useChatController(_ref5) {
44125
44148
  }, []);
44126
44149
  React.useLayoutEffect(function () {
44127
44150
  messagesRef.current = messages;
44151
+ visibleMessagesMapRef.current = visibleMessagesMap;
44128
44152
  channelRef.current = channel;
44129
44153
  connectionStatusRef.current = connectionStatus;
44130
44154
  });
@@ -45594,7 +45618,7 @@ function useChatController(_ref5) {
45594
45618
  var savedRestoreWindow = channelRestoreWindowMap.get(channel.id);
45595
45619
  if (savedRestoreWindow) {
45596
45620
  if (!channel.isLinkedChannel) {
45597
- clearVisibleMessagesMap();
45621
+ dispatch(clearVisibleMessagesMapAC());
45598
45622
  }
45599
45623
  if (channel.backToLinkedChannel) {
45600
45624
  restoreRef.current = {
@@ -45615,7 +45639,7 @@ function useChatController(_ref5) {
45615
45639
  }
45616
45640
  }
45617
45641
  if (channel.backToLinkedChannel) {
45618
- var visibleMessages = getVisibleMessagesMap();
45642
+ var visibleMessages = visibleMessagesMapRef.current;
45619
45643
  var visibleMessagesIds = Object.values(visibleMessages).filter(function (message) {
45620
45644
  return !!message.id;
45621
45645
  }).sort(function (left, right) {
@@ -45631,7 +45655,7 @@ function useChatController(_ref5) {
45631
45655
  return;
45632
45656
  }
45633
45657
  if (!channel.isLinkedChannel) {
45634
- clearVisibleMessagesMap();
45658
+ dispatch(clearVisibleMessagesMapAC());
45635
45659
  }
45636
45660
  if (channel.newMessageCount && channel.lastDisplayedMessageId) {
45637
45661
  suppressNextMessageChange();
@@ -45675,7 +45699,7 @@ function useChatController(_ref5) {
45675
45699
  invalidateEdgeDirection('previous');
45676
45700
  invalidateEdgeDirection('next');
45677
45701
  suppressNextMessageChange();
45678
- var isHistoryTopVisible = messagesRef.current[0] ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
45702
+ var isHistoryTopVisible = messagesRef.current[0] ? Object.values(visibleMessagesMapRef.current).some(function (visibleMessage) {
45679
45703
  var _messagesRef$current$;
45680
45704
  return visibleMessage.id === ((_messagesRef$current$ = messagesRef.current[0]) === null || _messagesRef$current$ === void 0 ? void 0 : _messagesRef$current$.id);
45681
45705
  }) : false;
@@ -45705,7 +45729,7 @@ function useChatController(_ref5) {
45705
45729
  }, [dispatch, isViewingLatest, jumpToLatest, scrollToNewMessage]);
45706
45730
  React.useEffect(function () {
45707
45731
  var latestLocalRef = getMessageLocalRef(channel.lastMessage);
45708
- var latestVisibleMessages = Object.values(getVisibleMessagesMap());
45732
+ var latestVisibleMessages = Object.values(visibleMessagesMap);
45709
45733
  var isLatestInView = latestVisibleMessages.find(function (m) {
45710
45734
  return m.sortKey === latestLocalRef || m.localRef === latestLocalRef;
45711
45735
  });
@@ -45713,7 +45737,7 @@ function useChatController(_ref5) {
45713
45737
  if (showScrollToNewMessageButton !== shouldShow) {
45714
45738
  dispatch(showScrollToNewMessageButtonAC(shouldShow));
45715
45739
  }
45716
- }, [channel.lastMessage, dispatch, isViewingLatest, lastVisibleMessageId, pendingNewestCount, scrollToMentionedMessage, showScrollToNewMessageButton]);
45740
+ }, [channel.lastMessage, dispatch, isViewingLatest, lastVisibleMessageId, pendingNewestCount, scrollToMentionedMessage, showScrollToNewMessageButton, visibleMessagesMap]);
45717
45741
  React.useEffect(function () {
45718
45742
  if (!unreadScrollTo || !messages.length || loadingPrevMessages !== LOADING_STATE.LOADED || loadingNextMessages !== LOADING_STATE.LOADED) {
45719
45743
  return;
@@ -46191,6 +46215,7 @@ var MessageList = function MessageList(_ref) {
46191
46215
  var unreadScrollTo = useSelector(unreadScrollToSelector, reactRedux.shallowEqual);
46192
46216
  var messages = useSelector(activeChannelMessagesSelector, reactRedux.shallowEqual) || [];
46193
46217
  var unreadMessageId = useSelector(unreadMessageIdSelector, reactRedux.shallowEqual);
46218
+ var visibleMessagesMap = useSelector(visibleMessagesMapSelector, reactRedux.shallowEqual);
46194
46219
  var _useState = React.useState(null),
46195
46220
  mediaFile = _useState[0],
46196
46221
  setMediaFile = _useState[1];
@@ -46228,6 +46253,7 @@ var MessageList = function MessageList(_ref) {
46228
46253
  showScrollToNewMessageButton: showScrollToNewMessageButton,
46229
46254
  unreadScrollTo: unreadScrollTo,
46230
46255
  unreadMessageId: unreadMessageId,
46256
+ visibleMessagesMap: visibleMessagesMap,
46231
46257
  selectedMessagesMap: selectedMessagesMap,
46232
46258
  allowEditDeleteIncomingMessage: allowEditDeleteIncomingMessage,
46233
46259
  dispatch: dispatch,
package/index.modern.js CHANGED
@@ -9409,6 +9409,7 @@ var channelSlice = createSlice({
9409
9409
  state.channels = sortChannelByLastMessage([].concat(updatedChannels));
9410
9410
  },
9411
9411
  updateChannelLastMessage: function updateChannelLastMessage(state, action) {
9412
+ var _updateChannel2, _updateChannel3, _state$activeChannel2;
9412
9413
  var _action$payload5 = action.payload,
9413
9414
  channel = _action$payload5.channel,
9414
9415
  message = _action$payload5.message;
@@ -9439,6 +9440,9 @@ var channelSlice = createSlice({
9439
9440
  state.channels = sortChannelByLastMessage([updateChannel].concat(updatedChannels));
9440
9441
  }
9441
9442
  }
9443
+ if ((_updateChannel2 = updateChannel) !== null && _updateChannel2 !== void 0 && _updateChannel2.id && ((_updateChannel3 = updateChannel) === null || _updateChannel3 === void 0 ? void 0 : _updateChannel3.id) === ((_state$activeChannel2 = state.activeChannel) === null || _state$activeChannel2 === void 0 ? void 0 : _state$activeChannel2.id)) {
9444
+ state.activeChannel = updateChannel;
9445
+ }
9442
9446
  },
9443
9447
  updateChannelLastMessageStatus: function updateChannelLastMessageStatus(state, action) {
9444
9448
  var _action$payload6 = action.payload,
@@ -10692,6 +10696,19 @@ function showScrollToNewMessageButtonAC(state) {
10692
10696
  state: state
10693
10697
  });
10694
10698
  }
10699
+ function setVisibleMessageAC(message) {
10700
+ return setVisibleMessage({
10701
+ message: message
10702
+ });
10703
+ }
10704
+ function removeVisibleMessageAC(message) {
10705
+ return removeVisibleMessage({
10706
+ message: message
10707
+ });
10708
+ }
10709
+ function clearVisibleMessagesMapAC() {
10710
+ return clearVisibleMessagesMap();
10711
+ }
10695
10712
  function setUnreadScrollToAC(state) {
10696
10713
  return setUnreadScrollTo({
10697
10714
  state: state
@@ -11970,27 +11987,6 @@ var removeAudioRecordingFromMap = function removeAudioRecordingFromMap(channelId
11970
11987
  var setDraftMessageToMap = function setDraftMessageToMap(channelId, draftMessage) {
11971
11988
  draftMessagesMap[channelId] = draftMessage;
11972
11989
  };
11973
- var visibleMessagesMap = {};
11974
- var getVisibleMessagesMap = function getVisibleMessagesMap() {
11975
- return visibleMessagesMap;
11976
- };
11977
- var clearVisibleMessagesMap = function clearVisibleMessagesMap() {
11978
- visibleMessagesMap = {};
11979
- };
11980
- var setMessageToVisibleMessagesMap = function setMessageToVisibleMessagesMap(message) {
11981
- var localRef = getMessageLocalRef(message);
11982
- if (!localRef) {
11983
- return;
11984
- }
11985
- visibleMessagesMap[localRef] = {
11986
- id: message.id,
11987
- localRef: localRef,
11988
- sortKey: getMessageSortKey(message).toString()
11989
- };
11990
- };
11991
- var removeMessageFromVisibleMessagesMap = function removeMessageFromVisibleMessagesMap(message) {
11992
- delete visibleMessagesMap[getMessageLocalRef(message)];
11993
- };
11994
11990
  var checkPendingPollActionConflict = function checkPendingPollActionConflict(action) {
11995
11991
  var messageId = action.message.id || action.message.tid;
11996
11992
  if (!messageId) return {
@@ -12161,7 +12157,8 @@ var initialState$1 = {
12161
12157
  stableUnreadAnchor: {
12162
12158
  channelId: '',
12163
12159
  messageId: ''
12164
- }
12160
+ },
12161
+ visibleMessagesMap: {}
12165
12162
  };
12166
12163
  var isPendingMessage = function isPendingMessage(message) {
12167
12164
  return !message.id && !!message.tid;
@@ -12266,6 +12263,24 @@ var messageSlice = createSlice({
12266
12263
  setShowScrollToNewMessageButton: function setShowScrollToNewMessageButton(state, action) {
12267
12264
  state.showScrollToNewMessageButton = action.payload.state;
12268
12265
  },
12266
+ setVisibleMessage: function setVisibleMessage(state, action) {
12267
+ var message = action.payload.message;
12268
+ var localRef = getMessageLocalRef(message);
12269
+ if (!localRef) {
12270
+ return;
12271
+ }
12272
+ state.visibleMessagesMap[localRef] = {
12273
+ id: message.id,
12274
+ localRef: localRef,
12275
+ sortKey: getMessageSortKey(message).toString()
12276
+ };
12277
+ },
12278
+ removeVisibleMessage: function removeVisibleMessage(state, action) {
12279
+ delete state.visibleMessagesMap[getMessageLocalRef(action.payload.message)];
12280
+ },
12281
+ clearVisibleMessagesMap: function clearVisibleMessagesMap(state) {
12282
+ state.visibleMessagesMap = {};
12283
+ },
12269
12284
  setUnreadScrollTo: function setUnreadScrollTo(state, action) {
12270
12285
  state.unreadScrollTo = action.payload.state;
12271
12286
  },
@@ -12801,6 +12816,9 @@ var _messageSlice$actions = messageSlice.actions,
12801
12816
  setScrollToMentionedMessage = _messageSlice$actions.setScrollToMentionedMessage,
12802
12817
  setScrollToNewMessage = _messageSlice$actions.setScrollToNewMessage,
12803
12818
  setShowScrollToNewMessageButton = _messageSlice$actions.setShowScrollToNewMessageButton,
12819
+ setVisibleMessage = _messageSlice$actions.setVisibleMessage,
12820
+ removeVisibleMessage = _messageSlice$actions.removeVisibleMessage,
12821
+ clearVisibleMessagesMap = _messageSlice$actions.clearVisibleMessagesMap,
12804
12822
  setUnreadScrollTo = _messageSlice$actions.setUnreadScrollTo,
12805
12823
  setMessages = _messageSlice$actions.setMessages,
12806
12824
  addMessages = _messageSlice$actions.addMessages,
@@ -22222,8 +22240,8 @@ var getResolvedChannelLastMessage$1 = function getResolvedChannelLastMessage(cha
22222
22240
  return storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe2 = storedChannel.lastMessage) !== null && _storedChannel$lastMe2 !== void 0 && _storedChannel$lastMe2.id ? storedChannel.lastMessage : null;
22223
22241
  };
22224
22242
  function handleChannelMessageEvent(args, SceytChatClient) {
22225
- var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$parentMessag, _message$attachments;
22226
- var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, messages, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _storedChannel$lastMe7, lastMessageIsVisible, messagesHasNext, existingMessage, tabIsActive, channelDataUpdate, groupName, showNotifications, _tabIsActive, _state$ThemeReducer$n, _state$ThemeReducer$n2, _state$ThemeReducer$n3, _state$ThemeReducer$n4, _state$ThemeReducer$n5, _state$ThemeReducer$n6, contactsMap, getFromContacts, state, theme, accentColor, textSecondary, messageBody;
22243
+ var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$attachments;
22244
+ var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, messages, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _store$getState$Messa2, _storedChannel$lastMe7, visibleMessagesMap, lastMessageIsVisible, messagesHasNext, existingMessage, tabIsActive, channelDataUpdate, groupName, showNotifications, _tabIsActive, _state$ThemeReducer$n, _state$ThemeReducer$n2, _state$ThemeReducer$n3, _state$ThemeReducer$n4, _state$ThemeReducer$n5, _state$ThemeReducer$n6, contactsMap, getFromContacts, state, theme, accentColor, textSecondary, messageBody;
22227
22245
  return _regenerator().w(function (_context) {
22228
22246
  while (1) switch (_context.n) {
22229
22247
  case 0:
@@ -22278,7 +22296,8 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22278
22296
  _context.n = 10;
22279
22297
  break;
22280
22298
  }
22281
- lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
22299
+ visibleMessagesMap = ((_store$getState$Messa2 = store.getState().MessageReducer) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2.visibleMessagesMap) || {};
22300
+ lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(visibleMessagesMap).some(function (visibleMessage) {
22282
22301
  var _storedChannel$lastMe8;
22283
22302
  return visibleMessage.id === ((_storedChannel$lastMe8 = storedChannel.lastMessage) === null || _storedChannel$lastMe8 === void 0 ? void 0 : _storedChannel$lastMe8.id);
22284
22303
  }) : false;
@@ -22387,19 +22406,13 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22387
22406
  return att.type !== attachmentTypes.link;
22388
22407
  }) : undefined);
22389
22408
  case 15:
22390
- if (!(message.repliedInThread && (_message$parentMessag = message.parentMessage) !== null && _message$parentMessag !== void 0 && _message$parentMessag.id)) {
22391
- _context.n = 17;
22409
+ if (!(message.user.id !== SceytChatClient.user.id)) {
22410
+ _context.n = 16;
22392
22411
  break;
22393
22412
  }
22394
22413
  _context.n = 16;
22395
- return put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
22396
- case 16:
22397
- _context.n = 18;
22398
- break;
22399
- case 17:
22400
- _context.n = 18;
22401
22414
  return put(markMessagesAsDeliveredAC(channel.id, [message.id]));
22402
- case 18:
22415
+ case 16:
22403
22416
  updateChannelOnAllChannels(channel.id, channelDataUpdate);
22404
22417
  if (shouldUpdateLastMessage) {
22405
22418
  updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessageUpdate);
@@ -22407,7 +22420,7 @@ function handleChannelMessageEvent(args, SceytChatClient) {
22407
22420
  if ((_message$attachments = message.attachments) !== null && _message$attachments !== void 0 && _message$attachments.length) {
22408
22421
  updateTabAttachmentCache(channel.id, message.attachments, message.user);
22409
22422
  }
22410
- case 19:
22423
+ case 17:
22411
22424
  return _context.a(2);
22412
22425
  }
22413
22426
  }, _marked$2);
@@ -23019,7 +23032,7 @@ function watchForEvents() {
23019
23032
  };
23020
23033
  });
23021
23034
  _loop = /*#__PURE__*/_regenerator().m(function _callee3() {
23022
- var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, users, blockedUsers, allChannels, _loop2, _iterator2, _step2, _users, unblockedUsers, _allChannels, _loop3, _iterator3, _step3, _channel2, removedMembers, _activeChannelId, _channelExists2, activeChannel, _updateChannelData2, _groupName, _channel3, addedMembers, _activeChannelId2, _channelExists3, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists4, subject, avatarUrl, muted, mutedTill, metadata, _channel4, fields, parsedChannelMeta, parsedMeta, _activeChannelId3, _groupName3, channelId, _channel5, _channel6, user, message, reaction, isSelf, _activeChannelId4, _state$ThemeReducer$n7, _state$ThemeReducer$n8, _state$ThemeReducer$n9, _state$ThemeReducer$n0, _state$ThemeReducer$n1, _state$ThemeReducer$n10, contactsMap, _getFromContacts, state, theme, accentColor, textSecondary, messageBody, channelUpdateParams, _pollDetailsData$chan, _pollDetailsData$chan2, _channel7, pollDetails, messageId, pollDetailsData, _activeChannelId5, addedVotes, deletedVotes, objs, _iterator4, _step4, vote, _iterator5, _step5, _vote, _i, _objs, obj, _store$getState$Messa2, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel8, _pollDetails, _messageId, _pollDetailsData, _activeChannelId6, _deletedVotes, _objs3, _iterator6, _step6, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel9, _pollDetails2, _messageId2, _activeChannelId7, _pollDetailsData2, retractedVotes, _objs6, _iterator7, _step7, _vote4, _i5, _objs7, _obj4, _iterator8, _step8, _vote3, _channel0, _messageId3, _activeChannelId8, _obj5, _channel1, _user, _message, _reaction, channelFromMap, _isSelf, _activeChannelId9, _channelUpdateParams, _channel10, _activeChannelId0, channelExist, _channel11, _channel12, _channel13, _channel14, _channel15, _activeChannelId1, lastChannel, _channel16, _channel17, _groupName4, _channel18, _groupName5, _channel19, members, _activeChannelId10, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel20, _channel21, _channelId, from, name, status, _t, _t2, _t3, _t4;
23035
+ var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, users, blockedUsers, allChannels, _loop2, _iterator2, _step2, _users, unblockedUsers, _allChannels, _loop3, _iterator3, _step3, _channel2, removedMembers, _activeChannelId, _channelExists2, activeChannel, _updateChannelData2, _groupName, _channel3, addedMembers, _activeChannelId2, _channelExists3, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists4, subject, avatarUrl, muted, mutedTill, metadata, _channel4, fields, parsedChannelMeta, parsedMeta, _activeChannelId3, _groupName3, channelId, _channel5, _channel6, user, message, reaction, isSelf, _activeChannelId4, _state$ThemeReducer$n7, _state$ThemeReducer$n8, _state$ThemeReducer$n9, _state$ThemeReducer$n0, _state$ThemeReducer$n1, _state$ThemeReducer$n10, contactsMap, _getFromContacts, state, theme, accentColor, textSecondary, messageBody, channelUpdateParams, _pollDetailsData$chan, _pollDetailsData$chan2, _channel7, pollDetails, messageId, pollDetailsData, _activeChannelId5, addedVotes, deletedVotes, objs, _iterator4, _step4, vote, _iterator5, _step5, _vote, _i, _objs, obj, _store$getState$Messa3, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel8, _pollDetails, _messageId, _pollDetailsData, _activeChannelId6, _deletedVotes, _objs3, _iterator6, _step6, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel9, _pollDetails2, _messageId2, _activeChannelId7, _pollDetailsData2, retractedVotes, _objs6, _iterator7, _step7, _vote4, _i5, _objs7, _obj4, _iterator8, _step8, _vote3, _channel0, _messageId3, _activeChannelId8, _obj5, _channel1, _user, _message, _reaction, channelFromMap, _isSelf, _activeChannelId9, _channelUpdateParams, _channel10, _activeChannelId0, channelExist, _channel11, _channel12, _channel13, _channel14, _channel15, _activeChannelId1, lastChannel, _channel16, _channel17, _groupName4, _channel18, _groupName5, _channel19, members, _activeChannelId10, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel20, _channel21, _channelId, from, name, status, _t, _t2, _t3, _t4;
23023
23036
  return _regenerator().w(function (_context8) {
23024
23037
  while (1) switch (_context8.p = _context8.n) {
23025
23038
  case 0:
@@ -23668,7 +23681,7 @@ function watchForEvents() {
23668
23681
  break;
23669
23682
  }
23670
23683
  key = pollDetailsData.id + "_" + obj.vote.optionId;
23671
- hasNext = ((_store$getState$Messa2 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2[key]) || false;
23684
+ hasNext = ((_store$getState$Messa3 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa3 === void 0 ? void 0 : _store$getState$Messa3[key]) || false;
23672
23685
  if (!(obj.type === 'addOwn')) {
23673
23686
  _context8.n = 90;
23674
23687
  break;
@@ -24563,22 +24576,27 @@ function getChannels(action) {
24563
24576
  mappedChannels = _yield$call.channels;
24564
24577
  channelsForUpdateLastReactionMessage = _yield$call.channelsForUpdateLastReactionMessage;
24565
24578
  _loop = /*#__PURE__*/_regenerator().m(function _callee() {
24566
- var channelId, pendingLastMessage, mappedChannel, mapEntry;
24579
+ var _store$getState$Chann;
24580
+ var channelId, pendingLastMessage, currentReduxLastMessage, resolvedLastMessage, mappedChannel, mapEntry;
24567
24581
  return _regenerator().w(function (_context2) {
24568
24582
  while (1) switch (_context2.n) {
24569
24583
  case 0:
24570
24584
  channelId = _Object$keys[_i];
24571
24585
  pendingLastMessage = pendingLastMessages[channelId];
24586
+ currentReduxLastMessage = (_store$getState$Chann = store.getState().ChannelReducer.channels.find(function (ch) {
24587
+ return ch.id === channelId;
24588
+ })) === null || _store$getState$Chann === void 0 ? void 0 : _store$getState$Chann.lastMessage;
24589
+ resolvedLastMessage = currentReduxLastMessage !== null && currentReduxLastMessage !== void 0 && currentReduxLastMessage.id && !pendingLastMessage.id ? currentReduxLastMessage : pendingLastMessage;
24572
24590
  mappedChannel = mappedChannels.find(function (ch) {
24573
24591
  return ch.id === channelId;
24574
24592
  });
24575
24593
  if (mappedChannel) {
24576
- mappedChannel.lastMessage = pendingLastMessage;
24594
+ mappedChannel.lastMessage = resolvedLastMessage;
24577
24595
  }
24578
24596
  mapEntry = getChannelFromMap(channelId);
24579
24597
  if (mapEntry) {
24580
24598
  setChannelInMap(_extends({}, mapEntry, {
24581
- lastMessage: pendingLastMessage
24599
+ lastMessage: resolvedLastMessage
24582
24600
  }));
24583
24601
  }
24584
24602
  case 1:
@@ -28671,6 +28689,9 @@ var scrollToMentionedMessageSelector = function scrollToMentionedMessageSelector
28671
28689
  var showScrollToNewMessageButtonSelector = function showScrollToNewMessageButtonSelector(store) {
28672
28690
  return store.MessageReducer.showScrollToNewMessageButton;
28673
28691
  };
28692
+ var visibleMessagesMapSelector = function visibleMessagesMapSelector(store) {
28693
+ return store.MessageReducer.visibleMessagesMap;
28694
+ };
28674
28695
  var sendMessageInputHeightSelector = function sendMessageInputHeightSelector(store) {
28675
28696
  return store.MessageReducer.sendMessageInputHeight;
28676
28697
  };
@@ -35894,24 +35915,24 @@ var Message = function Message(_ref) {
35894
35915
  setLastVisibleMessageId(message);
35895
35916
  }
35896
35917
  if (!channel.isLinkedChannel) {
35897
- setMessageToVisibleMessagesMap(message);
35918
+ dispatch(setVisibleMessageAC(message));
35898
35919
  }
35899
35920
  if (scrollToNewMessage.scrollToBottom && channel.lastMessage && compareMessagesForList(message, channel.lastMessage) >= 0) {
35900
35921
  dispatch(scrollToNewMessageAC(false, false, false));
35901
35922
  }
35902
35923
  } else {
35903
35924
  if (!channel.isLinkedChannel) {
35904
- removeMessageFromVisibleMessagesMap(message);
35925
+ dispatch(removeVisibleMessageAC(message));
35905
35926
  }
35906
35927
  }
35907
35928
  }, [channel.isLinkedChannel, channel.lastMessage, dispatch, isVisible, message, scrollToNewMessage.scrollToBottom, unreadScrollTo, setLastVisibleMessageId]);
35908
35929
  useEffect(function () {
35909
35930
  return function () {
35910
35931
  if (!channel.isLinkedChannel) {
35911
- removeMessageFromVisibleMessagesMap(message);
35932
+ dispatch(removeVisibleMessageAC(message));
35912
35933
  }
35913
35934
  };
35914
- }, [channel.isLinkedChannel, message]);
35935
+ }, [channel.isLinkedChannel, dispatch, message]);
35915
35936
  return /*#__PURE__*/React__default.createElement(Container$c, {
35916
35937
  id: message.id || message.tid,
35917
35938
  ref: messageItemRef,
@@ -43278,24 +43299,24 @@ var Message$1 = function Message(_ref) {
43278
43299
  }
43279
43300
  handleSendReadMarker();
43280
43301
  if (!channel.isLinkedChannel) {
43281
- setMessageToVisibleMessagesMap(message);
43302
+ dispatch(setVisibleMessageAC(message));
43282
43303
  }
43283
43304
  if (scrollToNewMessage.scrollToBottom && channel.lastMessage && compareMessagesForList(message, channel.lastMessage) >= 0) {
43284
43305
  dispatch(scrollToNewMessageAC(false, false, false));
43285
43306
  }
43286
43307
  } else {
43287
43308
  if (!channel.isLinkedChannel) {
43288
- removeMessageFromVisibleMessagesMap(message);
43309
+ dispatch(removeVisibleMessageAC(message));
43289
43310
  }
43290
43311
  }
43291
43312
  }, [isVisible, setLastVisibleMessageId, message.id, handleSendReadMarker, channel.isLinkedChannel, channel.lastMessage, scrollToNewMessage.scrollToBottom, dispatch, message, isTabActive]);
43292
43313
  useEffect(function () {
43293
43314
  return function () {
43294
43315
  if (!channel.isLinkedChannel) {
43295
- removeMessageFromVisibleMessagesMap(message);
43316
+ dispatch(removeVisibleMessageAC(message));
43296
43317
  }
43297
43318
  };
43298
- }, [channel.isLinkedChannel, message]);
43319
+ }, [channel.isLinkedChannel, dispatch, message]);
43299
43320
  useEffect(function () {
43300
43321
  if (!isVisible && infoPopupOpen) {
43301
43322
  setInfoPopupOpen(false);
@@ -43982,6 +44003,7 @@ function useChatController(_ref5) {
43982
44003
  showScrollToNewMessageButton = _ref5.showScrollToNewMessageButton,
43983
44004
  unreadScrollTo = _ref5.unreadScrollTo,
43984
44005
  unreadMessageId = _ref5.unreadMessageId,
44006
+ visibleMessagesMap = _ref5.visibleMessagesMap,
43985
44007
  selectedMessagesMap = _ref5.selectedMessagesMap,
43986
44008
  allowEditDeleteIncomingMessage = _ref5.allowEditDeleteIncomingMessage,
43987
44009
  _ref5$tabIsActive = _ref5.tabIsActive,
@@ -43991,6 +44013,7 @@ function useChatController(_ref5) {
43991
44013
  var itemElementsRef = useRef(new Map());
43992
44014
  var messagesIndexMapRef = useRef({});
43993
44015
  var messagesRef = useRef(messages);
44016
+ var visibleMessagesMapRef = useRef(visibleMessagesMap);
43994
44017
  var channelRef = useRef(channel);
43995
44018
  var lastVisibleMessageIdRef = useRef('');
43996
44019
  var lastVisibleAnchorIdRef = useRef('');
@@ -44124,6 +44147,7 @@ function useChatController(_ref5) {
44124
44147
  }, []);
44125
44148
  useLayoutEffect(function () {
44126
44149
  messagesRef.current = messages;
44150
+ visibleMessagesMapRef.current = visibleMessagesMap;
44127
44151
  channelRef.current = channel;
44128
44152
  connectionStatusRef.current = connectionStatus;
44129
44153
  });
@@ -45593,7 +45617,7 @@ function useChatController(_ref5) {
45593
45617
  var savedRestoreWindow = channelRestoreWindowMap.get(channel.id);
45594
45618
  if (savedRestoreWindow) {
45595
45619
  if (!channel.isLinkedChannel) {
45596
- clearVisibleMessagesMap();
45620
+ dispatch(clearVisibleMessagesMapAC());
45597
45621
  }
45598
45622
  if (channel.backToLinkedChannel) {
45599
45623
  restoreRef.current = {
@@ -45614,7 +45638,7 @@ function useChatController(_ref5) {
45614
45638
  }
45615
45639
  }
45616
45640
  if (channel.backToLinkedChannel) {
45617
- var visibleMessages = getVisibleMessagesMap();
45641
+ var visibleMessages = visibleMessagesMapRef.current;
45618
45642
  var visibleMessagesIds = Object.values(visibleMessages).filter(function (message) {
45619
45643
  return !!message.id;
45620
45644
  }).sort(function (left, right) {
@@ -45630,7 +45654,7 @@ function useChatController(_ref5) {
45630
45654
  return;
45631
45655
  }
45632
45656
  if (!channel.isLinkedChannel) {
45633
- clearVisibleMessagesMap();
45657
+ dispatch(clearVisibleMessagesMapAC());
45634
45658
  }
45635
45659
  if (channel.newMessageCount && channel.lastDisplayedMessageId) {
45636
45660
  suppressNextMessageChange();
@@ -45674,7 +45698,7 @@ function useChatController(_ref5) {
45674
45698
  invalidateEdgeDirection('previous');
45675
45699
  invalidateEdgeDirection('next');
45676
45700
  suppressNextMessageChange();
45677
- var isHistoryTopVisible = messagesRef.current[0] ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
45701
+ var isHistoryTopVisible = messagesRef.current[0] ? Object.values(visibleMessagesMapRef.current).some(function (visibleMessage) {
45678
45702
  var _messagesRef$current$;
45679
45703
  return visibleMessage.id === ((_messagesRef$current$ = messagesRef.current[0]) === null || _messagesRef$current$ === void 0 ? void 0 : _messagesRef$current$.id);
45680
45704
  }) : false;
@@ -45704,7 +45728,7 @@ function useChatController(_ref5) {
45704
45728
  }, [dispatch, isViewingLatest, jumpToLatest, scrollToNewMessage]);
45705
45729
  useEffect(function () {
45706
45730
  var latestLocalRef = getMessageLocalRef(channel.lastMessage);
45707
- var latestVisibleMessages = Object.values(getVisibleMessagesMap());
45731
+ var latestVisibleMessages = Object.values(visibleMessagesMap);
45708
45732
  var isLatestInView = latestVisibleMessages.find(function (m) {
45709
45733
  return m.sortKey === latestLocalRef || m.localRef === latestLocalRef;
45710
45734
  });
@@ -45712,7 +45736,7 @@ function useChatController(_ref5) {
45712
45736
  if (showScrollToNewMessageButton !== shouldShow) {
45713
45737
  dispatch(showScrollToNewMessageButtonAC(shouldShow));
45714
45738
  }
45715
- }, [channel.lastMessage, dispatch, isViewingLatest, lastVisibleMessageId, pendingNewestCount, scrollToMentionedMessage, showScrollToNewMessageButton]);
45739
+ }, [channel.lastMessage, dispatch, isViewingLatest, lastVisibleMessageId, pendingNewestCount, scrollToMentionedMessage, showScrollToNewMessageButton, visibleMessagesMap]);
45716
45740
  useEffect(function () {
45717
45741
  if (!unreadScrollTo || !messages.length || loadingPrevMessages !== LOADING_STATE.LOADED || loadingNextMessages !== LOADING_STATE.LOADED) {
45718
45742
  return;
@@ -46190,6 +46214,7 @@ var MessageList = function MessageList(_ref) {
46190
46214
  var unreadScrollTo = useSelector(unreadScrollToSelector, shallowEqual);
46191
46215
  var messages = useSelector(activeChannelMessagesSelector, shallowEqual) || [];
46192
46216
  var unreadMessageId = useSelector(unreadMessageIdSelector, shallowEqual);
46217
+ var visibleMessagesMap = useSelector(visibleMessagesMapSelector, shallowEqual);
46193
46218
  var _useState = useState(null),
46194
46219
  mediaFile = _useState[0],
46195
46220
  setMediaFile = _useState[1];
@@ -46227,6 +46252,7 @@ var MessageList = function MessageList(_ref) {
46227
46252
  showScrollToNewMessageButton: showScrollToNewMessageButton,
46228
46253
  unreadScrollTo: unreadScrollTo,
46229
46254
  unreadMessageId: unreadMessageId,
46255
+ visibleMessagesMap: visibleMessagesMap,
46230
46256
  selectedMessagesMap: selectedMessagesMap,
46231
46257
  allowEditDeleteIncomingMessage: allowEditDeleteIncomingMessage,
46232
46258
  dispatch: dispatch,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceyt-chat-react-uikit",
3
- "version": "1.8.7-beta.17",
3
+ "version": "1.8.7-beta.19",
4
4
  "description": "Interactive React UI Components for Sceyt Chat.",
5
5
  "author": "Sceyt",
6
6
  "license": "MIT",