sceyt-chat-react-uikit 1.7.1-beta.16 → 1.7.1-beta.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +203 -174
- package/index.modern.js +203 -174
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -10340,6 +10340,7 @@ var initialState$1 = {
|
|
|
10340
10340
|
attachmentsUploadingState: {},
|
|
10341
10341
|
scrollToMessage: null,
|
|
10342
10342
|
scrollToMessageHighlight: true,
|
|
10343
|
+
scrollToMessageBehavior: 'smooth',
|
|
10343
10344
|
scrollToMentionedMessage: false,
|
|
10344
10345
|
reactionsList: [],
|
|
10345
10346
|
reactionsHasNext: true,
|
|
@@ -10366,6 +10367,7 @@ var messageSlice = createSlice({
|
|
|
10366
10367
|
setScrollToMessage: function setScrollToMessage(state, action) {
|
|
10367
10368
|
state.scrollToMessage = action.payload.messageId;
|
|
10368
10369
|
state.scrollToMessageHighlight = action.payload.highlight;
|
|
10370
|
+
state.scrollToMessageBehavior = action.payload.behavior || 'smooth';
|
|
10369
10371
|
},
|
|
10370
10372
|
setScrollToMentionedMessage: function setScrollToMentionedMessage(state, action) {
|
|
10371
10373
|
state.scrollToMentionedMessage = action.payload.isScrollToMentionedMessage;
|
|
@@ -11617,7 +11619,7 @@ function setMessageToEditAC(message) {
|
|
|
11617
11619
|
message: message
|
|
11618
11620
|
});
|
|
11619
11621
|
}
|
|
11620
|
-
function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight) {
|
|
11622
|
+
function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior) {
|
|
11621
11623
|
if (highlight === void 0) {
|
|
11622
11624
|
highlight = true;
|
|
11623
11625
|
}
|
|
@@ -11629,7 +11631,8 @@ function getMessagesAC(channel, loadWithLastMessage, messageId, limit, withDeliv
|
|
|
11629
11631
|
messageId: messageId,
|
|
11630
11632
|
limit: limit,
|
|
11631
11633
|
withDeliveredMessages: withDeliveredMessages,
|
|
11632
|
-
highlight: highlight
|
|
11634
|
+
highlight: highlight,
|
|
11635
|
+
behavior: behavior
|
|
11633
11636
|
}
|
|
11634
11637
|
};
|
|
11635
11638
|
}
|
|
@@ -11643,13 +11646,14 @@ function getMessageAC(channelId, messageId, limit) {
|
|
|
11643
11646
|
}
|
|
11644
11647
|
};
|
|
11645
11648
|
}
|
|
11646
|
-
function setScrollToMessagesAC(messageId, highlight) {
|
|
11649
|
+
function setScrollToMessagesAC(messageId, highlight, behavior) {
|
|
11647
11650
|
if (highlight === void 0) {
|
|
11648
11651
|
highlight = true;
|
|
11649
11652
|
}
|
|
11650
11653
|
return setScrollToMessage({
|
|
11651
11654
|
messageId: messageId || '',
|
|
11652
|
-
highlight: highlight
|
|
11655
|
+
highlight: highlight,
|
|
11656
|
+
behavior: behavior
|
|
11653
11657
|
});
|
|
11654
11658
|
}
|
|
11655
11659
|
function setScrollToMentionedMessageAC(isScrollToMentionedMessage) {
|
|
@@ -17110,6 +17114,9 @@ var scrollToMessageSelector = function scrollToMessageSelector(store) {
|
|
|
17110
17114
|
var scrollToMessageHighlightSelector = function scrollToMessageHighlightSelector(store) {
|
|
17111
17115
|
return store.MessageReducer.scrollToMessageHighlight;
|
|
17112
17116
|
};
|
|
17117
|
+
var scrollToMessageBehaviorSelector = function scrollToMessageBehaviorSelector(store) {
|
|
17118
|
+
return store.MessageReducer.scrollToMessageBehavior;
|
|
17119
|
+
};
|
|
17113
17120
|
var reactionsListSelector = function reactionsListSelector(store) {
|
|
17114
17121
|
return store.MessageReducer.reactionsList;
|
|
17115
17122
|
};
|
|
@@ -18503,7 +18510,7 @@ function editMessage(action) {
|
|
|
18503
18510
|
}, _marked6$1, null, [[0, 5]]);
|
|
18504
18511
|
}
|
|
18505
18512
|
function getMessagesQuery(action) {
|
|
18506
|
-
var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
|
|
18513
|
+
var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, highlight, behavior, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, _secondResult2, _thirdResult, _secondResult3, _secondResult4, updatedMessages, pendingMessages, _messagesMap, filteredPendingMessages, _t9;
|
|
18507
18514
|
return _regenerator().w(function (_context9) {
|
|
18508
18515
|
while (1) switch (_context9.p = _context9.n) {
|
|
18509
18516
|
case 0:
|
|
@@ -18511,7 +18518,7 @@ function getMessagesQuery(action) {
|
|
|
18511
18518
|
_context9.n = 1;
|
|
18512
18519
|
return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADING));
|
|
18513
18520
|
case 1:
|
|
18514
|
-
_action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight;
|
|
18521
|
+
_action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages, highlight = _action$payload.highlight, behavior = _action$payload.behavior;
|
|
18515
18522
|
if (!(channel.id && !channel.isMockChannel)) {
|
|
18516
18523
|
_context9.n = 47;
|
|
18517
18524
|
break;
|
|
@@ -18597,7 +18604,7 @@ function getMessagesQuery(action) {
|
|
|
18597
18604
|
break;
|
|
18598
18605
|
}
|
|
18599
18606
|
_context9.n = 12;
|
|
18600
|
-
return effects.put(setScrollToMessagesAC(messageId, highlight));
|
|
18607
|
+
return effects.put(setScrollToMessagesAC(messageId, highlight, behavior));
|
|
18601
18608
|
case 12:
|
|
18602
18609
|
_context9.n = 45;
|
|
18603
18610
|
break;
|
|
@@ -18660,7 +18667,7 @@ function getMessagesQuery(action) {
|
|
|
18660
18667
|
setHasNextCached(false);
|
|
18661
18668
|
case 22:
|
|
18662
18669
|
_context9.n = 23;
|
|
18663
|
-
return effects.put(setScrollToMessagesAC(messageId));
|
|
18670
|
+
return effects.put(setScrollToMessagesAC(messageId, true, behavior));
|
|
18664
18671
|
case 23:
|
|
18665
18672
|
_context9.n = 24;
|
|
18666
18673
|
return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
|
|
@@ -26142,6 +26149,7 @@ var Message = function Message(_ref) {
|
|
|
26142
26149
|
var _useColor = useColors(),
|
|
26143
26150
|
textOnPrimary = _useColor[THEME_COLORS.TEXT_ON_PRIMARY],
|
|
26144
26151
|
overlayBackground = _useColor[THEME_COLORS.OVERLAY_BACKGROUND];
|
|
26152
|
+
var scrollToNewMessage = useSelector(scrollToNewMessageSelector);
|
|
26145
26153
|
var dispatch = useDispatch();
|
|
26146
26154
|
var ChatClient = getClient();
|
|
26147
26155
|
var user = ChatClient.user;
|
|
@@ -26160,7 +26168,19 @@ var Message = function Message(_ref) {
|
|
|
26160
26168
|
};
|
|
26161
26169
|
React.useEffect(function () {
|
|
26162
26170
|
if (isVisible) {
|
|
26171
|
+
var _channel$lastMessage;
|
|
26163
26172
|
handleSendReadMarker();
|
|
26173
|
+
if (!channel.isLinkedChannel) {
|
|
26174
|
+
setMessageToVisibleMessagesMap(message);
|
|
26175
|
+
}
|
|
26176
|
+
if (scrollToNewMessage.scrollToBottom && ((message === null || message === void 0 ? void 0 : message.id) === ((_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id) || !(message !== null && message !== void 0 && message.id))) {
|
|
26177
|
+
dispatch(scrollToNewMessageAC(false, false, false));
|
|
26178
|
+
dispatch(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
|
|
26179
|
+
}
|
|
26180
|
+
} else {
|
|
26181
|
+
if (!channel.isLinkedChannel) {
|
|
26182
|
+
removeMessageFromVisibleMessagesMap(message);
|
|
26183
|
+
}
|
|
26164
26184
|
}
|
|
26165
26185
|
}, [isVisible]);
|
|
26166
26186
|
useDidUpdate(function () {
|
|
@@ -32813,14 +32833,6 @@ var HiddenMessageProperty;
|
|
|
32813
32833
|
})(HiddenMessageProperty || (HiddenMessageProperty = {}));
|
|
32814
32834
|
|
|
32815
32835
|
var _templateObject$D, _templateObject2$y, _templateObject3$s, _templateObject4$o, _templateObject5$k, _templateObject6$h, _templateObject7$f, _templateObject8$e, _templateObject9$c, _templateObject0$b, _templateObject1$8;
|
|
32816
|
-
var loadFromServer = false;
|
|
32817
|
-
var loadDirection = '';
|
|
32818
|
-
var nextDisable = false;
|
|
32819
|
-
var prevDisable = false;
|
|
32820
|
-
var scrollToBottom = false;
|
|
32821
|
-
var shouldLoadMessages;
|
|
32822
|
-
var loading = false;
|
|
32823
|
-
var messagesIndexMap = {};
|
|
32824
32836
|
var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
|
|
32825
32837
|
var lastIndex = _ref.lastIndex,
|
|
32826
32838
|
currentMessageDate = _ref.currentMessageDate,
|
|
@@ -33030,6 +33042,7 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33030
33042
|
var scrollToMentionedMessage = useSelector(scrollToMentionedMessageSelector, reactRedux.shallowEqual);
|
|
33031
33043
|
var scrollToRepliedMessage = useSelector(scrollToMessageSelector, reactRedux.shallowEqual);
|
|
33032
33044
|
var scrollToMessageHighlight = useSelector(scrollToMessageHighlightSelector, reactRedux.shallowEqual);
|
|
33045
|
+
var scrollToMessageBehavior = useSelector(scrollToMessageBehaviorSelector, reactRedux.shallowEqual);
|
|
33033
33046
|
var browserTabIsActive = useSelector(browserTabIsActiveSelector, reactRedux.shallowEqual);
|
|
33034
33047
|
var hasNextMessages = useSelector(messagesHasNextSelector, reactRedux.shallowEqual);
|
|
33035
33048
|
var hasPrevMessages = useSelector(messagesHasPrevSelector, reactRedux.shallowEqual);
|
|
@@ -33070,35 +33083,39 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33070
33083
|
setShouldPreserveScroll = _useState0[1];
|
|
33071
33084
|
var messageForReply = {};
|
|
33072
33085
|
var attachmentsSelected = false;
|
|
33073
|
-
var
|
|
33086
|
+
var _useState1 = React.useState(''),
|
|
33087
|
+
topDateLabel = _useState1[0],
|
|
33088
|
+
setTopDateLabel = _useState1[1];
|
|
33074
33089
|
var scrollRef = React.useRef(null);
|
|
33090
|
+
var loadFromServerRef = React.useRef(false);
|
|
33091
|
+
var loadDirectionRef = React.useRef('');
|
|
33092
|
+
var nextDisableRef = React.useRef(false);
|
|
33093
|
+
var prevDisableRef = React.useRef(false);
|
|
33094
|
+
var scrollToBottomRef = React.useRef(false);
|
|
33095
|
+
var shouldLoadMessagesRef = React.useRef('');
|
|
33096
|
+
var loadingRef = React.useRef(false);
|
|
33097
|
+
var messagesIndexMapRef = React.useRef({});
|
|
33098
|
+
var scrollRafRef = React.useRef(null);
|
|
33075
33099
|
var renderTopDate = function renderTopDate() {
|
|
33076
|
-
var
|
|
33077
|
-
|
|
33100
|
+
var container = scrollRef.current;
|
|
33101
|
+
if (!container) return;
|
|
33102
|
+
var dateLabels = container.querySelectorAll('.divider');
|
|
33078
33103
|
var text = '';
|
|
33079
33104
|
for (var i = dateLabels.length - 1; i >= 0; i--) {
|
|
33080
|
-
var _dateLabel$firstChild;
|
|
33081
33105
|
var dateLabel = dateLabels[i];
|
|
33082
|
-
|
|
33083
|
-
|
|
33084
|
-
text = span
|
|
33085
|
-
span.style.display = 'none';
|
|
33086
|
-
} else {
|
|
33087
|
-
span.style.display = 'block';
|
|
33106
|
+
if (!text && container.scrollTop > dateLabel.offsetTop) {
|
|
33107
|
+
var span = (dateLabel === null || dateLabel === void 0 ? void 0 : dateLabel.firstChild) && dateLabel.firstChild.firstChild;
|
|
33108
|
+
text = span ? span.innerText || '' : '';
|
|
33088
33109
|
}
|
|
33089
33110
|
}
|
|
33090
|
-
|
|
33091
|
-
messageTopDate.innerText = text;
|
|
33092
|
-
messageTopDate.style.display = 'inline';
|
|
33093
|
-
} else {
|
|
33094
|
-
messageTopDate.style.display = 'none';
|
|
33095
|
-
}
|
|
33111
|
+
setTopDateLabel(text);
|
|
33096
33112
|
};
|
|
33097
|
-
var handleMessagesListScroll = React.useCallback(function (
|
|
33113
|
+
var handleMessagesListScroll = React.useCallback(function () {
|
|
33098
33114
|
try {
|
|
33115
|
+
var target = scrollRef.current;
|
|
33116
|
+
if (!target) return Promise.resolve();
|
|
33099
33117
|
if (scrollToMentionedMessage) {
|
|
33100
|
-
|
|
33101
|
-
if (_target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
|
|
33118
|
+
if (target.scrollTop <= -50 || channel.lastMessage.id !== messages[messages.length - 1].id) {
|
|
33102
33119
|
dispatch(showScrollToNewMessageButtonAC(true));
|
|
33103
33120
|
} else {
|
|
33104
33121
|
dispatch(showScrollToNewMessageButtonAC(false));
|
|
@@ -33111,7 +33128,6 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33111
33128
|
setShowTopDate(false);
|
|
33112
33129
|
}, 1000);
|
|
33113
33130
|
renderTopDate();
|
|
33114
|
-
var target = event.target;
|
|
33115
33131
|
var forceLoadPrevMessages = false;
|
|
33116
33132
|
if (-target.scrollTop + target.offsetHeight + 30 > target.scrollHeight) {
|
|
33117
33133
|
forceLoadPrevMessages = true;
|
|
@@ -33126,51 +33142,68 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33126
33142
|
}
|
|
33127
33143
|
if (scrollToReply) {
|
|
33128
33144
|
target.scrollTop = scrollToReply;
|
|
33129
|
-
|
|
33130
|
-
|
|
33131
|
-
|
|
33132
|
-
|
|
33133
|
-
|
|
33134
|
-
|
|
33135
|
-
|
|
33136
|
-
|
|
33137
|
-
|
|
33138
|
-
|
|
33139
|
-
|
|
33140
|
-
if (!getHasPrevCached()) {
|
|
33141
|
-
loadFromServer = true;
|
|
33142
|
-
}
|
|
33143
|
-
nextDisable = true;
|
|
33145
|
+
return Promise.resolve();
|
|
33146
|
+
}
|
|
33147
|
+
var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
|
|
33148
|
+
var hasIndex = typeof currentIndex === 'number';
|
|
33149
|
+
if (hasIndex && currentIndex < 15 || forceLoadPrevMessages) {
|
|
33150
|
+
if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
|
|
33151
|
+
if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || prevDisableRef.current) {
|
|
33152
|
+
shouldLoadMessagesRef.current = 'prev';
|
|
33153
|
+
} else {
|
|
33154
|
+
if (shouldLoadMessagesRef.current === 'prev') {
|
|
33155
|
+
shouldLoadMessagesRef.current = '';
|
|
33144
33156
|
}
|
|
33157
|
+
loadDirectionRef.current = 'prev';
|
|
33158
|
+
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
|
|
33159
|
+
if (!getHasPrevCached()) {
|
|
33160
|
+
loadFromServerRef.current = true;
|
|
33161
|
+
}
|
|
33162
|
+
nextDisableRef.current = true;
|
|
33145
33163
|
}
|
|
33146
33164
|
}
|
|
33147
|
-
|
|
33148
|
-
|
|
33149
|
-
|
|
33150
|
-
|
|
33151
|
-
|
|
33152
|
-
|
|
33153
|
-
|
|
33154
|
-
|
|
33155
|
-
loadDirection = 'next';
|
|
33156
|
-
prevDisable = true;
|
|
33157
|
-
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
|
|
33165
|
+
}
|
|
33166
|
+
if (hasIndex && currentIndex >= messages.length - 15 || target.scrollTop === 0) {
|
|
33167
|
+
if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && (hasNextMessages || getHasNextCached())) {
|
|
33168
|
+
if (loadingRef.current || messagesLoading === LOADING_STATE.LOADING || nextDisableRef.current) {
|
|
33169
|
+
shouldLoadMessagesRef.current = 'next';
|
|
33170
|
+
} else {
|
|
33171
|
+
if (shouldLoadMessagesRef.current === 'next') {
|
|
33172
|
+
shouldLoadMessagesRef.current = '';
|
|
33158
33173
|
}
|
|
33174
|
+
loadDirectionRef.current = 'next';
|
|
33175
|
+
prevDisableRef.current = true;
|
|
33176
|
+
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
|
|
33159
33177
|
}
|
|
33160
33178
|
}
|
|
33161
|
-
|
|
33162
|
-
|
|
33163
|
-
|
|
33179
|
+
}
|
|
33180
|
+
if (hasIndex && currentIndex > messages.length - 10) {
|
|
33181
|
+
nextDisableRef.current = false;
|
|
33164
33182
|
}
|
|
33165
33183
|
return Promise.resolve();
|
|
33166
33184
|
} catch (e) {
|
|
33167
33185
|
return Promise.reject(e);
|
|
33168
33186
|
}
|
|
33169
|
-
}, [channel === null || channel === void 0 ? void 0 : (_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id, messages, scrollToMentionedMessage, scrollToNewMessage, messagesLoading, hasPrevMessages, hasNextMessages,
|
|
33187
|
+
}, [channel === null || channel === void 0 ? void 0 : (_channel$lastMessage = channel.lastMessage) === null || _channel$lastMessage === void 0 ? void 0 : _channel$lastMessage.id, messages, scrollToMentionedMessage, scrollToNewMessage, messagesLoading, hasPrevMessages, hasNextMessages, lastVisibleMessageId, connectionStatus, getHasPrevCached, getHasNextCached, scrollToReply]);
|
|
33188
|
+
var onScroll = React.useCallback(function () {
|
|
33189
|
+
if (scrollRafRef.current !== null) return;
|
|
33190
|
+
scrollRafRef.current = window.requestAnimationFrame(function () {
|
|
33191
|
+
scrollRafRef.current = null;
|
|
33192
|
+
handleMessagesListScroll();
|
|
33193
|
+
});
|
|
33194
|
+
}, [handleMessagesListScroll]);
|
|
33195
|
+
React.useEffect(function () {
|
|
33196
|
+
return function () {
|
|
33197
|
+
if (scrollRafRef.current !== null) {
|
|
33198
|
+
cancelAnimationFrame(scrollRafRef.current);
|
|
33199
|
+
scrollRafRef.current = null;
|
|
33200
|
+
}
|
|
33201
|
+
};
|
|
33202
|
+
}, []);
|
|
33170
33203
|
var handleScrollToRepliedMessage = function handleScrollToRepliedMessage(messageId) {
|
|
33171
33204
|
try {
|
|
33172
|
-
|
|
33173
|
-
|
|
33205
|
+
prevDisableRef.current = true;
|
|
33206
|
+
nextDisableRef.current = true;
|
|
33174
33207
|
if (messages.findIndex(function (msg) {
|
|
33175
33208
|
return msg.id === messageId;
|
|
33176
33209
|
}) >= 10) {
|
|
@@ -33184,8 +33217,8 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33184
33217
|
var positiveValue = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2 < 0 ? repliedMessage.offsetTop - scrollRef.current.offsetHeight * -1 : repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
|
|
33185
33218
|
setTimeout(function () {
|
|
33186
33219
|
repliedMessage.classList.remove('highlight');
|
|
33187
|
-
|
|
33188
|
-
|
|
33220
|
+
prevDisableRef.current = false;
|
|
33221
|
+
nextDisableRef.current = false;
|
|
33189
33222
|
}, 1000 + positiveValue * 0.1);
|
|
33190
33223
|
}
|
|
33191
33224
|
} else {
|
|
@@ -33206,10 +33239,10 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33206
33239
|
var hasNextCached = getHasNextCached();
|
|
33207
33240
|
if (messagesLoading === LOADING_STATE.LOADED && connectionStatus === CONNECTION_STATUS.CONNECTED) {
|
|
33208
33241
|
if (direction === MESSAGE_LOAD_DIRECTION.PREV && firstMessageId && (hasPrevMessages || hasPrevCached)) {
|
|
33209
|
-
|
|
33242
|
+
loadingRef.current = true;
|
|
33210
33243
|
dispatch(loadMoreMessagesAC(channel.id, limit, direction, firstMessageId, hasPrevMessages));
|
|
33211
33244
|
} else if (direction === MESSAGE_LOAD_DIRECTION.NEXT && lastMessageId && (hasNextMessages || hasNextCached)) {
|
|
33212
|
-
|
|
33245
|
+
loadingRef.current = true;
|
|
33213
33246
|
dispatch(loadMoreMessagesAC(channel.id, limit, direction, lastMessageId, hasNextMessages));
|
|
33214
33247
|
}
|
|
33215
33248
|
}
|
|
@@ -33240,39 +33273,42 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33240
33273
|
setIsDragging(false);
|
|
33241
33274
|
}
|
|
33242
33275
|
};
|
|
33276
|
+
var readDroppedFiles = function readDroppedFiles(e) {
|
|
33277
|
+
return new Promise(function (resolve) {
|
|
33278
|
+
var fileList = Object.values(e.dataTransfer.files);
|
|
33279
|
+
var attachmentsFiles = [];
|
|
33280
|
+
var readFiles = 0;
|
|
33281
|
+
var errorCount = 0;
|
|
33282
|
+
fileList.forEach(function (attachment) {
|
|
33283
|
+
var fileReader = new FileReader();
|
|
33284
|
+
fileReader.onload = function (event) {
|
|
33285
|
+
var file = event.target.result;
|
|
33286
|
+
attachmentsFiles.push({
|
|
33287
|
+
name: attachment.name,
|
|
33288
|
+
data: file,
|
|
33289
|
+
type: attachment.type
|
|
33290
|
+
});
|
|
33291
|
+
readFiles++;
|
|
33292
|
+
if (readFiles + errorCount === fileList.length) {
|
|
33293
|
+
resolve(attachmentsFiles);
|
|
33294
|
+
}
|
|
33295
|
+
};
|
|
33296
|
+
fileReader.onerror = function () {
|
|
33297
|
+
errorCount++;
|
|
33298
|
+
if (readFiles + errorCount === fileList.length) {
|
|
33299
|
+
resolve(attachmentsFiles);
|
|
33300
|
+
}
|
|
33301
|
+
};
|
|
33302
|
+
fileReader.readAsDataURL(attachment);
|
|
33303
|
+
});
|
|
33304
|
+
});
|
|
33305
|
+
};
|
|
33243
33306
|
var handleDropFile = function handleDropFile(e) {
|
|
33244
33307
|
e.preventDefault();
|
|
33245
33308
|
e.stopPropagation();
|
|
33246
33309
|
setIsDragging(false);
|
|
33247
33310
|
if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
|
|
33248
|
-
|
|
33249
|
-
new Promise(function (resolve) {
|
|
33250
|
-
var attachmentsFiles = [];
|
|
33251
|
-
var readFiles = 0;
|
|
33252
|
-
var errorCount = 0;
|
|
33253
|
-
fileList.forEach(function (attachment) {
|
|
33254
|
-
var fileReader = new FileReader();
|
|
33255
|
-
fileReader.onload = function (event) {
|
|
33256
|
-
var file = event.target.result;
|
|
33257
|
-
attachmentsFiles.push({
|
|
33258
|
-
name: attachment.name,
|
|
33259
|
-
data: file,
|
|
33260
|
-
type: attachment.type
|
|
33261
|
-
});
|
|
33262
|
-
readFiles++;
|
|
33263
|
-
if (readFiles + errorCount === fileList.length) {
|
|
33264
|
-
resolve(attachmentsFiles);
|
|
33265
|
-
}
|
|
33266
|
-
};
|
|
33267
|
-
fileReader.onerror = function () {
|
|
33268
|
-
errorCount++;
|
|
33269
|
-
if (readFiles + errorCount === fileList.length) {
|
|
33270
|
-
resolve(attachmentsFiles);
|
|
33271
|
-
}
|
|
33272
|
-
};
|
|
33273
|
-
fileReader.readAsDataURL(attachment);
|
|
33274
|
-
});
|
|
33275
|
-
}).then(function (result) {
|
|
33311
|
+
readDroppedFiles(e).then(function (result) {
|
|
33276
33312
|
dispatch(setDraggedAttachmentsAC(result, 'file'));
|
|
33277
33313
|
})["catch"](function (error) {
|
|
33278
33314
|
console.error('Error in handleDropFile:', error);
|
|
@@ -33285,34 +33321,7 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33285
33321
|
e.stopPropagation();
|
|
33286
33322
|
setIsDragging(false);
|
|
33287
33323
|
if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
|
|
33288
|
-
|
|
33289
|
-
new Promise(function (resolve) {
|
|
33290
|
-
var attachmentsFiles = [];
|
|
33291
|
-
var readFiles = 0;
|
|
33292
|
-
var errorCount = 0;
|
|
33293
|
-
fileList.forEach(function (attachment) {
|
|
33294
|
-
var fileReader = new FileReader();
|
|
33295
|
-
fileReader.onload = function (event) {
|
|
33296
|
-
var file = event.target.result;
|
|
33297
|
-
attachmentsFiles.push({
|
|
33298
|
-
name: attachment.name,
|
|
33299
|
-
data: file,
|
|
33300
|
-
type: attachment.type
|
|
33301
|
-
});
|
|
33302
|
-
readFiles++;
|
|
33303
|
-
if (readFiles + errorCount === fileList.length) {
|
|
33304
|
-
resolve(attachmentsFiles);
|
|
33305
|
-
}
|
|
33306
|
-
};
|
|
33307
|
-
fileReader.onerror = function () {
|
|
33308
|
-
errorCount++;
|
|
33309
|
-
if (readFiles + errorCount === fileList.length) {
|
|
33310
|
-
resolve(attachmentsFiles);
|
|
33311
|
-
}
|
|
33312
|
-
};
|
|
33313
|
-
fileReader.readAsDataURL(attachment);
|
|
33314
|
-
});
|
|
33315
|
-
}).then(function (result) {
|
|
33324
|
+
readDroppedFiles(e).then(function (result) {
|
|
33316
33325
|
dispatch(setDraggedAttachmentsAC(result, 'media'));
|
|
33317
33326
|
})["catch"](function (error) {
|
|
33318
33327
|
console.error('Error in handleDropMedia:', error);
|
|
@@ -33324,21 +33333,21 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33324
33333
|
var _messages, _channel$lastMessage2;
|
|
33325
33334
|
if (messages.length > 0 && ((_messages = messages[messages.length - 1]) === null || _messages === void 0 ? void 0 : _messages.id) === ((_channel$lastMessage2 = channel.lastMessage) === null || _channel$lastMessage2 === void 0 ? void 0 : _channel$lastMessage2.id) && scrollRef.current && scrollRef.current.scrollTop > -50 && !showScrollToNewMessageButton) {
|
|
33326
33335
|
dispatch(showScrollToNewMessageButtonAC(false));
|
|
33327
|
-
|
|
33336
|
+
prevDisableRef.current = false;
|
|
33328
33337
|
}
|
|
33329
33338
|
}, [messages, channel === null || channel === void 0 ? void 0 : (_channel$lastMessage3 = channel.lastMessage) === null || _channel$lastMessage3 === void 0 ? void 0 : _channel$lastMessage3.id, scrollRef === null || scrollRef === void 0 ? void 0 : (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : _scrollRef$current.scrollTop, showScrollToNewMessageButton]);
|
|
33330
33339
|
React.useEffect(function () {
|
|
33331
33340
|
if (scrollToRepliedMessage) {
|
|
33332
|
-
|
|
33341
|
+
loadingRef.current = false;
|
|
33333
33342
|
scrollRef.current.style.scrollBehavior = 'inherit';
|
|
33334
33343
|
var repliedMessage = document.getElementById(scrollToRepliedMessage);
|
|
33335
33344
|
if (repliedMessage) {
|
|
33336
33345
|
setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
|
|
33337
33346
|
scrollRef.current.scrollTo({
|
|
33338
33347
|
top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
|
|
33339
|
-
behavior:
|
|
33348
|
+
behavior: scrollToMessageBehavior
|
|
33340
33349
|
});
|
|
33341
|
-
scrollRef.current.style.scrollBehavior =
|
|
33350
|
+
scrollRef.current.style.scrollBehavior = scrollToMessageBehavior;
|
|
33342
33351
|
if (!channel.backToLinkedChannel && scrollToMessageHighlight) {
|
|
33343
33352
|
repliedMessage && repliedMessage.classList.add('highlight');
|
|
33344
33353
|
}
|
|
@@ -33348,9 +33357,9 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33348
33357
|
var _repliedMessage = document.getElementById(scrollToRepliedMessage);
|
|
33349
33358
|
_repliedMessage && _repliedMessage.classList.remove('highlight');
|
|
33350
33359
|
}
|
|
33351
|
-
|
|
33360
|
+
prevDisableRef.current = false;
|
|
33352
33361
|
setScrollToReply(null);
|
|
33353
|
-
scrollRef.current.style.scrollBehavior = '
|
|
33362
|
+
scrollRef.current.style.scrollBehavior = 'instant';
|
|
33354
33363
|
}, 1000 + positiveValue * 0.1);
|
|
33355
33364
|
}
|
|
33356
33365
|
dispatch(setScrollToMessagesAC(null));
|
|
@@ -33366,15 +33375,15 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33366
33375
|
});
|
|
33367
33376
|
}
|
|
33368
33377
|
} else {
|
|
33369
|
-
|
|
33370
|
-
|
|
33378
|
+
nextDisableRef.current = true;
|
|
33379
|
+
prevDisableRef.current = true;
|
|
33371
33380
|
scrollRef.current.scrollTo({
|
|
33372
33381
|
top: 0,
|
|
33373
33382
|
behavior: 'smooth'
|
|
33374
33383
|
});
|
|
33375
33384
|
dispatch(showScrollToNewMessageButtonAC(false));
|
|
33376
33385
|
setTimeout(function () {
|
|
33377
|
-
|
|
33386
|
+
prevDisableRef.current = false;
|
|
33378
33387
|
}, 800);
|
|
33379
33388
|
}
|
|
33380
33389
|
}
|
|
@@ -33392,11 +33401,18 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33392
33401
|
React.useEffect(function () {
|
|
33393
33402
|
setHasNextCached(false);
|
|
33394
33403
|
setHasPrevCached(false);
|
|
33404
|
+
messagesIndexMapRef.current = {};
|
|
33405
|
+
loadFromServerRef.current = false;
|
|
33406
|
+
loadDirectionRef.current = '';
|
|
33407
|
+
nextDisableRef.current = false;
|
|
33408
|
+
prevDisableRef.current = false;
|
|
33409
|
+
shouldLoadMessagesRef.current = '';
|
|
33410
|
+
loadingRef.current = false;
|
|
33395
33411
|
if (channel.backToLinkedChannel) {
|
|
33396
33412
|
var visibleMessages = getVisibleMessagesMap();
|
|
33397
33413
|
var visibleMessagesIds = Object.keys(visibleMessages);
|
|
33398
33414
|
var messageId = visibleMessagesIds[visibleMessagesIds.length - 1];
|
|
33399
|
-
dispatch(getMessagesAC(channel, undefined, messageId));
|
|
33415
|
+
dispatch(getMessagesAC(channel, undefined, messageId, undefined, undefined, undefined, 'instant'));
|
|
33400
33416
|
setUnreadMessageId(messageId);
|
|
33401
33417
|
} else {
|
|
33402
33418
|
if (!channel.isLinkedChannel) {
|
|
@@ -33419,9 +33435,9 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33419
33435
|
}
|
|
33420
33436
|
setPreviousScrollTop(0);
|
|
33421
33437
|
setShouldPreserveScroll(false);
|
|
33422
|
-
|
|
33423
|
-
|
|
33424
|
-
|
|
33438
|
+
nextDisableRef.current = false;
|
|
33439
|
+
prevDisableRef.current = false;
|
|
33440
|
+
scrollToBottomRef.current = true;
|
|
33425
33441
|
setAllowEditDeleteIncomingMessage(allowEditDeleteIncomingMessage);
|
|
33426
33442
|
}, [channel.id]);
|
|
33427
33443
|
React.useEffect(function () {
|
|
@@ -33445,35 +33461,36 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33445
33461
|
setShouldPreserveScroll(true);
|
|
33446
33462
|
}
|
|
33447
33463
|
}
|
|
33448
|
-
if (
|
|
33449
|
-
if (
|
|
33464
|
+
if (loadingRef.current) {
|
|
33465
|
+
if (loadDirectionRef.current !== 'next') {
|
|
33450
33466
|
var lastVisibleMessage = document.getElementById(lastVisibleMessageId);
|
|
33451
33467
|
if (lastVisibleMessage) {
|
|
33452
33468
|
scrollRef.current.style.scrollBehavior = 'inherit';
|
|
33453
33469
|
scrollRef.current.scrollTop = lastVisibleMessage.offsetTop;
|
|
33454
33470
|
scrollRef.current.style.scrollBehavior = 'smooth';
|
|
33455
33471
|
}
|
|
33456
|
-
if (
|
|
33472
|
+
if (loadFromServerRef.current) {
|
|
33457
33473
|
setTimeout(function () {
|
|
33458
|
-
|
|
33459
|
-
|
|
33460
|
-
|
|
33461
|
-
|
|
33474
|
+
loadingRef.current = false;
|
|
33475
|
+
loadFromServerRef.current = false;
|
|
33476
|
+
nextDisableRef.current = false;
|
|
33477
|
+
var currentIndex = messagesIndexMapRef.current[lastVisibleMessageId];
|
|
33478
|
+
if (shouldLoadMessagesRef.current === 'prev' && typeof currentIndex === 'number' && currentIndex < 15) {
|
|
33462
33479
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
|
|
33463
33480
|
}
|
|
33464
|
-
if (
|
|
33481
|
+
if (shouldLoadMessagesRef.current === 'next' && typeof currentIndex === 'number' && currentIndex > messages.length - 15) {
|
|
33465
33482
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
|
|
33466
33483
|
}
|
|
33467
33484
|
}, 50);
|
|
33468
33485
|
} else {
|
|
33469
|
-
|
|
33470
|
-
if (
|
|
33486
|
+
loadingRef.current = false;
|
|
33487
|
+
if (shouldLoadMessagesRef.current === 'prev') {
|
|
33471
33488
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
|
|
33472
|
-
|
|
33489
|
+
shouldLoadMessagesRef.current = '';
|
|
33473
33490
|
}
|
|
33474
|
-
if (
|
|
33491
|
+
if (shouldLoadMessagesRef.current === 'next') {
|
|
33475
33492
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
|
|
33476
|
-
|
|
33493
|
+
shouldLoadMessagesRef.current = '';
|
|
33477
33494
|
}
|
|
33478
33495
|
}
|
|
33479
33496
|
} else {
|
|
@@ -33483,22 +33500,26 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33483
33500
|
scrollRef.current.scrollTop = _lastVisibleMessage.offsetTop - scrollRef.current.offsetHeight + _lastVisibleMessage.offsetHeight;
|
|
33484
33501
|
scrollRef.current.style.scrollBehavior = 'smooth';
|
|
33485
33502
|
}
|
|
33486
|
-
|
|
33487
|
-
|
|
33488
|
-
if (
|
|
33503
|
+
loadingRef.current = false;
|
|
33504
|
+
prevDisableRef.current = false;
|
|
33505
|
+
if (shouldLoadMessagesRef.current === 'prev') {
|
|
33489
33506
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.PREV, LOAD_MAX_MESSAGE_COUNT);
|
|
33490
|
-
|
|
33507
|
+
shouldLoadMessagesRef.current = '';
|
|
33491
33508
|
}
|
|
33492
|
-
if (
|
|
33509
|
+
if (shouldLoadMessagesRef.current === 'next') {
|
|
33493
33510
|
handleLoadMoreMessages(MESSAGE_LOAD_DIRECTION.NEXT, LOAD_MAX_MESSAGE_COUNT);
|
|
33494
|
-
|
|
33511
|
+
shouldLoadMessagesRef.current = '';
|
|
33495
33512
|
}
|
|
33496
33513
|
}
|
|
33497
33514
|
}
|
|
33498
33515
|
renderTopDate();
|
|
33499
|
-
if (
|
|
33500
|
-
|
|
33501
|
-
|
|
33516
|
+
if (scrollToBottomRef.current) {
|
|
33517
|
+
if (channel.backToLinkedChannel) {
|
|
33518
|
+
dispatch(scrollToNewMessageAC(false));
|
|
33519
|
+
} else {
|
|
33520
|
+
dispatch(scrollToNewMessageAC(true));
|
|
33521
|
+
}
|
|
33522
|
+
scrollToBottomRef.current = false;
|
|
33502
33523
|
}
|
|
33503
33524
|
if (shouldPreserveScroll && scrollRef.current && previousScrollTop > 0) {
|
|
33504
33525
|
requestAnimationFrame(function () {
|
|
@@ -33515,9 +33536,9 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33515
33536
|
React.useEffect(function () {
|
|
33516
33537
|
log.info('connection status is changed.. .... ', connectionStatus, 'channel ... ', channel);
|
|
33517
33538
|
if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
|
|
33518
|
-
|
|
33519
|
-
|
|
33520
|
-
|
|
33539
|
+
loadingRef.current = false;
|
|
33540
|
+
prevDisableRef.current = false;
|
|
33541
|
+
nextDisableRef.current = false;
|
|
33521
33542
|
clearMessagesMap();
|
|
33522
33543
|
removeAllMessages();
|
|
33523
33544
|
if (channel.id) {
|
|
@@ -33526,7 +33547,8 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33526
33547
|
}
|
|
33527
33548
|
}, [connectionStatus]);
|
|
33528
33549
|
React.useEffect(function () {
|
|
33529
|
-
|
|
33550
|
+
var unreadScrollTo = getUnreadScrollTo();
|
|
33551
|
+
if (channel.newMessageCount && channel.newMessageCount > 0 && unreadScrollTo) {
|
|
33530
33552
|
if (scrollRef.current) {
|
|
33531
33553
|
scrollRef.current.style.scrollBehavior = 'inherit';
|
|
33532
33554
|
}
|
|
@@ -33539,7 +33561,14 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33539
33561
|
setUnreadScrollTo(false);
|
|
33540
33562
|
}
|
|
33541
33563
|
}
|
|
33542
|
-
});
|
|
33564
|
+
}, [channel.id, channel.newMessageCount, channel.lastDisplayedMessageId]);
|
|
33565
|
+
React.useEffect(function () {
|
|
33566
|
+
return function () {
|
|
33567
|
+
if (hideTopDateTimeout.current) {
|
|
33568
|
+
clearTimeout(hideTopDateTimeout.current);
|
|
33569
|
+
}
|
|
33570
|
+
};
|
|
33571
|
+
}, []);
|
|
33543
33572
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, isDragging && !(attachmentsPreview !== null && attachmentsPreview !== void 0 && attachmentsPreview.show && mediaFile) && (/*#__PURE__*/React__default.createElement(DragAndDropContainer, {
|
|
33544
33573
|
id: 'draggingContainer',
|
|
33545
33574
|
draggable: true,
|
|
@@ -33582,14 +33611,12 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33582
33611
|
dateDividerBackgroundColor: dateDividerBackgroundColor || overlayBackground,
|
|
33583
33612
|
dateDividerBorderRadius: dateDividerBorderRadius,
|
|
33584
33613
|
topOffset: scrollRef && scrollRef.current && scrollRef.current.offsetTop
|
|
33585
|
-
}, /*#__PURE__*/React__default.createElement("span", {
|
|
33586
|
-
ref: messageTopDateRef
|
|
33587
|
-
}))), /*#__PURE__*/React__default.createElement(Container$h, {
|
|
33614
|
+
}, /*#__PURE__*/React__default.createElement("span", null, topDateLabel))), /*#__PURE__*/React__default.createElement(Container$h, {
|
|
33588
33615
|
id: 'scrollableDiv',
|
|
33589
33616
|
className: isScrolling ? 'show-scrollbar' : '',
|
|
33590
33617
|
ref: scrollRef,
|
|
33591
33618
|
stopScrolling: stopScrolling,
|
|
33592
|
-
onScroll:
|
|
33619
|
+
onScroll: onScroll,
|
|
33593
33620
|
onMouseEnter: function onMouseEnter() {
|
|
33594
33621
|
return setIsScrolling(true);
|
|
33595
33622
|
},
|
|
@@ -33608,8 +33635,10 @@ var MessageList = function MessageList(_ref2) {
|
|
|
33608
33635
|
var prevMessage = messages[index - 1];
|
|
33609
33636
|
var nextMessage = messages[index + 1];
|
|
33610
33637
|
var isUnreadMessage = !!(unreadMessageId && unreadMessageId === message.id && nextMessage) && !channel.backToLinkedChannel;
|
|
33611
|
-
|
|
33612
|
-
return /*#__PURE__*/React__default.createElement(React__default.Fragment,
|
|
33638
|
+
messagesIndexMapRef.current[message.id] = index;
|
|
33639
|
+
return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
|
|
33640
|
+
key: message.id || message.tid
|
|
33641
|
+
}, /*#__PURE__*/React__default.createElement(CreateMessageDateDivider, {
|
|
33613
33642
|
noMargin: !isUnreadMessage && prevMessage && prevMessage.type === 'system' && message.type !== 'system',
|
|
33614
33643
|
theme: theme,
|
|
33615
33644
|
lastIndex: false,
|