sceyt-chat-react-uikit 1.8.5-beta.7 → 1.8.5-beta.8

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.
Files changed (3) hide show
  1. package/index.js +102 -51
  2. package/index.modern.js +102 -51
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -11974,10 +11974,37 @@ function addMessageToMap(channelId, message) {
11974
11974
  if (!messagesMap[channelId]) {
11975
11975
  messagesMap[channelId] = {};
11976
11976
  }
11977
- if (message.tid && messagesMap[channelId][message.tid]) {
11978
- delete messagesMap[channelId][message.tid];
11977
+ var channelMessages = messagesMap[channelId];
11978
+ var existingById = message.id ? channelMessages[message.id] : undefined;
11979
+ var existingByTid = message.tid ? channelMessages[message.tid] : undefined;
11980
+ var existing = existingById || existingByTid || Object.values(channelMessages).find(function (m) {
11981
+ return message.id && m.id === message.id || message.tid && m.tid === message.tid;
11982
+ });
11983
+ if (existing) {
11984
+ var merged = _extends({}, existing, {
11985
+ id: message.id,
11986
+ deliveryStatus: message.deliveryStatus,
11987
+ state: MESSAGE_STATUS.UNMODIFIED
11988
+ });
11989
+ if (existing.tid && channelMessages[existing.tid] && existing.tid !== (existing.id || existing.tid)) {
11990
+ delete channelMessages[existing.tid];
11991
+ }
11992
+ channelMessages[existing.id || existing.tid] = merged;
11993
+ return;
11994
+ }
11995
+ channelMessages[message.id || message.tid] = message;
11996
+ }
11997
+ function checkIsItSentAlready(messageId, channelId) {
11998
+ if (messagesMap[channelId]) {
11999
+ var messages = Object.values(messagesMap[channelId] || {});
12000
+ var message = messages.find(function (m) {
12001
+ return m.tid === messageId || m.id === messageId;
12002
+ });
12003
+ if ((message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.SENT || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.DELIVERED || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.READ || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.PLAYED || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.OPENED) {
12004
+ return true;
12005
+ }
11979
12006
  }
11980
- messagesMap[channelId][message.id || message.tid] = message;
12007
+ return false;
11981
12008
  }
11982
12009
  function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
11983
12010
  var updatedMessageData = null;
@@ -15740,8 +15767,8 @@ var getResolvedChannelLastMessage = function getResolvedChannelLastMessage(chann
15740
15767
  return storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe2 = storedChannel.lastMessage) !== null && _storedChannel$lastMe2 !== void 0 && _storedChannel$lastMe2.id ? storedChannel.lastMessage : null;
15741
15768
  };
15742
15769
  function handleChannelMessageEvent(args, SceytChatClient) {
15743
- var _storedChannel$lastMe7, _message$parentMessag;
15744
- var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, _storedChannel$lastMe3, _storedChannel$lastMe5, lastMessageIsVisible, messagesHasNext, lastMessageIsInActiveWindow, 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;
15770
+ var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$parentMessag;
15771
+ var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _storedChannel$lastMe7, lastMessageIsVisible, messagesHasNext, existingMessage, 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;
15745
15772
  return _regenerator().w(function (_context) {
15746
15773
  while (1) switch (_context.n) {
15747
15774
  case 0:
@@ -15763,6 +15790,16 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15763
15790
  candidateLastMessage = channelForAdd.lastMessage || message;
15764
15791
  resolvedLastMessage = message.repliedInThread ? (storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage) || null : getResolvedChannelLastMessage(channel.id, candidateLastMessage, message);
15765
15792
  shouldUpdateLastMessage = lastMessageNeedsUpdate(storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage, resolvedLastMessage);
15793
+ lastMessageIsInActiveWindow = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe3 = storedChannel.lastMessage) !== null && _storedChannel$lastMe3 !== void 0 && _storedChannel$lastMe3.id || storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe4 = storedChannel.lastMessage) !== null && _storedChannel$lastMe4 !== void 0 && _storedChannel$lastMe4.tid ? (_store$getState$Messa = store.getState().MessageReducer.activeChannelMessages) === null || _store$getState$Messa === void 0 ? void 0 : _store$getState$Messa.some(function (m) {
15794
+ var _storedChannel$lastMe5, _storedChannel$lastMe6;
15795
+ return m.id === ((_storedChannel$lastMe5 = storedChannel.lastMessage) === null || _storedChannel$lastMe5 === void 0 ? void 0 : _storedChannel$lastMe5.id) || (storedChannel === null || storedChannel === void 0 ? void 0 : (_storedChannel$lastMe6 = storedChannel.lastMessage) === null || _storedChannel$lastMe6 === void 0 ? void 0 : _storedChannel$lastMe6.tid) === m.tid;
15796
+ }) : false;
15797
+ isSameLastMessage = (storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage) && resolvedLastMessage && (resolvedLastMessage.id && storedChannel.lastMessage.id === resolvedLastMessage.id || resolvedLastMessage.tid && storedChannel.lastMessage.tid === resolvedLastMessage.tid);
15798
+ resolvedLastMessageUpdate = isSameLastMessage ? _extends({}, storedChannel.lastMessage, {
15799
+ id: message.id,
15800
+ deliveryStatus: message.deliveryStatus,
15801
+ state: MESSAGE_STATUS.UNMODIFIED
15802
+ }) : resolvedLastMessage;
15766
15803
  _context.n = 2;
15767
15804
  return effects.put(addChannelAC(channelForAdd));
15768
15805
  case 2:
@@ -15779,35 +15816,48 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15779
15816
  break;
15780
15817
  }
15781
15818
  _context.n = 4;
15782
- return effects.put(updateChannelLastMessageAC(resolvedLastMessage, channelForAdd));
15819
+ return effects.put(updateChannelLastMessageAC(resolvedLastMessageUpdate, channelForAdd));
15783
15820
  case 4:
15784
15821
  if (!(channel.id === activeChannelId)) {
15785
- _context.n = 7;
15822
+ _context.n = 9;
15786
15823
  break;
15787
15824
  }
15788
- lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe3 = storedChannel.lastMessage) !== null && _storedChannel$lastMe3 !== void 0 && _storedChannel$lastMe3.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
15789
- var _storedChannel$lastMe4;
15790
- return visibleMessage.id === ((_storedChannel$lastMe4 = storedChannel.lastMessage) === null || _storedChannel$lastMe4 === void 0 ? void 0 : _storedChannel$lastMe4.id);
15825
+ lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
15826
+ var _storedChannel$lastMe8;
15827
+ return visibleMessage.id === ((_storedChannel$lastMe8 = storedChannel.lastMessage) === null || _storedChannel$lastMe8 === void 0 ? void 0 : _storedChannel$lastMe8.id);
15791
15828
  }) : false;
15792
15829
  messagesHasNext = store.getState().MessageReducer.messagesHasNext;
15793
- lastMessageIsInActiveWindow = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe5 = storedChannel.lastMessage) !== null && _storedChannel$lastMe5 !== void 0 && _storedChannel$lastMe5.id ? store.getState().MessageReducer.activeChannelMessages.some(function (m) {
15794
- var _storedChannel$lastMe6;
15795
- return m.id === ((_storedChannel$lastMe6 = storedChannel.lastMessage) === null || _storedChannel$lastMe6 === void 0 ? void 0 : _storedChannel$lastMe6.id);
15796
- }) : false;
15797
15830
  if (!(!messagesHasNext && lastMessageIsInActiveWindow)) {
15798
- _context.n = 7;
15831
+ _context.n = 9;
15832
+ break;
15833
+ }
15834
+ existingMessage = store.getState().MessageReducer.activeChannelMessages.find(function (m) {
15835
+ return message.id && m.id === message.id || message.tid && m.tid === message.tid;
15836
+ });
15837
+ if (!existingMessage) {
15838
+ _context.n = 6;
15799
15839
  break;
15800
15840
  }
15801
15841
  _context.n = 5;
15802
- return effects.put(addMessagesAC([message], 'next'));
15842
+ return effects.put(updateMessageAC(existingMessage.id || existingMessage.tid, _extends({}, existingMessage, {
15843
+ id: message.id,
15844
+ deliveryStatus: message.deliveryStatus,
15845
+ state: MESSAGE_STATUS.UNMODIFIED
15846
+ })));
15803
15847
  case 5:
15804
- _context.n = 6;
15805
- return effects.put(loadOGMetadataForLinkAC([message], true));
15848
+ _context.n = 7;
15849
+ break;
15806
15850
  case 6:
15851
+ _context.n = 7;
15852
+ return effects.put(addMessagesAC([message], 'next'));
15853
+ case 7:
15854
+ _context.n = 8;
15855
+ return effects.put(loadOGMetadataForLinkAC([message], true));
15856
+ case 8:
15807
15857
  if (lastMessageIsVisible) {
15808
15858
  navigateToLatest(true);
15809
15859
  }
15810
- case 7:
15860
+ case 9:
15811
15861
  addMessageToMap(channel.id, message);
15812
15862
  channelDataUpdate = _extends({
15813
15863
  messageCount: channelForAdd.messageCount,
@@ -15822,39 +15872,39 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15822
15872
  newReactions: channelForAdd.newReactions,
15823
15873
  userMessageReactions: [],
15824
15874
  lastReactedMessage: null
15825
- }, shouldUpdateLastMessage && resolvedLastMessage ? {
15826
- lastMessage: resolvedLastMessage
15875
+ }, shouldUpdateLastMessage && resolvedLastMessageUpdate ? {
15876
+ lastMessage: resolvedLastMessageUpdate
15827
15877
  } : {});
15828
- if (storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id) {
15878
+ if (storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe9 = storedChannel.lastMessage) !== null && _storedChannel$lastMe9 !== void 0 && _storedChannel$lastMe9.id) {
15829
15879
  appendMessageToLatestSegment(channel.id, message.id, storedChannel.lastMessage.id);
15830
15880
  }
15831
- _context.n = 8;
15881
+ _context.n = 10;
15832
15882
  return effects.put(updateChannelDataAC(channel.id, channelDataUpdate));
15833
- case 8:
15883
+ case 10:
15834
15884
  groupName = getChannelGroupName(channel);
15835
- _context.n = 9;
15885
+ _context.n = 11;
15836
15886
  return effects.put(updateSearchedChannelDataAC(channel.id, channelDataUpdate, groupName));
15837
- case 9:
15887
+ case 11:
15838
15888
  showNotifications = getShowNotifications();
15839
15889
  if (!(showNotifications && !message.silent && message.user.id !== SceytChatClient.user.id && !channel.muted)) {
15840
- _context.n = 12;
15890
+ _context.n = 14;
15841
15891
  break;
15842
15892
  }
15843
15893
  if (!(Notification.permission === 'granted')) {
15844
- _context.n = 12;
15894
+ _context.n = 14;
15845
15895
  break;
15846
15896
  }
15847
- _context.n = 10;
15897
+ _context.n = 12;
15848
15898
  return effects.select(browserTabIsActiveSelector);
15849
- case 10:
15899
+ case 12:
15850
15900
  tabIsActive = _context.v;
15851
15901
  if (!(document.visibilityState !== 'visible' || !tabIsActive || channel.id !== activeChannelId)) {
15852
- _context.n = 12;
15902
+ _context.n = 14;
15853
15903
  break;
15854
15904
  }
15855
- _context.n = 11;
15905
+ _context.n = 13;
15856
15906
  return effects.select(contactsMapSelector);
15857
- case 11:
15907
+ case 13:
15858
15908
  contactsMap = _context.v;
15859
15909
  getFromContacts = getShowOnlyContactUsers();
15860
15910
  state = store.getState();
@@ -15874,25 +15924,25 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15874
15924
  setNotification((message === null || message === void 0 ? void 0 : message.type) === exports.MESSAGE_TYPE.VIEW_ONCE ? "Self-destructing" : messageBody, message.user, channel, undefined, message.attachments && message.attachments.length ? message.attachments.find(function (att) {
15875
15925
  return att.type !== attachmentTypes.link;
15876
15926
  }) : undefined);
15877
- case 12:
15927
+ case 14:
15878
15928
  if (!(message.repliedInThread && (_message$parentMessag = message.parentMessage) !== null && _message$parentMessag !== void 0 && _message$parentMessag.id)) {
15879
- _context.n = 14;
15929
+ _context.n = 16;
15880
15930
  break;
15881
15931
  }
15882
- _context.n = 13;
15883
- return effects.put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
15884
- case 13:
15885
15932
  _context.n = 15;
15933
+ return effects.put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
15934
+ case 15:
15935
+ _context.n = 17;
15886
15936
  break;
15887
- case 14:
15888
- _context.n = 15;
15937
+ case 16:
15938
+ _context.n = 17;
15889
15939
  return effects.put(markMessagesAsDeliveredAC(channel.id, [message.id]));
15890
- case 15:
15940
+ case 17:
15891
15941
  updateChannelOnAllChannels(channel.id, channelDataUpdate);
15892
15942
  if (shouldUpdateLastMessage) {
15893
- updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessage);
15943
+ updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessageUpdate);
15894
15944
  }
15895
- case 16:
15945
+ case 18:
15896
15946
  return _context.a(2);
15897
15947
  }
15898
15948
  }, _marked$1);
@@ -16339,7 +16389,7 @@ function watchForEvents() {
16339
16389
  };
16340
16390
  });
16341
16391
  _loop = /*#__PURE__*/_regenerator().m(function _callee() {
16342
- var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, _channel2, _channelExists2, _channel3, removedMembers, _activeChannelId, _channelExists3, activeChannel, _updateChannelData2, _groupName, _channel4, addedMembers, _activeChannelId2, _channelExists4, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists5, subject, avatarUrl, muted, mutedTill, metadata, _channel5, fields, _activeChannelId3, _groupName3, channelId, markerList, _channel6, _markerList$user, isOwnMarker, _activeChannelId4, updateLastMessage, markersMap, _iterator, _step, messageId, lastMessage, _channelId, _channel7, _channel8, deletedMessage, _activeChannelId5, _channelExists6, _channel9, message, _activeChannelId6, _channelExists7, _channel0, user, _message, reaction, isSelf, _activeChannelId7, _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, _channel1, pollDetails, _messageId, pollDetailsData, _activeChannelId8, addedVotes, deletedVotes, objs, _iterator2, _step2, vote, _iterator3, _step3, _vote, _i, _objs, obj, _store$getState$Messa, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel10, _pollDetails, _messageId2, _pollDetailsData, _activeChannelId9, _deletedVotes, _objs3, _iterator4, _step4, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel11, _pollDetails2, _messageId3, _activeChannelId0, _pollDetailsData2, retractedVotes, _objs6, _iterator5, _step5, _vote4, _i5, _objs7, _obj4, _iterator6, _step6, _vote3, _channel12, _messageId4, _activeChannelId1, _obj5, _channel13, _user, _message2, _reaction, channelFromMap, _isSelf, _activeChannelId10, _channelUpdateParams, _channel14, _activeChannelId11, channelExist, _channel15, _channel16, _channel17, _channel18, _channel19, _channel20, _channel21, _groupName4, _channel22, _groupName5, _channel23, members, _activeChannelId12, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel24, _channel25, _channelId2, from, name, status, _t, _t2, _t3, _t4;
16392
+ var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, _channel2, _channelExists2, _channel3, removedMembers, _activeChannelId, _channelExists3, activeChannel, _updateChannelData2, _groupName, _channel4, addedMembers, _activeChannelId2, _channelExists4, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists5, subject, avatarUrl, muted, mutedTill, metadata, _channel5, fields, _activeChannelId3, _groupName3, channelId, markerList, _channel6, _markerList$user, isOwnMarker, _activeChannelId4, updateLastMessage, markersMap, _iterator, _step, messageId, lastMessage, _channelId, _channel7, _channel8, deletedMessage, _activeChannelId5, _channelExists6, _channel9, message, _activeChannelId6, _channelExists7, _channel0, user, _message, reaction, isSelf, _activeChannelId7, _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, _channel1, pollDetails, _messageId, pollDetailsData, _activeChannelId8, addedVotes, deletedVotes, objs, _iterator2, _step2, vote, _iterator3, _step3, _vote, _i, _objs, obj, _store$getState$Messa2, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel10, _pollDetails, _messageId2, _pollDetailsData, _activeChannelId9, _deletedVotes, _objs3, _iterator4, _step4, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel11, _pollDetails2, _messageId3, _activeChannelId0, _pollDetailsData2, retractedVotes, _objs6, _iterator5, _step5, _vote4, _i5, _objs7, _obj4, _iterator6, _step6, _vote3, _channel12, _messageId4, _activeChannelId1, _obj5, _channel13, _user, _message2, _reaction, channelFromMap, _isSelf, _activeChannelId10, _channelUpdateParams, _channel14, _activeChannelId11, channelExist, _channel15, _channel16, _channel17, _channel18, _channel19, _channel20, _channel21, _groupName4, _channel22, _groupName5, _channel23, members, _activeChannelId12, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel24, _channel25, _channelId2, from, name, status, _t, _t2, _t3, _t4;
16343
16393
  return _regenerator().w(function (_context3) {
16344
16394
  while (1) switch (_context3.p = _context3.n) {
16345
16395
  case 0:
@@ -17026,7 +17076,7 @@ function watchForEvents() {
17026
17076
  break;
17027
17077
  }
17028
17078
  key = pollDetailsData.id + "_" + obj.vote.optionId;
17029
- hasNext = ((_store$getState$Messa = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa === void 0 ? void 0 : _store$getState$Messa[key]) || false;
17079
+ hasNext = ((_store$getState$Messa2 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2[key]) || false;
17030
17080
  if (!(obj.type === 'addOwn')) {
17031
17081
  _context3.n = 95;
17032
17082
  break;
@@ -21884,32 +21934,33 @@ var updateMessage$1 = function updateMessage(actionType, pending, channelId, scr
21884
21934
  };
21885
21935
  var syncFailedMessageState = /*#__PURE__*/_regenerator().m(function _callee2(channel, messageId, message, shouldKeepInMap) {
21886
21936
  var _getStoredChannel5;
21887
- var activeChannelId, failedMessage, resolvedLastMessage, channelUpdateParam;
21937
+ var shouldSkipUpdate, activeChannelId, failedMessage, resolvedLastMessage, channelUpdateParam;
21888
21938
  return _regenerator().w(function (_context9) {
21889
21939
  while (1) switch (_context9.n) {
21890
21940
  case 0:
21941
+ shouldSkipUpdate = checkIsItSentAlready(messageId, channel.id);
21891
21942
  if (shouldKeepInMap) {
21892
21943
  updateMessageOnMap(channel.id, {
21893
21944
  messageId: messageId,
21894
21945
  params: {
21895
- state: MESSAGE_STATUS.FAILED
21946
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21896
21947
  }
21897
21948
  });
21898
- } else {
21949
+ } else if (!shouldSkipUpdate) {
21899
21950
  removeMessageFromMap(channel.id, messageId);
21900
21951
  }
21901
21952
  activeChannelId = getActiveChannelId();
21902
- if (!(activeChannelId === channel.id)) {
21953
+ if (!(activeChannelId === channel.id && !shouldSkipUpdate)) {
21903
21954
  _context9.n = 1;
21904
21955
  break;
21905
21956
  }
21906
21957
  _context9.n = 1;
21907
21958
  return effects.put(updateMessageAC(messageId, {
21908
- state: MESSAGE_STATUS.FAILED
21959
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21909
21960
  }));
21910
21961
  case 1:
21911
21962
  failedMessage = _extends({}, message, {
21912
- state: MESSAGE_STATUS.FAILED
21963
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21913
21964
  });
21914
21965
  resolvedLastMessage = getResolvedChannelLastMessage$1(channel.id, failedMessage, message);
21915
21966
  if (!lastMessageNeedsUpdate$1((_getStoredChannel5 = getStoredChannel$1(channel.id)) === null || _getStoredChannel5 === void 0 ? void 0 : _getStoredChannel5.lastMessage, resolvedLastMessage)) {
package/index.modern.js CHANGED
@@ -11973,10 +11973,37 @@ function addMessageToMap(channelId, message) {
11973
11973
  if (!messagesMap[channelId]) {
11974
11974
  messagesMap[channelId] = {};
11975
11975
  }
11976
- if (message.tid && messagesMap[channelId][message.tid]) {
11977
- delete messagesMap[channelId][message.tid];
11976
+ var channelMessages = messagesMap[channelId];
11977
+ var existingById = message.id ? channelMessages[message.id] : undefined;
11978
+ var existingByTid = message.tid ? channelMessages[message.tid] : undefined;
11979
+ var existing = existingById || existingByTid || Object.values(channelMessages).find(function (m) {
11980
+ return message.id && m.id === message.id || message.tid && m.tid === message.tid;
11981
+ });
11982
+ if (existing) {
11983
+ var merged = _extends({}, existing, {
11984
+ id: message.id,
11985
+ deliveryStatus: message.deliveryStatus,
11986
+ state: MESSAGE_STATUS.UNMODIFIED
11987
+ });
11988
+ if (existing.tid && channelMessages[existing.tid] && existing.tid !== (existing.id || existing.tid)) {
11989
+ delete channelMessages[existing.tid];
11990
+ }
11991
+ channelMessages[existing.id || existing.tid] = merged;
11992
+ return;
11993
+ }
11994
+ channelMessages[message.id || message.tid] = message;
11995
+ }
11996
+ function checkIsItSentAlready(messageId, channelId) {
11997
+ if (messagesMap[channelId]) {
11998
+ var messages = Object.values(messagesMap[channelId] || {});
11999
+ var message = messages.find(function (m) {
12000
+ return m.tid === messageId || m.id === messageId;
12001
+ });
12002
+ if ((message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.SENT || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.DELIVERED || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.READ || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.PLAYED || (message === null || message === void 0 ? void 0 : message.deliveryStatus) === MESSAGE_DELIVERY_STATUS.OPENED) {
12003
+ return true;
12004
+ }
11978
12005
  }
11979
- messagesMap[channelId][message.id || message.tid] = message;
12006
+ return false;
11980
12007
  }
11981
12008
  function updateMessageOnMap(channelId, updatedMessage, voteDetails) {
11982
12009
  var updatedMessageData = null;
@@ -15739,8 +15766,8 @@ var getResolvedChannelLastMessage = function getResolvedChannelLastMessage(chann
15739
15766
  return storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe2 = storedChannel.lastMessage) !== null && _storedChannel$lastMe2 !== void 0 && _storedChannel$lastMe2.id ? storedChannel.lastMessage : null;
15740
15767
  };
15741
15768
  function handleChannelMessageEvent(args, SceytChatClient) {
15742
- var _storedChannel$lastMe7, _message$parentMessag;
15743
- var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, _storedChannel$lastMe3, _storedChannel$lastMe5, lastMessageIsVisible, messagesHasNext, lastMessageIsInActiveWindow, 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;
15769
+ var _storedChannel$lastMe3, _storedChannel$lastMe4, _store$getState$Messa, _storedChannel$lastMe9, _message$parentMessag;
15770
+ var channel, message, messageToHandle, channelFilterTypes, activeChannelId, channelExists, channelForAdd, storedChannel, candidateLastMessage, resolvedLastMessage, shouldUpdateLastMessage, lastMessageIsInActiveWindow, isSameLastMessage, resolvedLastMessageUpdate, _storedChannel$lastMe7, lastMessageIsVisible, messagesHasNext, existingMessage, 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;
15744
15771
  return _regenerator().w(function (_context) {
15745
15772
  while (1) switch (_context.n) {
15746
15773
  case 0:
@@ -15762,6 +15789,16 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15762
15789
  candidateLastMessage = channelForAdd.lastMessage || message;
15763
15790
  resolvedLastMessage = message.repliedInThread ? (storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage) || null : getResolvedChannelLastMessage(channel.id, candidateLastMessage, message);
15764
15791
  shouldUpdateLastMessage = lastMessageNeedsUpdate(storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage, resolvedLastMessage);
15792
+ lastMessageIsInActiveWindow = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe3 = storedChannel.lastMessage) !== null && _storedChannel$lastMe3 !== void 0 && _storedChannel$lastMe3.id || storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe4 = storedChannel.lastMessage) !== null && _storedChannel$lastMe4 !== void 0 && _storedChannel$lastMe4.tid ? (_store$getState$Messa = store.getState().MessageReducer.activeChannelMessages) === null || _store$getState$Messa === void 0 ? void 0 : _store$getState$Messa.some(function (m) {
15793
+ var _storedChannel$lastMe5, _storedChannel$lastMe6;
15794
+ return m.id === ((_storedChannel$lastMe5 = storedChannel.lastMessage) === null || _storedChannel$lastMe5 === void 0 ? void 0 : _storedChannel$lastMe5.id) || (storedChannel === null || storedChannel === void 0 ? void 0 : (_storedChannel$lastMe6 = storedChannel.lastMessage) === null || _storedChannel$lastMe6 === void 0 ? void 0 : _storedChannel$lastMe6.tid) === m.tid;
15795
+ }) : false;
15796
+ isSameLastMessage = (storedChannel === null || storedChannel === void 0 ? void 0 : storedChannel.lastMessage) && resolvedLastMessage && (resolvedLastMessage.id && storedChannel.lastMessage.id === resolvedLastMessage.id || resolvedLastMessage.tid && storedChannel.lastMessage.tid === resolvedLastMessage.tid);
15797
+ resolvedLastMessageUpdate = isSameLastMessage ? _extends({}, storedChannel.lastMessage, {
15798
+ id: message.id,
15799
+ deliveryStatus: message.deliveryStatus,
15800
+ state: MESSAGE_STATUS.UNMODIFIED
15801
+ }) : resolvedLastMessage;
15765
15802
  _context.n = 2;
15766
15803
  return put(addChannelAC(channelForAdd));
15767
15804
  case 2:
@@ -15778,35 +15815,48 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15778
15815
  break;
15779
15816
  }
15780
15817
  _context.n = 4;
15781
- return put(updateChannelLastMessageAC(resolvedLastMessage, channelForAdd));
15818
+ return put(updateChannelLastMessageAC(resolvedLastMessageUpdate, channelForAdd));
15782
15819
  case 4:
15783
15820
  if (!(channel.id === activeChannelId)) {
15784
- _context.n = 7;
15821
+ _context.n = 9;
15785
15822
  break;
15786
15823
  }
15787
- lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe3 = storedChannel.lastMessage) !== null && _storedChannel$lastMe3 !== void 0 && _storedChannel$lastMe3.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
15788
- var _storedChannel$lastMe4;
15789
- return visibleMessage.id === ((_storedChannel$lastMe4 = storedChannel.lastMessage) === null || _storedChannel$lastMe4 === void 0 ? void 0 : _storedChannel$lastMe4.id);
15824
+ lastMessageIsVisible = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id ? Object.values(getVisibleMessagesMap()).some(function (visibleMessage) {
15825
+ var _storedChannel$lastMe8;
15826
+ return visibleMessage.id === ((_storedChannel$lastMe8 = storedChannel.lastMessage) === null || _storedChannel$lastMe8 === void 0 ? void 0 : _storedChannel$lastMe8.id);
15790
15827
  }) : false;
15791
15828
  messagesHasNext = store.getState().MessageReducer.messagesHasNext;
15792
- lastMessageIsInActiveWindow = storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe5 = storedChannel.lastMessage) !== null && _storedChannel$lastMe5 !== void 0 && _storedChannel$lastMe5.id ? store.getState().MessageReducer.activeChannelMessages.some(function (m) {
15793
- var _storedChannel$lastMe6;
15794
- return m.id === ((_storedChannel$lastMe6 = storedChannel.lastMessage) === null || _storedChannel$lastMe6 === void 0 ? void 0 : _storedChannel$lastMe6.id);
15795
- }) : false;
15796
15829
  if (!(!messagesHasNext && lastMessageIsInActiveWindow)) {
15797
- _context.n = 7;
15830
+ _context.n = 9;
15831
+ break;
15832
+ }
15833
+ existingMessage = store.getState().MessageReducer.activeChannelMessages.find(function (m) {
15834
+ return message.id && m.id === message.id || message.tid && m.tid === message.tid;
15835
+ });
15836
+ if (!existingMessage) {
15837
+ _context.n = 6;
15798
15838
  break;
15799
15839
  }
15800
15840
  _context.n = 5;
15801
- return put(addMessagesAC([message], 'next'));
15841
+ return put(updateMessageAC(existingMessage.id || existingMessage.tid, _extends({}, existingMessage, {
15842
+ id: message.id,
15843
+ deliveryStatus: message.deliveryStatus,
15844
+ state: MESSAGE_STATUS.UNMODIFIED
15845
+ })));
15802
15846
  case 5:
15803
- _context.n = 6;
15804
- return put(loadOGMetadataForLinkAC([message], true));
15847
+ _context.n = 7;
15848
+ break;
15805
15849
  case 6:
15850
+ _context.n = 7;
15851
+ return put(addMessagesAC([message], 'next'));
15852
+ case 7:
15853
+ _context.n = 8;
15854
+ return put(loadOGMetadataForLinkAC([message], true));
15855
+ case 8:
15806
15856
  if (lastMessageIsVisible) {
15807
15857
  navigateToLatest(true);
15808
15858
  }
15809
- case 7:
15859
+ case 9:
15810
15860
  addMessageToMap(channel.id, message);
15811
15861
  channelDataUpdate = _extends({
15812
15862
  messageCount: channelForAdd.messageCount,
@@ -15821,39 +15871,39 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15821
15871
  newReactions: channelForAdd.newReactions,
15822
15872
  userMessageReactions: [],
15823
15873
  lastReactedMessage: null
15824
- }, shouldUpdateLastMessage && resolvedLastMessage ? {
15825
- lastMessage: resolvedLastMessage
15874
+ }, shouldUpdateLastMessage && resolvedLastMessageUpdate ? {
15875
+ lastMessage: resolvedLastMessageUpdate
15826
15876
  } : {});
15827
- if (storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe7 = storedChannel.lastMessage) !== null && _storedChannel$lastMe7 !== void 0 && _storedChannel$lastMe7.id) {
15877
+ if (storedChannel !== null && storedChannel !== void 0 && (_storedChannel$lastMe9 = storedChannel.lastMessage) !== null && _storedChannel$lastMe9 !== void 0 && _storedChannel$lastMe9.id) {
15828
15878
  appendMessageToLatestSegment(channel.id, message.id, storedChannel.lastMessage.id);
15829
15879
  }
15830
- _context.n = 8;
15880
+ _context.n = 10;
15831
15881
  return put(updateChannelDataAC(channel.id, channelDataUpdate));
15832
- case 8:
15882
+ case 10:
15833
15883
  groupName = getChannelGroupName(channel);
15834
- _context.n = 9;
15884
+ _context.n = 11;
15835
15885
  return put(updateSearchedChannelDataAC(channel.id, channelDataUpdate, groupName));
15836
- case 9:
15886
+ case 11:
15837
15887
  showNotifications = getShowNotifications();
15838
15888
  if (!(showNotifications && !message.silent && message.user.id !== SceytChatClient.user.id && !channel.muted)) {
15839
- _context.n = 12;
15889
+ _context.n = 14;
15840
15890
  break;
15841
15891
  }
15842
15892
  if (!(Notification.permission === 'granted')) {
15843
- _context.n = 12;
15893
+ _context.n = 14;
15844
15894
  break;
15845
15895
  }
15846
- _context.n = 10;
15896
+ _context.n = 12;
15847
15897
  return select(browserTabIsActiveSelector);
15848
- case 10:
15898
+ case 12:
15849
15899
  tabIsActive = _context.v;
15850
15900
  if (!(document.visibilityState !== 'visible' || !tabIsActive || channel.id !== activeChannelId)) {
15851
- _context.n = 12;
15901
+ _context.n = 14;
15852
15902
  break;
15853
15903
  }
15854
- _context.n = 11;
15904
+ _context.n = 13;
15855
15905
  return select(contactsMapSelector);
15856
- case 11:
15906
+ case 13:
15857
15907
  contactsMap = _context.v;
15858
15908
  getFromContacts = getShowOnlyContactUsers();
15859
15909
  state = store.getState();
@@ -15873,25 +15923,25 @@ function handleChannelMessageEvent(args, SceytChatClient) {
15873
15923
  setNotification((message === null || message === void 0 ? void 0 : message.type) === MESSAGE_TYPE.VIEW_ONCE ? "Self-destructing" : messageBody, message.user, channel, undefined, message.attachments && message.attachments.length ? message.attachments.find(function (att) {
15874
15924
  return att.type !== attachmentTypes.link;
15875
15925
  }) : undefined);
15876
- case 12:
15926
+ case 14:
15877
15927
  if (!(message.repliedInThread && (_message$parentMessag = message.parentMessage) !== null && _message$parentMessag !== void 0 && _message$parentMessag.id)) {
15878
- _context.n = 14;
15928
+ _context.n = 16;
15879
15929
  break;
15880
15930
  }
15881
- _context.n = 13;
15882
- return put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
15883
- case 13:
15884
15931
  _context.n = 15;
15932
+ return put(markMessagesAsDeliveredAC(message.parentMessage.id, [message.id]));
15933
+ case 15:
15934
+ _context.n = 17;
15885
15935
  break;
15886
- case 14:
15887
- _context.n = 15;
15936
+ case 16:
15937
+ _context.n = 17;
15888
15938
  return put(markMessagesAsDeliveredAC(channel.id, [message.id]));
15889
- case 15:
15939
+ case 17:
15890
15940
  updateChannelOnAllChannels(channel.id, channelDataUpdate);
15891
15941
  if (shouldUpdateLastMessage) {
15892
- updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessage);
15942
+ updateChannelLastMessageOnAllChannels(channel.id, resolvedLastMessageUpdate);
15893
15943
  }
15894
- case 16:
15944
+ case 18:
15895
15945
  return _context.a(2);
15896
15946
  }
15897
15947
  }, _marked$1);
@@ -16338,7 +16388,7 @@ function watchForEvents() {
16338
16388
  };
16339
16389
  });
16340
16390
  _loop = /*#__PURE__*/_regenerator().m(function _callee() {
16341
- var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, _channel2, _channelExists2, _channel3, removedMembers, _activeChannelId, _channelExists3, activeChannel, _updateChannelData2, _groupName, _channel4, addedMembers, _activeChannelId2, _channelExists4, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists5, subject, avatarUrl, muted, mutedTill, metadata, _channel5, fields, _activeChannelId3, _groupName3, channelId, markerList, _channel6, _markerList$user, isOwnMarker, _activeChannelId4, updateLastMessage, markersMap, _iterator, _step, messageId, lastMessage, _channelId, _channel7, _channel8, deletedMessage, _activeChannelId5, _channelExists6, _channel9, message, _activeChannelId6, _channelExists7, _channel0, user, _message, reaction, isSelf, _activeChannelId7, _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, _channel1, pollDetails, _messageId, pollDetailsData, _activeChannelId8, addedVotes, deletedVotes, objs, _iterator2, _step2, vote, _iterator3, _step3, _vote, _i, _objs, obj, _store$getState$Messa, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel10, _pollDetails, _messageId2, _pollDetailsData, _activeChannelId9, _deletedVotes, _objs3, _iterator4, _step4, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel11, _pollDetails2, _messageId3, _activeChannelId0, _pollDetailsData2, retractedVotes, _objs6, _iterator5, _step5, _vote4, _i5, _objs7, _obj4, _iterator6, _step6, _vote3, _channel12, _messageId4, _activeChannelId1, _obj5, _channel13, _user, _message2, _reaction, channelFromMap, _isSelf, _activeChannelId10, _channelUpdateParams, _channel14, _activeChannelId11, channelExist, _channel15, _channel16, _channel17, _channel18, _channel19, _channel20, _channel21, _groupName4, _channel22, _groupName5, _channel23, members, _activeChannelId12, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel24, _channel25, _channelId2, from, name, status, _t, _t2, _t3, _t4;
16391
+ var _yield$take, type, args, createdChannel, channelFilterTypes, getFromContacts, channelExists, _chan, channel, joinedMember, _chan2, customLoadMembersFunctions, joinMembersEvent, membersList, updateChannelData, _channel, member, _channelExists, activeChannelId, groupName, _updateChannelData, _channel2, _channelExists2, _channel3, removedMembers, _activeChannelId, _channelExists3, activeChannel, _updateChannelData2, _groupName, _channel4, addedMembers, _activeChannelId2, _channelExists4, _updateChannelData3, _customLoadMembersFunctions, addMembersEvent, _membersList, _groupName2, onUpdateChannel, updatedChannel, _channelExists5, subject, avatarUrl, muted, mutedTill, metadata, _channel5, fields, _activeChannelId3, _groupName3, channelId, markerList, _channel6, _markerList$user, isOwnMarker, _activeChannelId4, updateLastMessage, markersMap, _iterator, _step, messageId, lastMessage, _channelId, _channel7, _channel8, deletedMessage, _activeChannelId5, _channelExists6, _channel9, message, _activeChannelId6, _channelExists7, _channel0, user, _message, reaction, isSelf, _activeChannelId7, _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, _channel1, pollDetails, _messageId, pollDetailsData, _activeChannelId8, addedVotes, deletedVotes, objs, _iterator2, _step2, vote, _iterator3, _step3, _vote, _i, _objs, obj, _store$getState$Messa2, key, hasNext, _i2, _objs2, _obj, _pollDetailsData$chan3, _channel10, _pollDetails, _messageId2, _pollDetailsData, _activeChannelId9, _deletedVotes, _objs3, _iterator4, _step4, _vote2, _i3, _objs4, _obj2, _i4, _objs5, _obj3, _pollDetailsData2$cha, _channel11, _pollDetails2, _messageId3, _activeChannelId0, _pollDetailsData2, retractedVotes, _objs6, _iterator5, _step5, _vote4, _i5, _objs7, _obj4, _iterator6, _step6, _vote3, _channel12, _messageId4, _activeChannelId1, _obj5, _channel13, _user, _message2, _reaction, channelFromMap, _isSelf, _activeChannelId10, _channelUpdateParams, _channel14, _activeChannelId11, channelExist, _channel15, _channel16, _channel17, _channel18, _channel19, _channel20, _channel21, _groupName4, _channel22, _groupName5, _channel23, members, _activeChannelId12, _customLoadMembersFunctions2, updateMembersEvent, _membersList2, i, _channel24, _channel25, _channelId2, from, name, status, _t, _t2, _t3, _t4;
16342
16392
  return _regenerator().w(function (_context3) {
16343
16393
  while (1) switch (_context3.p = _context3.n) {
16344
16394
  case 0:
@@ -17025,7 +17075,7 @@ function watchForEvents() {
17025
17075
  break;
17026
17076
  }
17027
17077
  key = pollDetailsData.id + "_" + obj.vote.optionId;
17028
- hasNext = ((_store$getState$Messa = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa === void 0 ? void 0 : _store$getState$Messa[key]) || false;
17078
+ hasNext = ((_store$getState$Messa2 = store.getState().MessageReducer.pollVotesHasMore) === null || _store$getState$Messa2 === void 0 ? void 0 : _store$getState$Messa2[key]) || false;
17029
17079
  if (!(obj.type === 'addOwn')) {
17030
17080
  _context3.n = 95;
17031
17081
  break;
@@ -21883,32 +21933,33 @@ var updateMessage$1 = function updateMessage(actionType, pending, channelId, scr
21883
21933
  };
21884
21934
  var syncFailedMessageState = /*#__PURE__*/_regenerator().m(function _callee2(channel, messageId, message, shouldKeepInMap) {
21885
21935
  var _getStoredChannel5;
21886
- var activeChannelId, failedMessage, resolvedLastMessage, channelUpdateParam;
21936
+ var shouldSkipUpdate, activeChannelId, failedMessage, resolvedLastMessage, channelUpdateParam;
21887
21937
  return _regenerator().w(function (_context9) {
21888
21938
  while (1) switch (_context9.n) {
21889
21939
  case 0:
21940
+ shouldSkipUpdate = checkIsItSentAlready(messageId, channel.id);
21890
21941
  if (shouldKeepInMap) {
21891
21942
  updateMessageOnMap(channel.id, {
21892
21943
  messageId: messageId,
21893
21944
  params: {
21894
- state: MESSAGE_STATUS.FAILED
21945
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21895
21946
  }
21896
21947
  });
21897
- } else {
21948
+ } else if (!shouldSkipUpdate) {
21898
21949
  removeMessageFromMap(channel.id, messageId);
21899
21950
  }
21900
21951
  activeChannelId = getActiveChannelId();
21901
- if (!(activeChannelId === channel.id)) {
21952
+ if (!(activeChannelId === channel.id && !shouldSkipUpdate)) {
21902
21953
  _context9.n = 1;
21903
21954
  break;
21904
21955
  }
21905
21956
  _context9.n = 1;
21906
21957
  return put(updateMessageAC(messageId, {
21907
- state: MESSAGE_STATUS.FAILED
21958
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21908
21959
  }));
21909
21960
  case 1:
21910
21961
  failedMessage = _extends({}, message, {
21911
- state: MESSAGE_STATUS.FAILED
21962
+ state: shouldSkipUpdate ? MESSAGE_STATUS.UNMODIFIED : MESSAGE_STATUS.FAILED
21912
21963
  });
21913
21964
  resolvedLastMessage = getResolvedChannelLastMessage$1(channel.id, failedMessage, message);
21914
21965
  if (!lastMessageNeedsUpdate$1((_getStoredChannel5 = getStoredChannel$1(channel.id)) === null || _getStoredChannel5 === void 0 ? void 0 : _getStoredChannel5.lastMessage, resolvedLastMessage)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceyt-chat-react-uikit",
3
- "version": "1.8.5-beta.7",
3
+ "version": "1.8.5-beta.8",
4
4
  "description": "Interactive React UI Components for Sceyt Chat.",
5
5
  "author": "Sceyt",
6
6
  "license": "MIT",