stream-chat-react 10.19.0 → 10.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/browser.full-bundle.js +36 -25
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +3 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts +74 -62
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +27 -20
- package/dist/components/Channel/channelState.d.ts +1 -0
- package/dist/components/Channel/channelState.d.ts.map +1 -1
- package/dist/components/Channel/channelState.js +2 -2
- package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +1 -0
- package/dist/components/MessageList/CustomNotification.d.ts.map +1 -1
- package/dist/components/MessageList/CustomNotification.js +1 -1
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +1 -0
- package/dist/components/Thread/Thread.js +1 -0
- package/dist/css/index.css +1 -1
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/index.cjs.js +36 -25
- package/dist/index.cjs.js.map +1 -1
- package/dist/scss/MessageInput.scss +6 -0
- package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +7 -0
- package/dist/scss/v2/ChannelHeader/ChannelHeader-layout.scss +4 -0
- package/dist/scss/v2/ChannelPreview/ChannelPreview-layout.scss +1 -0
- package/dist/scss/v2/ChannelSearch/ChannelSearch-layout.scss +5 -0
- package/dist/scss/v2/Message/Message-layout.scss +8 -0
- package/dist/scss/v2/MessageList/MessageList-layout.scss +1 -0
- package/dist/scss/v2/MessageList/VirtualizedMessageList-layout.scss +4 -0
- package/dist/scss/v2/Notification/Notification-layout.scss +4 -0
- package/dist/scss/v2/Thread/Thread-layout.scss +4 -0
- package/dist/scss/v2/Tooltip/Tooltip-layout.scss +1 -0
- package/dist/scss/v2/_utils.scss +5 -0
- package/dist/utils/getChannel.d.ts +4 -2
- package/dist/utils/getChannel.d.ts.map +1 -1
- package/dist/utils/getChannel.js +3 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
> building chat applications.
|
|
9
9
|
|
|
10
10
|
[](https://www.npmjs.com/package/stream-chat-react)
|
|
11
|
-
[](https://github.com/GetStream/stream-chat-react/actions)
|
|
12
12
|
[](https://getstream.io/chat/docs/sdk/react/)
|
|
13
13
|
[](https://codecov.io/gh/GetStream/stream-chat-react)
|
|
14
14
|
|
|
@@ -39627,8 +39627,8 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
39627
39627
|
return __assign(__assign({}, state), { members: __assign({}, channel.state.members), messages: __spreadArray([], channel.state.messages, true), pinnedMessages: __spreadArray([], channel.state.pinnedMessages, true), read: __assign({}, channel.state.read), watcherCount: channel.state.watcher_count, watchers: __assign({}, channel.state.watchers) });
|
|
39628
39628
|
}
|
|
39629
39629
|
case 'initStateFromChannel': {
|
|
39630
|
-
var channel = action.channel;
|
|
39631
|
-
return __assign(__assign({}, state), { loading: false, members: __assign({}, channel.state.members), messages: __spreadArray([], channel.state.messages, true), pinnedMessages: __spreadArray([], channel.state.pinnedMessages, true), read: __assign({}, channel.state.read), watcherCount: channel.state.watcher_count, watchers: __assign({}, channel.state.watchers) });
|
|
39630
|
+
var channel = action.channel, hasMore = action.hasMore;
|
|
39631
|
+
return __assign(__assign({}, state), { hasMore: hasMore, loading: false, members: __assign({}, channel.state.members), messages: __spreadArray([], channel.state.messages, true), pinnedMessages: __spreadArray([], channel.state.pinnedMessages, true), read: __assign({}, channel.state.read), watcherCount: channel.state.watcher_count, watchers: __assign({}, channel.state.watchers) });
|
|
39632
39632
|
}
|
|
39633
39633
|
case 'jumpToLatestMessage': {
|
|
39634
39634
|
return __assign(__assign({}, state), { hasMoreNewer: false, highlightedMessageId: undefined, loading: false, suppressAutoscroll: false });
|
|
@@ -45570,6 +45570,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45570
45570
|
var hasMoreMessagesProbably = function (returnedCountMessages, limit) {
|
|
45571
45571
|
return returnedCountMessages === limit;
|
|
45572
45572
|
};
|
|
45573
|
+
// @deprecated
|
|
45573
45574
|
var hasNotMoreMessages = function (returnedCountMessages, limit) {
|
|
45574
45575
|
return returnedCountMessages < limit;
|
|
45575
45576
|
};
|
|
@@ -45599,12 +45600,13 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45599
45600
|
* Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
|
|
45600
45601
|
* @param client
|
|
45601
45602
|
* @param members
|
|
45603
|
+
* @param options
|
|
45602
45604
|
* @param type
|
|
45603
45605
|
* @param id
|
|
45604
45606
|
* @param channel
|
|
45605
45607
|
*/
|
|
45606
45608
|
var getChannel = function (_a) {
|
|
45607
|
-
var channel = _a.channel, client = _a.client, id = _a.id, members = _a.members, type = _a.type;
|
|
45609
|
+
var channel = _a.channel, client = _a.client, id = _a.id, members = _a.members, options = _a.options, type = _a.type;
|
|
45608
45610
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
45609
45611
|
var theChannel, originalCid, queryPromise;
|
|
45610
45612
|
return __generator(this, function (_b) {
|
|
@@ -45629,7 +45631,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45629
45631
|
_b.sent();
|
|
45630
45632
|
return [3 /*break*/, 4];
|
|
45631
45633
|
case 2:
|
|
45632
|
-
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid] = theChannel.watch();
|
|
45634
|
+
WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid] = theChannel.watch(options);
|
|
45633
45635
|
return [4 /*yield*/, WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid]];
|
|
45634
45636
|
case 3:
|
|
45635
45637
|
_b.sent();
|
|
@@ -45761,12 +45763,11 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45761
45763
|
if (!(channel === null || channel === void 0 ? void 0 : channel.cid)) {
|
|
45762
45764
|
return React__default["default"].createElement("div", { className: className }, EmptyPlaceholder);
|
|
45763
45765
|
}
|
|
45764
|
-
// @ts-ignore
|
|
45765
45766
|
return React__default["default"].createElement(ChannelInner, __assign({}, props, { channel: channel, key: channel.cid }));
|
|
45766
45767
|
};
|
|
45767
45768
|
var ChannelInner = function (props) {
|
|
45768
45769
|
var _a;
|
|
45769
|
-
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, children = props.children, doDeleteMessageRequest = props.doDeleteMessageRequest, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _d = props.initializeOnMount, initializeOnMount = _d === void 0 ? true : _d, _e = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _e === void 0 ? LoadingErrorIndicator : _e, _f = props.LoadingIndicator, LoadingIndicator = _f === void 0 ? LoadingChannel : _f, maxNumberOfFiles = props.maxNumberOfFiles, _g = props.multipleUploads, multipleUploads = _g === void 0 ? true : _g, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _h = props.optionalMessageInputProps, optionalMessageInputProps = _h === void 0 ? {} : _h, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
45770
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, channelQueryOptions = props.channelQueryOptions, children = props.children, doDeleteMessageRequest = props.doDeleteMessageRequest, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, _c = props.emojiData, emojiData = _c === void 0 ? defaultEmojiData : _c, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _d = props.initializeOnMount, initializeOnMount = _d === void 0 ? true : _d, _e = props.LoadingErrorIndicator, LoadingErrorIndicator$1 = _e === void 0 ? LoadingErrorIndicator : _e, _f = props.LoadingIndicator, LoadingIndicator = _f === void 0 ? LoadingChannel : _f, maxNumberOfFiles = props.maxNumberOfFiles, _g = props.multipleUploads, multipleUploads = _g === void 0 ? true : _g, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _h = props.optionalMessageInputProps, optionalMessageInputProps = _h === void 0 ? {} : _h, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
45770
45771
|
var _j = useChatContext('Channel'), client = _j.client, customClasses = _j.customClasses, latestMessageDatesByChannels = _j.latestMessageDatesByChannels, mutes = _j.mutes, theme = _j.theme;
|
|
45771
45772
|
var t = useTranslationContext('Channel').t;
|
|
45772
45773
|
var _k = useChannelContainerClasses({ customClasses: customClasses }), channelClass = _k.channelClass, chatClass = _k.chatClass, chatContainerClass = _k.chatContainerClass, windowsEmojiClass = _k.windowsEmojiClass;
|
|
@@ -45865,6 +45866,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45865
45866
|
/**
|
|
45866
45867
|
* As the channel state is not normalized we re-fetch the channel data. Thus, we avoid having to search for user references in the channel state.
|
|
45867
45868
|
*/
|
|
45869
|
+
// FIXME: we should use channelQueryOptions if they are available
|
|
45868
45870
|
return [4 /*yield*/, channel.query({
|
|
45869
45871
|
messages: { id_lt: oldestID, limit: DEFAULT_NEXT_CHANNEL_PAGE_SIZE },
|
|
45870
45872
|
watchers: { limit: DEFAULT_NEXT_CHANNEL_PAGE_SIZE },
|
|
@@ -45873,6 +45875,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45873
45875
|
/**
|
|
45874
45876
|
* As the channel state is not normalized we re-fetch the channel data. Thus, we avoid having to search for user references in the channel state.
|
|
45875
45877
|
*/
|
|
45878
|
+
// FIXME: we should use channelQueryOptions if they are available
|
|
45876
45879
|
_m.sent();
|
|
45877
45880
|
_m.label = 2;
|
|
45878
45881
|
case 2:
|
|
@@ -45891,14 +45894,14 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45891
45894
|
};
|
|
45892
45895
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
45893
45896
|
var members, _i, _a, member, userId, _b, user, user_id, config, e_1;
|
|
45894
|
-
var _c;
|
|
45895
|
-
return __generator(this, function (
|
|
45896
|
-
switch (
|
|
45897
|
+
var _c, _d, _e;
|
|
45898
|
+
return __generator(this, function (_f) {
|
|
45899
|
+
switch (_f.label) {
|
|
45897
45900
|
case 0:
|
|
45898
45901
|
if (!(!channel.initialized && initializeOnMount)) return [3 /*break*/, 4];
|
|
45899
|
-
|
|
45902
|
+
_f.label = 1;
|
|
45900
45903
|
case 1:
|
|
45901
|
-
|
|
45904
|
+
_f.trys.push([1, 3, , 4]);
|
|
45902
45905
|
members = [];
|
|
45903
45906
|
if (!channel.id && ((_c = channel.data) === null || _c === void 0 ? void 0 : _c.members)) {
|
|
45904
45907
|
for (_i = 0, _a = channel.data.members; _i < _a.length; _i++) {
|
|
@@ -45916,14 +45919,14 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45916
45919
|
}
|
|
45917
45920
|
}
|
|
45918
45921
|
}
|
|
45919
|
-
return [4 /*yield*/, getChannel({ channel: channel, client: client, members: members })];
|
|
45922
|
+
return [4 /*yield*/, getChannel({ channel: channel, client: client, members: members, options: channelQueryOptions })];
|
|
45920
45923
|
case 2:
|
|
45921
|
-
|
|
45924
|
+
_f.sent();
|
|
45922
45925
|
config = channel.getConfig();
|
|
45923
45926
|
setChannelConfig(config);
|
|
45924
45927
|
return [3 /*break*/, 4];
|
|
45925
45928
|
case 3:
|
|
45926
|
-
e_1 =
|
|
45929
|
+
e_1 = _f.sent();
|
|
45927
45930
|
dispatch({ error: e_1, type: 'setError' });
|
|
45928
45931
|
errored = true;
|
|
45929
45932
|
return [3 /*break*/, 4];
|
|
@@ -45931,7 +45934,11 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45931
45934
|
done = true;
|
|
45932
45935
|
originalTitle.current = document.title;
|
|
45933
45936
|
if (!errored) {
|
|
45934
|
-
dispatch({
|
|
45937
|
+
dispatch({
|
|
45938
|
+
channel: channel,
|
|
45939
|
+
hasMore: hasMoreMessagesProbably(channel.state.messages.length, (_e = (_d = channelQueryOptions === null || channelQueryOptions === void 0 ? void 0 : channelQueryOptions.messages) === null || _d === void 0 ? void 0 : _d.limit) !== null && _e !== void 0 ? _e : DEFAULT_INITIAL_CHANNEL_PAGE_SIZE),
|
|
45940
|
+
type: 'initStateFromChannel',
|
|
45941
|
+
});
|
|
45935
45942
|
if (channel.countUnread() > 0)
|
|
45936
45943
|
markRead();
|
|
45937
45944
|
// The more complex sync logic is done in Chat
|
|
@@ -45957,7 +45964,13 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45957
45964
|
client.off('user.deleted', handleEvent);
|
|
45958
45965
|
notificationTimeouts.forEach(clearTimeout);
|
|
45959
45966
|
};
|
|
45960
|
-
}, [
|
|
45967
|
+
}, [
|
|
45968
|
+
channel.cid,
|
|
45969
|
+
channelQueryOptions,
|
|
45970
|
+
doMarkReadRequest,
|
|
45971
|
+
channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events,
|
|
45972
|
+
initializeOnMount,
|
|
45973
|
+
]);
|
|
45961
45974
|
React$2.useEffect(function () {
|
|
45962
45975
|
var _a;
|
|
45963
45976
|
if (!state.thread)
|
|
@@ -45980,22 +45993,17 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
45980
45993
|
var loadMore = function (limit) {
|
|
45981
45994
|
if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
|
|
45982
45995
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
45983
|
-
var oldestMessage,
|
|
45996
|
+
var oldestMessage, oldestID, perPage, queryResponse, e_2, hasMoreMessages;
|
|
45984
45997
|
var _a;
|
|
45985
45998
|
return __generator(this, function (_b) {
|
|
45986
45999
|
switch (_b.label) {
|
|
45987
46000
|
case 0:
|
|
45988
|
-
if (!online.current || !window.navigator.onLine)
|
|
46001
|
+
if (!online.current || !window.navigator.onLine || !state.hasMore)
|
|
45989
46002
|
return [2 /*return*/, 0];
|
|
45990
46003
|
oldestMessage = (_a = state === null || state === void 0 ? void 0 : state.messages) === null || _a === void 0 ? void 0 : _a[0];
|
|
45991
46004
|
if (state.loadingMore || state.loadingMoreNewer || (oldestMessage === null || oldestMessage === void 0 ? void 0 : oldestMessage.status) !== 'received') {
|
|
45992
46005
|
return [2 /*return*/, 0];
|
|
45993
46006
|
}
|
|
45994
|
-
notHasMore = hasNotMoreMessages(channel.state.messages.length, DEFAULT_INITIAL_CHANNEL_PAGE_SIZE);
|
|
45995
|
-
if (notHasMore) {
|
|
45996
|
-
loadMoreFinished(false, channel.state.messages);
|
|
45997
|
-
return [2 /*return*/, channel.state.messages.length];
|
|
45998
|
-
}
|
|
45999
46007
|
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
46000
46008
|
oldestID = oldestMessage === null || oldestMessage === void 0 ? void 0 : oldestMessage.id;
|
|
46001
46009
|
perPage = limit;
|
|
@@ -46275,6 +46283,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
46275
46283
|
return __generator(this, function (_b) {
|
|
46276
46284
|
switch (_b.label) {
|
|
46277
46285
|
case 0:
|
|
46286
|
+
// FIXME: should prevent loading more, if state.thread.reply_count === channel.state.threads[parentID].length
|
|
46278
46287
|
if (state.threadLoadingMore || !state.thread)
|
|
46279
46288
|
return [2 /*return*/];
|
|
46280
46289
|
dispatch({ type: 'startLoadingThread' });
|
|
@@ -47731,7 +47740,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
47731
47740
|
|
|
47732
47741
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
|
|
47733
47742
|
|
|
47734
|
-
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.
|
|
47743
|
+
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.20.1';
|
|
47735
47744
|
|
|
47736
47745
|
window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
|
|
47737
47746
|
var _b, _c;
|
|
@@ -48050,6 +48059,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
48050
48059
|
}
|
|
48051
48060
|
if (isLoading)
|
|
48052
48061
|
return;
|
|
48062
|
+
// FIXME: this triggers loadMore call when a user types messages in thread and the scroll container container expands
|
|
48053
48063
|
if (reverseOffset < Number(threshold) &&
|
|
48054
48064
|
typeof loadPreviousPageFn === 'function' &&
|
|
48055
48065
|
hasPreviousPageFlag) {
|
|
@@ -48767,7 +48777,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
48767
48777
|
var active = props.active, children = props.children, className = props.className, type = props.type;
|
|
48768
48778
|
if (!active)
|
|
48769
48779
|
return null;
|
|
48770
|
-
return (React__default["default"].createElement("div", { "aria-live": 'polite', className: clsx("str-chat__custom-notification notification-".concat(type), "str-chat__notification", className), "data-testid": 'custom-notification' }, children));
|
|
48780
|
+
return (React__default["default"].createElement("div", { "aria-live": 'polite', className: clsx("str-chat__custom-notification notification-".concat(type), "str-chat__notification", "str-chat-react__notification", className), "data-testid": 'custom-notification' }, children));
|
|
48771
48781
|
};
|
|
48772
48782
|
var CustomNotification = React__default["default"].memo(UnMemoizedCustomNotification);
|
|
48773
48783
|
|
|
@@ -51027,6 +51037,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
|
|
|
51027
51037
|
var ThreadMessageList = virtualized ? VirtualizedMessageList : MessageList;
|
|
51028
51038
|
React$2.useEffect(function () {
|
|
51029
51039
|
if ((thread === null || thread === void 0 ? void 0 : thread.id) && (thread === null || thread === void 0 ? void 0 : thread.reply_count)) {
|
|
51040
|
+
// FIXME: integrators can customize channel query options but cannot customize channel.getReplies() options
|
|
51030
51041
|
loadMoreThread();
|
|
51031
51042
|
}
|
|
51032
51043
|
}, []);
|