stream-chat-react-native-core 6.7.3-beta.2 → 6.7.3-beta.3
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/lib/commonjs/components/Channel/Channel.js +273 -281
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +133 -147
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js +7 -12
- package/lib/commonjs/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +167 -179
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js +60 -37
- package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +450 -459
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/hooks/index.js +11 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useStableCallback.js +13 -0
- package/lib/commonjs/hooks/useStableCallback.js.map +1 -0
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +273 -281
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useMessageListPagination.js +133 -147
- package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js +7 -12
- package/lib/module/components/KeyboardCompatibleView/KeyboardCompatibleView.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +167 -179
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useMessageList.js +60 -37
- package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +450 -459
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/hooks/index.js +11 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useStableCallback.js +13 -0
- package/lib/module/hooks/useStableCallback.js.map +1 -0
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +3 -3
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
- package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts +3 -0
- package/lib/typescript/components/KeyboardCompatibleView/KeyboardCompatibleView.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts +4 -0
- package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +1 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useStableCallback.d.ts +26 -0
- package/lib/typescript/hooks/useStableCallback.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +424 -408
- package/src/components/Channel/hooks/useMessageListPagination.tsx +152 -147
- package/src/components/KeyboardCompatibleView/KeyboardCompatibleView.tsx +6 -4
- package/src/components/MessageList/MessageList.tsx +147 -112
- package/src/components/MessageList/hooks/useMessageList.ts +69 -38
- package/src/contexts/messageInputContext/MessageInputContext.tsx +293 -267
- package/src/contexts/messageInputContext/__tests__/pickFile.test.tsx +2 -1
- package/src/contexts/messagesContext/MessagesContext.tsx +1 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useStableCallback.ts +37 -0
- package/src/version.json +1 -1
|
@@ -37,6 +37,7 @@ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
|
37
37
|
var _ThreadContext = require("../../contexts/threadContext/ThreadContext");
|
|
38
38
|
var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
|
|
39
39
|
var _TypingContext = require("../../contexts/typingContext/TypingContext");
|
|
40
|
+
var _hooks = require("../../hooks");
|
|
40
41
|
var _useAppStateListener = require("../../hooks/useAppStateListener");
|
|
41
42
|
var _icons = require("../../icons");
|
|
42
43
|
var _native = require("../../native");
|
|
@@ -518,6 +519,9 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
518
519
|
setTargetedMessage = _useTargetedMessage.setTargetedMessage,
|
|
519
520
|
targetedMessage = _useTargetedMessage.targetedMessage;
|
|
520
521
|
var uploadAbortControllerRef = (0, _react.useRef)(new Map());
|
|
522
|
+
var optimisticallyUpdatedNewMessages = (0, _react.useMemo)(function () {
|
|
523
|
+
return new Set();
|
|
524
|
+
}, []);
|
|
521
525
|
var channelId = (channel == null ? void 0 : channel.id) || '';
|
|
522
526
|
var pollCreationEnabled = !channel.disconnected && !!(channel != null && channel.id) && (channel == null || (_channel$getConfig = channel.getConfig()) == null ? void 0 : _channel$getConfig.polls);
|
|
523
527
|
var _useChannelDataState = (0, _useChannelDataState2.useChannelDataState)(channel),
|
|
@@ -559,7 +563,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
559
563
|
}
|
|
560
564
|
}, stateUpdateThrottleInterval, throttleOptions);
|
|
561
565
|
}, [stateUpdateThrottleInterval, channel, copyStateFromChannel, copyMessagesStateFromChannel]);
|
|
562
|
-
var handleEvent = function
|
|
566
|
+
var handleEvent = (0, _hooks.useStableCallback)(function (event) {
|
|
563
567
|
if (shouldSyncChannel) {
|
|
564
568
|
if (event.type.startsWith('poll.') || event.type === 'user.watching.start' || event.type === 'user.watching.stop') {
|
|
565
569
|
return;
|
|
@@ -599,8 +603,13 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
599
603
|
setChannelUnreadState(undefined);
|
|
600
604
|
}
|
|
601
605
|
if (channel && channel.initialized) {
|
|
602
|
-
if (event.type === 'message.new') {
|
|
603
|
-
|
|
606
|
+
if (event.type === 'message.new' || event.type === 'notification.message_new') {
|
|
607
|
+
var _event$message$id, _event$message2, _event$user2;
|
|
608
|
+
var _messageId = (_event$message$id = (_event$message2 = event.message) == null ? void 0 : _event$message2.id) != null ? _event$message$id : '';
|
|
609
|
+
if (((_event$user2 = event.user) == null ? void 0 : _event$user2.id) !== client.userID || !optimisticallyUpdatedNewMessages.has(_messageId)) {
|
|
610
|
+
copyMessagesStateFromChannelThrottled();
|
|
611
|
+
}
|
|
612
|
+
optimisticallyUpdatedNewMessages["delete"](_messageId);
|
|
604
613
|
return;
|
|
605
614
|
}
|
|
606
615
|
if (event.type === 'message.read' || event.type === 'notification.mark_read') {
|
|
@@ -610,7 +619,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
610
619
|
copyChannelState();
|
|
611
620
|
}
|
|
612
621
|
}
|
|
613
|
-
};
|
|
622
|
+
});
|
|
614
623
|
(0, _react.useEffect)(function () {
|
|
615
624
|
var listener;
|
|
616
625
|
var initChannel = function () {
|
|
@@ -739,7 +748,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
739
748
|
}
|
|
740
749
|
}, [thread == null ? void 0 : thread.id, channelId]);
|
|
741
750
|
(0, _useAppStateListener.useAppStateListener)(undefined, handleAppBackground);
|
|
742
|
-
var
|
|
751
|
+
var markReadInternal = (0, _throttle["default"])(function () {
|
|
743
752
|
var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2(options) {
|
|
744
753
|
var _ref3, _ref3$updateChannelUn, updateChannelUnreadState, response;
|
|
745
754
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
@@ -789,147 +798,138 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
789
798
|
return _ref2.apply(this, arguments);
|
|
790
799
|
};
|
|
791
800
|
}(), defaultThrottleInterval, throttleOptions);
|
|
792
|
-
var
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
break;
|
|
801
|
-
}
|
|
802
|
-
return _context3.abrupt("return");
|
|
803
|
-
case 2:
|
|
804
|
-
setThreadLoadingMore(true);
|
|
805
|
-
_context3.prev = 3;
|
|
806
|
-
parentID = thread.id;
|
|
807
|
-
limit = 50;
|
|
808
|
-
channel.state.threads[parentID] = [];
|
|
809
|
-
_context3.next = 9;
|
|
810
|
-
return channel.getReplies(parentID, {
|
|
811
|
-
limit: limit
|
|
812
|
-
});
|
|
813
|
-
case 9:
|
|
814
|
-
queryResponse = _context3.sent;
|
|
815
|
-
updatedHasMore = queryResponse.messages.length === limit;
|
|
816
|
-
updatedThreadMessages = channel.state.threads[parentID] || [];
|
|
817
|
-
loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
|
|
818
|
-
_context3.next = 15;
|
|
819
|
-
return channel.getMessagesById([parentID]);
|
|
820
|
-
case 15:
|
|
821
|
-
_yield$channel$getMes = _context3.sent;
|
|
822
|
-
messages = _yield$channel$getMes.messages;
|
|
823
|
-
_messages = (0, _slicedToArray2["default"])(messages, 1), threadMessage = _messages[0];
|
|
824
|
-
if (threadMessage && !threadInstance) {
|
|
825
|
-
formattedMessage = channel.state.formatMessage(threadMessage);
|
|
826
|
-
setThread(formattedMessage);
|
|
827
|
-
}
|
|
828
|
-
_context3.next = 27;
|
|
801
|
+
var markRead = (0, _hooks.useStableCallback)(markReadInternal);
|
|
802
|
+
var reloadThread = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
|
|
803
|
+
var parentID, limit, queryResponse, updatedHasMore, updatedThreadMessages, _yield$channel$getMes, messages, _messages, threadMessage, formattedMessage;
|
|
804
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
805
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
806
|
+
case 0:
|
|
807
|
+
if (!(!channel || !(thread != null && thread.id))) {
|
|
808
|
+
_context3.next = 2;
|
|
829
809
|
break;
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
setError(
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
810
|
+
}
|
|
811
|
+
return _context3.abrupt("return");
|
|
812
|
+
case 2:
|
|
813
|
+
setThreadLoadingMore(true);
|
|
814
|
+
_context3.prev = 3;
|
|
815
|
+
parentID = thread.id;
|
|
816
|
+
limit = 50;
|
|
817
|
+
channel.state.threads[parentID] = [];
|
|
818
|
+
_context3.next = 9;
|
|
819
|
+
return channel.getReplies(parentID, {
|
|
820
|
+
limit: limit
|
|
821
|
+
});
|
|
822
|
+
case 9:
|
|
823
|
+
queryResponse = _context3.sent;
|
|
824
|
+
updatedHasMore = queryResponse.messages.length === limit;
|
|
825
|
+
updatedThreadMessages = channel.state.threads[parentID] || [];
|
|
826
|
+
loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
|
|
827
|
+
_context3.next = 15;
|
|
828
|
+
return channel.getMessagesById([parentID]);
|
|
829
|
+
case 15:
|
|
830
|
+
_yield$channel$getMes = _context3.sent;
|
|
831
|
+
messages = _yield$channel$getMes.messages;
|
|
832
|
+
_messages = (0, _slicedToArray2["default"])(messages, 1), threadMessage = _messages[0];
|
|
833
|
+
if (threadMessage && !threadInstance) {
|
|
834
|
+
formattedMessage = channel.state.formatMessage(threadMessage);
|
|
835
|
+
setThread(formattedMessage);
|
|
836
|
+
}
|
|
837
|
+
_context3.next = 27;
|
|
838
|
+
break;
|
|
839
|
+
case 21:
|
|
840
|
+
_context3.prev = 21;
|
|
841
|
+
_context3.t0 = _context3["catch"](3);
|
|
842
|
+
console.warn('Thread loading request failed with error', _context3.t0);
|
|
843
|
+
if (_context3.t0 instanceof Error) {
|
|
844
|
+
setError(_context3.t0);
|
|
845
|
+
} else {
|
|
846
|
+
setError(true);
|
|
847
|
+
}
|
|
848
|
+
setThreadLoadingMore(false);
|
|
849
|
+
throw _context3.t0;
|
|
850
|
+
case 27:
|
|
851
|
+
case "end":
|
|
852
|
+
return _context3.stop();
|
|
853
|
+
}
|
|
854
|
+
}, _callee3, null, [[3, 21]]);
|
|
855
|
+
})));
|
|
856
|
+
var resyncChannel = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
|
|
857
|
+
var parseMessage, _channelMessagesState, failedMessages, failedThreadMessages;
|
|
858
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
859
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
860
|
+
case 0:
|
|
861
|
+
if (!(!channel || syncingChannelRef.current)) {
|
|
862
|
+
_context4.next = 2;
|
|
863
|
+
break;
|
|
864
|
+
}
|
|
865
|
+
return _context4.abrupt("return");
|
|
866
|
+
case 2:
|
|
867
|
+
syncingChannelRef.current = true;
|
|
868
|
+
setError(false);
|
|
869
|
+
if (!(channelMessagesState != null && channelMessagesState.messages)) {
|
|
869
870
|
_context4.next = 7;
|
|
870
|
-
return channel == null ? void 0 : channel.watch({
|
|
871
|
-
messages: {
|
|
872
|
-
limit: channelMessagesState.messages.length + 30
|
|
873
|
-
}
|
|
874
|
-
});
|
|
875
|
-
case 7:
|
|
876
|
-
parseMessage = function parseMessage(message) {
|
|
877
|
-
var _message$pinned_at, _message$updated_at;
|
|
878
|
-
return Object.assign({}, message, {
|
|
879
|
-
created_at: message.created_at.toString(),
|
|
880
|
-
pinned_at: (_message$pinned_at = message.pinned_at) == null ? void 0 : _message$pinned_at.toString(),
|
|
881
|
-
updated_at: (_message$updated_at = message.updated_at) == null ? void 0 : _message$updated_at.toString()
|
|
882
|
-
});
|
|
883
|
-
};
|
|
884
|
-
_context4.prev = 8;
|
|
885
|
-
if (thread) {
|
|
886
|
-
_context4.next = 16;
|
|
887
|
-
break;
|
|
888
|
-
}
|
|
889
|
-
copyChannelState();
|
|
890
|
-
failedMessages = (_channelMessagesState = channelMessagesState.messages) == null ? void 0 : _channelMessagesState.filter(function (message) {
|
|
891
|
-
return message.status === _utils.MessageStatusTypes.FAILED;
|
|
892
|
-
}).map(parseMessage);
|
|
893
|
-
if (failedMessages != null && failedMessages.length) {
|
|
894
|
-
channel.state.addMessagesSorted(failedMessages);
|
|
895
|
-
}
|
|
896
|
-
channel.state.setIsUpToDate(true);
|
|
897
|
-
_context4.next = 20;
|
|
898
871
|
break;
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
return message.status === _utils.MessageStatusTypes.FAILED;
|
|
905
|
-
}).map(parseMessage) : [];
|
|
906
|
-
if (failedThreadMessages.length) {
|
|
907
|
-
channel.state.addMessagesSorted(failedThreadMessages);
|
|
908
|
-
setThreadMessages((0, _toConsumableArray2["default"])(channel.state.threads[thread.id]));
|
|
872
|
+
}
|
|
873
|
+
_context4.next = 7;
|
|
874
|
+
return channel == null ? void 0 : channel.watch({
|
|
875
|
+
messages: {
|
|
876
|
+
limit: channelMessagesState.messages.length + 30
|
|
909
877
|
}
|
|
910
|
-
|
|
911
|
-
|
|
878
|
+
});
|
|
879
|
+
case 7:
|
|
880
|
+
parseMessage = function parseMessage(message) {
|
|
881
|
+
var _message$pinned_at, _message$updated_at;
|
|
882
|
+
return Object.assign({}, message, {
|
|
883
|
+
created_at: message.created_at.toString(),
|
|
884
|
+
pinned_at: (_message$pinned_at = message.pinned_at) == null ? void 0 : _message$pinned_at.toString(),
|
|
885
|
+
updated_at: (_message$updated_at = message.updated_at) == null ? void 0 : _message$updated_at.toString()
|
|
886
|
+
});
|
|
887
|
+
};
|
|
888
|
+
_context4.prev = 8;
|
|
889
|
+
if (thread) {
|
|
890
|
+
_context4.next = 16;
|
|
912
891
|
break;
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
892
|
+
}
|
|
893
|
+
copyChannelState();
|
|
894
|
+
failedMessages = (_channelMessagesState = channelMessagesState.messages) == null ? void 0 : _channelMessagesState.filter(function (message) {
|
|
895
|
+
return message.status === _utils.MessageStatusTypes.FAILED;
|
|
896
|
+
}).map(parseMessage);
|
|
897
|
+
if (failedMessages != null && failedMessages.length) {
|
|
898
|
+
channel.state.addMessagesSorted(failedMessages);
|
|
899
|
+
}
|
|
900
|
+
channel.state.setIsUpToDate(true);
|
|
901
|
+
_context4.next = 20;
|
|
902
|
+
break;
|
|
903
|
+
case 16:
|
|
904
|
+
_context4.next = 18;
|
|
905
|
+
return reloadThread();
|
|
906
|
+
case 18:
|
|
907
|
+
failedThreadMessages = thread ? threadMessages.filter(function (message) {
|
|
908
|
+
return message.status === _utils.MessageStatusTypes.FAILED;
|
|
909
|
+
}).map(parseMessage) : [];
|
|
910
|
+
if (failedThreadMessages.length) {
|
|
911
|
+
channel.state.addMessagesSorted(failedThreadMessages);
|
|
912
|
+
setThreadMessages((0, _toConsumableArray2["default"])(channel.state.threads[thread.id]));
|
|
913
|
+
}
|
|
914
|
+
case 20:
|
|
915
|
+
_context4.next = 25;
|
|
916
|
+
break;
|
|
917
|
+
case 22:
|
|
918
|
+
_context4.prev = 22;
|
|
919
|
+
_context4.t0 = _context4["catch"](8);
|
|
920
|
+
if (_context4.t0 instanceof Error) {
|
|
921
|
+
setError(_context4.t0);
|
|
922
|
+
} else {
|
|
923
|
+
setError(true);
|
|
924
|
+
}
|
|
925
|
+
case 25:
|
|
926
|
+
syncingChannelRef.current = false;
|
|
927
|
+
case 26:
|
|
928
|
+
case "end":
|
|
929
|
+
return _context4.stop();
|
|
930
|
+
}
|
|
931
|
+
}, _callee4, null, [[8, 22]]);
|
|
932
|
+
})));
|
|
933
933
|
var resyncChannelRef = (0, _react.useRef)(resyncChannel);
|
|
934
934
|
resyncChannelRef.current = resyncChannel;
|
|
935
935
|
(0, _react.useEffect)(function () {
|
|
@@ -964,32 +964,27 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
964
964
|
}
|
|
965
965
|
};
|
|
966
966
|
var clientChannelConfig = getChannelConfigSafely();
|
|
967
|
-
var reloadChannel = function () {
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
return function reloadChannel() {
|
|
989
|
-
return _ref6.apply(this, arguments);
|
|
990
|
-
};
|
|
991
|
-
}();
|
|
992
|
-
var loadChannelAroundMessage = function () {
|
|
967
|
+
var reloadChannel = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
|
|
968
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
969
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
970
|
+
case 0:
|
|
971
|
+
_context5.prev = 0;
|
|
972
|
+
_context5.next = 3;
|
|
973
|
+
return loadLatestMessages();
|
|
974
|
+
case 3:
|
|
975
|
+
_context5.next = 8;
|
|
976
|
+
break;
|
|
977
|
+
case 5:
|
|
978
|
+
_context5.prev = 5;
|
|
979
|
+
_context5.t0 = _context5["catch"](0);
|
|
980
|
+
console.warn('Reloading channel failed with error:', _context5.t0);
|
|
981
|
+
case 8:
|
|
982
|
+
case "end":
|
|
983
|
+
return _context5.stop();
|
|
984
|
+
}
|
|
985
|
+
}, _callee5, null, [[0, 5]]);
|
|
986
|
+
})));
|
|
987
|
+
var loadChannelAroundMessage = (0, _hooks.useStableCallback)(function () {
|
|
993
988
|
var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6(_ref7) {
|
|
994
989
|
var messageIdToLoadAround;
|
|
995
990
|
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
@@ -1050,23 +1045,28 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1050
1045
|
}
|
|
1051
1046
|
}, _callee6, null, [[3, 24], [6, 14]]);
|
|
1052
1047
|
}));
|
|
1053
|
-
return function
|
|
1048
|
+
return function (_x2) {
|
|
1054
1049
|
return _ref8.apply(this, arguments);
|
|
1055
1050
|
};
|
|
1056
|
-
}();
|
|
1057
|
-
var updateMessage = function
|
|
1051
|
+
}());
|
|
1052
|
+
var updateMessage = (0, _hooks.useStableCallback)(function (updatedMessage) {
|
|
1058
1053
|
var extraState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
1054
|
+
var throttled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
1059
1055
|
if (!channel) {
|
|
1060
1056
|
return;
|
|
1061
1057
|
}
|
|
1062
1058
|
channel.state.addMessageSorted(updatedMessage, true);
|
|
1063
|
-
|
|
1059
|
+
if (throttled) {
|
|
1060
|
+
copyMessagesStateFromChannelThrottled();
|
|
1061
|
+
} else {
|
|
1062
|
+
copyMessagesStateFromChannel(channel);
|
|
1063
|
+
}
|
|
1064
1064
|
if (thread && updatedMessage.parent_id) {
|
|
1065
1065
|
extraState.threadMessages = channel.state.threads[updatedMessage.parent_id] || [];
|
|
1066
1066
|
setThreadMessages(extraState.threadMessages);
|
|
1067
1067
|
}
|
|
1068
|
-
};
|
|
1069
|
-
var replaceMessage = function
|
|
1068
|
+
});
|
|
1069
|
+
var replaceMessage = (0, _hooks.useStableCallback)(function (oldMessage, newMessage) {
|
|
1070
1070
|
if (channel) {
|
|
1071
1071
|
channel.state.removeMessage(oldMessage);
|
|
1072
1072
|
channel.state.addMessageSorted(newMessage, true);
|
|
@@ -1076,8 +1076,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1076
1076
|
setThreadMessages(_threadMessages);
|
|
1077
1077
|
}
|
|
1078
1078
|
}
|
|
1079
|
-
};
|
|
1080
|
-
var createMessagePreview = function
|
|
1079
|
+
});
|
|
1080
|
+
var createMessagePreview = (0, _hooks.useStableCallback)(function (_ref9) {
|
|
1081
1081
|
var attachments = _ref9.attachments,
|
|
1082
1082
|
mentioned_users = _ref9.mentioned_users,
|
|
1083
1083
|
parent_id = _ref9.parent_id,
|
|
@@ -1120,8 +1120,8 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1120
1120
|
preview.quoted_message = _quotedMessage;
|
|
1121
1121
|
}
|
|
1122
1122
|
return preview;
|
|
1123
|
-
};
|
|
1124
|
-
var uploadPendingAttachments = function () {
|
|
1123
|
+
});
|
|
1124
|
+
var uploadPendingAttachments = (0, _hooks.useStableCallback)(function () {
|
|
1125
1125
|
var _ref10 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee7(message) {
|
|
1126
1126
|
var _updatedMessage$attac;
|
|
1127
1127
|
var updatedMessage, i, _updatedMessage$attac2, attachment, image, file, _image$name, filename, controller, compressedUri, contentType, uploadResponse, _controller, response;
|
|
@@ -1232,11 +1232,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1232
1232
|
}
|
|
1233
1233
|
}, _callee7);
|
|
1234
1234
|
}));
|
|
1235
|
-
return function
|
|
1235
|
+
return function (_x3) {
|
|
1236
1236
|
return _ref10.apply(this, arguments);
|
|
1237
1237
|
};
|
|
1238
|
-
}();
|
|
1239
|
-
var sendMessageRequest = function () {
|
|
1238
|
+
}());
|
|
1239
|
+
var sendMessageRequest = (0, _hooks.useStableCallback)(function () {
|
|
1240
1240
|
var _ref11 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee8(message, retrying) {
|
|
1241
1241
|
var updatedMessage, extraFields, attachments, id, mentioned_users, parent_id, text, mentionedUserIds, messageData, messageResponse, _updatedMessage;
|
|
1242
1242
|
return _regenerator["default"].wrap(function _callee8$(_context8) {
|
|
@@ -1305,10 +1305,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1305
1305
|
if (retrying) {
|
|
1306
1306
|
replaceMessage(message, messageResponse.message);
|
|
1307
1307
|
} else {
|
|
1308
|
-
updateMessage(messageResponse.message);
|
|
1308
|
+
updateMessage(messageResponse.message, {}, true);
|
|
1309
1309
|
}
|
|
1310
1310
|
case 27:
|
|
1311
|
-
_context8.next =
|
|
1311
|
+
_context8.next = 40;
|
|
1312
1312
|
break;
|
|
1313
1313
|
case 29:
|
|
1314
1314
|
_context8.prev = 29;
|
|
@@ -1322,27 +1322,28 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1322
1322
|
threadInstance == null || threadInstance.upsertReplyLocally == null || threadInstance.upsertReplyLocally({
|
|
1323
1323
|
message: _updatedMessage
|
|
1324
1324
|
});
|
|
1325
|
+
optimisticallyUpdatedNewMessages["delete"](message.id);
|
|
1325
1326
|
if (!enableOfflineSupport) {
|
|
1326
|
-
_context8.next =
|
|
1327
|
+
_context8.next = 40;
|
|
1327
1328
|
break;
|
|
1328
1329
|
}
|
|
1329
|
-
_context8.next =
|
|
1330
|
+
_context8.next = 40;
|
|
1330
1331
|
return dbApi.updateMessage({
|
|
1331
1332
|
message: Object.assign({}, message, {
|
|
1332
1333
|
cid: channel.cid
|
|
1333
1334
|
})
|
|
1334
1335
|
});
|
|
1335
|
-
case
|
|
1336
|
+
case 40:
|
|
1336
1337
|
case "end":
|
|
1337
1338
|
return _context8.stop();
|
|
1338
1339
|
}
|
|
1339
1340
|
}, _callee8, null, [[0, 29]]);
|
|
1340
1341
|
}));
|
|
1341
|
-
return function
|
|
1342
|
+
return function (_x4, _x5) {
|
|
1342
1343
|
return _ref11.apply(this, arguments);
|
|
1343
1344
|
};
|
|
1344
|
-
}();
|
|
1345
|
-
var sendMessage = function () {
|
|
1345
|
+
}());
|
|
1346
|
+
var sendMessage = (0, _hooks.useStableCallback)(function () {
|
|
1346
1347
|
var _ref12 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee9(message) {
|
|
1347
1348
|
var _channel$state;
|
|
1348
1349
|
var messagePreview;
|
|
@@ -1362,31 +1363,32 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1362
1363
|
threadInstance == null || threadInstance.upsertReplyLocally == null || threadInstance.upsertReplyLocally({
|
|
1363
1364
|
message: messagePreview
|
|
1364
1365
|
});
|
|
1366
|
+
optimisticallyUpdatedNewMessages.add(messagePreview.id);
|
|
1365
1367
|
if (!enableOfflineSupport) {
|
|
1366
|
-
_context9.next =
|
|
1368
|
+
_context9.next = 8;
|
|
1367
1369
|
break;
|
|
1368
1370
|
}
|
|
1369
|
-
_context9.next =
|
|
1371
|
+
_context9.next = 8;
|
|
1370
1372
|
return dbApi.upsertMessages({
|
|
1371
1373
|
messages: [Object.assign({}, messagePreview, {
|
|
1372
1374
|
cid: channel.cid,
|
|
1373
1375
|
status: _utils.MessageStatusTypes.FAILED
|
|
1374
1376
|
})]
|
|
1375
1377
|
});
|
|
1376
|
-
case
|
|
1377
|
-
_context9.next =
|
|
1378
|
+
case 8:
|
|
1379
|
+
_context9.next = 10;
|
|
1378
1380
|
return sendMessageRequest(messagePreview);
|
|
1379
|
-
case
|
|
1381
|
+
case 10:
|
|
1380
1382
|
case "end":
|
|
1381
1383
|
return _context9.stop();
|
|
1382
1384
|
}
|
|
1383
1385
|
}, _callee9);
|
|
1384
1386
|
}));
|
|
1385
|
-
return function
|
|
1387
|
+
return function (_x6) {
|
|
1386
1388
|
return _ref12.apply(this, arguments);
|
|
1387
1389
|
};
|
|
1388
|
-
}();
|
|
1389
|
-
var retrySendMessage = function () {
|
|
1390
|
+
}());
|
|
1391
|
+
var retrySendMessage = (0, _hooks.useStableCallback)(function () {
|
|
1390
1392
|
var _ref13 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee10(message) {
|
|
1391
1393
|
var statusPendingMessage, messageWithoutReservedFields;
|
|
1392
1394
|
return _regenerator["default"].wrap(function _callee10$(_context10) {
|
|
@@ -1407,27 +1409,27 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1407
1409
|
}
|
|
1408
1410
|
}, _callee10);
|
|
1409
1411
|
}));
|
|
1410
|
-
return function
|
|
1412
|
+
return function (_x7) {
|
|
1411
1413
|
return _ref13.apply(this, arguments);
|
|
1412
1414
|
};
|
|
1413
|
-
}();
|
|
1414
|
-
var editMessage = function
|
|
1415
|
+
}());
|
|
1416
|
+
var editMessage = (0, _hooks.useStableCallback)(function (updatedMessage) {
|
|
1415
1417
|
return doUpdateMessageRequest ? doUpdateMessageRequest((channel == null ? void 0 : channel.cid) || '', updatedMessage) : client.updateMessage(updatedMessage);
|
|
1416
|
-
};
|
|
1417
|
-
var setEditingState = function
|
|
1418
|
+
});
|
|
1419
|
+
var setEditingState = (0, _hooks.useStableCallback)(function (message) {
|
|
1418
1420
|
clearQuotedMessageState();
|
|
1419
1421
|
setEditing(message);
|
|
1420
|
-
};
|
|
1421
|
-
var setQuotedMessageState = function
|
|
1422
|
+
});
|
|
1423
|
+
var setQuotedMessageState = (0, _hooks.useStableCallback)(function (messageOrBoolean) {
|
|
1422
1424
|
setQuotedMessage(messageOrBoolean);
|
|
1423
|
-
};
|
|
1424
|
-
var clearEditingState = function
|
|
1425
|
+
});
|
|
1426
|
+
var clearEditingState = (0, _hooks.useStableCallback)(function () {
|
|
1425
1427
|
return setEditing(undefined);
|
|
1426
|
-
};
|
|
1427
|
-
var clearQuotedMessageState = function
|
|
1428
|
+
});
|
|
1429
|
+
var clearQuotedMessageState = (0, _hooks.useStableCallback)(function () {
|
|
1428
1430
|
return setQuotedMessage(undefined);
|
|
1429
|
-
};
|
|
1430
|
-
var removeMessage = function () {
|
|
1431
|
+
});
|
|
1432
|
+
var removeMessage = (0, _hooks.useStableCallback)(function () {
|
|
1431
1433
|
var _ref14 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee11(message) {
|
|
1432
1434
|
return _regenerator["default"].wrap(function _callee11$(_context11) {
|
|
1433
1435
|
while (1) switch (_context11.prev = _context11.next) {
|
|
@@ -1453,11 +1455,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1453
1455
|
}
|
|
1454
1456
|
}, _callee11);
|
|
1455
1457
|
}));
|
|
1456
|
-
return function
|
|
1458
|
+
return function (_x8) {
|
|
1457
1459
|
return _ref14.apply(this, arguments);
|
|
1458
1460
|
};
|
|
1459
|
-
}();
|
|
1460
|
-
var sendReaction = function () {
|
|
1461
|
+
}());
|
|
1462
|
+
var sendReaction = (0, _hooks.useStableCallback)(function () {
|
|
1461
1463
|
var _ref15 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee12(type, messageId) {
|
|
1462
1464
|
var payload, sendReactionResponse;
|
|
1463
1465
|
return _regenerator["default"].wrap(function _callee12$(_context12) {
|
|
@@ -1515,11 +1517,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1515
1517
|
}
|
|
1516
1518
|
}, _callee12);
|
|
1517
1519
|
}));
|
|
1518
|
-
return function
|
|
1520
|
+
return function (_x9, _x10) {
|
|
1519
1521
|
return _ref15.apply(this, arguments);
|
|
1520
1522
|
};
|
|
1521
|
-
}();
|
|
1522
|
-
var deleteMessage = function () {
|
|
1523
|
+
}());
|
|
1524
|
+
var deleteMessage = (0, _hooks.useStableCallback)(function () {
|
|
1523
1525
|
var _ref16 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee13(message) {
|
|
1524
1526
|
var updatedMessage, data;
|
|
1525
1527
|
return _regenerator["default"].wrap(function _callee13$(_context13) {
|
|
@@ -1595,11 +1597,11 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1595
1597
|
}
|
|
1596
1598
|
}, _callee13);
|
|
1597
1599
|
}));
|
|
1598
|
-
return function
|
|
1600
|
+
return function (_x11) {
|
|
1599
1601
|
return _ref16.apply(this, arguments);
|
|
1600
1602
|
};
|
|
1601
|
-
}();
|
|
1602
|
-
var deleteReaction = function () {
|
|
1603
|
+
}());
|
|
1604
|
+
var deleteReaction = (0, _hooks.useStableCallback)(function () {
|
|
1603
1605
|
var _ref17 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee14(type, messageId) {
|
|
1604
1606
|
var payload;
|
|
1605
1607
|
return _regenerator["default"].wrap(function _callee14$(_context14) {
|
|
@@ -1645,10 +1647,10 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1645
1647
|
}
|
|
1646
1648
|
}, _callee14);
|
|
1647
1649
|
}));
|
|
1648
|
-
return function
|
|
1650
|
+
return function (_x12, _x13) {
|
|
1649
1651
|
return _ref17.apply(this, arguments);
|
|
1650
1652
|
};
|
|
1651
|
-
}();
|
|
1653
|
+
}());
|
|
1652
1654
|
var openThread = (0, _react.useCallback)(function (message) {
|
|
1653
1655
|
setThread(message);
|
|
1654
1656
|
if (channel.initialized) {
|
|
@@ -1666,62 +1668,57 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1666
1668
|
setThreadLoadingMore(false);
|
|
1667
1669
|
setThreadMessages(updatedThreadMessages);
|
|
1668
1670
|
}, defaultDebounceInterval, debounceOptions)).current;
|
|
1669
|
-
var loadMoreThread = function () {
|
|
1670
|
-
var
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
_context15.next = 2;
|
|
1677
|
-
break;
|
|
1678
|
-
}
|
|
1679
|
-
return _context15.abrupt("return");
|
|
1680
|
-
case 2:
|
|
1681
|
-
setThreadLoadingMore(true);
|
|
1682
|
-
_context15.prev = 3;
|
|
1683
|
-
if (!channel) {
|
|
1684
|
-
_context15.next = 15;
|
|
1685
|
-
break;
|
|
1686
|
-
}
|
|
1687
|
-
parentID = thread.id;
|
|
1688
|
-
channel.state.threads[parentID] = threadMessages;
|
|
1689
|
-
oldestMessageID = threadMessages == null || (_threadMessages$ = threadMessages[0]) == null ? void 0 : _threadMessages$.id;
|
|
1690
|
-
limit = 50;
|
|
1691
|
-
_context15.next = 11;
|
|
1692
|
-
return channel.getReplies(parentID, {
|
|
1693
|
-
id_lt: oldestMessageID,
|
|
1694
|
-
limit: limit
|
|
1695
|
-
});
|
|
1696
|
-
case 11:
|
|
1697
|
-
queryResponse = _context15.sent;
|
|
1698
|
-
updatedHasMore = queryResponse.messages.length === limit;
|
|
1699
|
-
updatedThreadMessages = channel.state.threads[parentID] || [];
|
|
1700
|
-
loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
|
|
1701
|
-
case 15:
|
|
1702
|
-
_context15.next = 23;
|
|
1671
|
+
var loadMoreThread = (0, _hooks.useStableCallback)((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee15() {
|
|
1672
|
+
var _threadMessages$, parentID, oldestMessageID, limit, queryResponse, updatedHasMore, updatedThreadMessages;
|
|
1673
|
+
return _regenerator["default"].wrap(function _callee15$(_context15) {
|
|
1674
|
+
while (1) switch (_context15.prev = _context15.next) {
|
|
1675
|
+
case 0:
|
|
1676
|
+
if (!(threadLoadingMore || !(thread != null && thread.id))) {
|
|
1677
|
+
_context15.next = 2;
|
|
1703
1678
|
break;
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1679
|
+
}
|
|
1680
|
+
return _context15.abrupt("return");
|
|
1681
|
+
case 2:
|
|
1682
|
+
setThreadLoadingMore(true);
|
|
1683
|
+
_context15.prev = 3;
|
|
1684
|
+
if (!channel) {
|
|
1685
|
+
_context15.next = 15;
|
|
1686
|
+
break;
|
|
1687
|
+
}
|
|
1688
|
+
parentID = thread.id;
|
|
1689
|
+
channel.state.threads[parentID] = threadMessages;
|
|
1690
|
+
oldestMessageID = threadMessages == null || (_threadMessages$ = threadMessages[0]) == null ? void 0 : _threadMessages$.id;
|
|
1691
|
+
limit = 50;
|
|
1692
|
+
_context15.next = 11;
|
|
1693
|
+
return channel.getReplies(parentID, {
|
|
1694
|
+
id_lt: oldestMessageID,
|
|
1695
|
+
limit: limit
|
|
1696
|
+
});
|
|
1697
|
+
case 11:
|
|
1698
|
+
queryResponse = _context15.sent;
|
|
1699
|
+
updatedHasMore = queryResponse.messages.length === limit;
|
|
1700
|
+
updatedThreadMessages = channel.state.threads[parentID] || [];
|
|
1701
|
+
loadMoreThreadFinished(updatedHasMore, updatedThreadMessages);
|
|
1702
|
+
case 15:
|
|
1703
|
+
_context15.next = 23;
|
|
1704
|
+
break;
|
|
1705
|
+
case 17:
|
|
1706
|
+
_context15.prev = 17;
|
|
1707
|
+
_context15.t0 = _context15["catch"](3);
|
|
1708
|
+
console.warn('Message pagination request failed with error', _context15.t0);
|
|
1709
|
+
if (_context15.t0 instanceof Error) {
|
|
1710
|
+
setError(_context15.t0);
|
|
1711
|
+
} else {
|
|
1712
|
+
setError(true);
|
|
1713
|
+
}
|
|
1714
|
+
setThreadLoadingMore(false);
|
|
1715
|
+
throw _context15.t0;
|
|
1716
|
+
case 23:
|
|
1717
|
+
case "end":
|
|
1718
|
+
return _context15.stop();
|
|
1719
|
+
}
|
|
1720
|
+
}, _callee15, null, [[3, 17]]);
|
|
1721
|
+
})));
|
|
1725
1722
|
var ownCapabilitiesContext = (0, _useCreateOwnCapabilitiesContext.useCreateOwnCapabilitiesContext)({
|
|
1726
1723
|
channel: channel,
|
|
1727
1724
|
overrideCapabilities: overrideOwnCapabilities
|
|
@@ -1763,11 +1760,6 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1763
1760
|
watcherCount: channelState.watcherCount,
|
|
1764
1761
|
watchers: channelState.watchers
|
|
1765
1762
|
});
|
|
1766
|
-
var sendMessageRef = (0, _react.useRef)(sendMessage);
|
|
1767
|
-
sendMessageRef.current = sendMessage;
|
|
1768
|
-
var sendMessageStable = (0, _react.useCallback)(function () {
|
|
1769
|
-
return sendMessageRef.current.apply(sendMessageRef, arguments);
|
|
1770
|
-
}, []);
|
|
1771
1763
|
var inputMessageInputContext = (0, _useCreateInputMessageInputContext.useCreateInputMessageInputContext)({
|
|
1772
1764
|
additionalTextInputProps: additionalTextInputProps,
|
|
1773
1765
|
asyncMessagesLockDistance: asyncMessagesLockDistance,
|
|
@@ -1820,7 +1812,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1820
1812
|
quotedMessage: quotedMessage,
|
|
1821
1813
|
SendButton: SendButton,
|
|
1822
1814
|
sendImageAsync: sendImageAsync,
|
|
1823
|
-
sendMessage:
|
|
1815
|
+
sendMessage: sendMessage,
|
|
1824
1816
|
SendMessageDisallowedIndicator: SendMessageDisallowedIndicator,
|
|
1825
1817
|
setInputRef: setInputRef,
|
|
1826
1818
|
setQuotedMessageState: setQuotedMessageState,
|