stream-chat-react 10.11.0 → 10.12.0
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/dist/browser.full-bundle.js +114 -32
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +5 -5
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +3 -0
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +6 -1
- package/dist/components/ChannelPreview/hooks/index.d.ts +1 -0
- package/dist/components/ChannelPreview/hooks/index.d.ts.map +1 -1
- package/dist/components/ChannelPreview/hooks/index.js +1 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +17 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts.map +1 -0
- package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js +58 -0
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +4 -3
- package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
- package/dist/components/ChannelSearch/hooks/useChannelSearch.js +52 -31
- package/dist/index.cjs.js +114 -32
- package/dist/index.cjs.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ChatContextValue } from '../../context/ChatContext';
|
|
3
|
+
import { MessageDeliveryStatus } from './hooks/useMessageDeliveryStatus';
|
|
3
4
|
import type { Channel } from 'stream-chat';
|
|
4
5
|
import type { AvatarProps } from '../Avatar/Avatar';
|
|
5
6
|
import type { StreamMessage } from '../../context/ChannelStateContext';
|
|
@@ -15,6 +16,8 @@ export declare type ChannelPreviewUIComponentProps<StreamChatGenerics extends De
|
|
|
15
16
|
lastMessage?: StreamMessage<StreamChatGenerics>;
|
|
16
17
|
/** Latest message preview to display, will be a string or JSX element supporting markdown. */
|
|
17
18
|
latestMessage?: string | JSX.Element;
|
|
19
|
+
/** Status describing whether own message has been delivered or read by another. If the last message is not an own message, then the status is undefined. */
|
|
20
|
+
messageDeliveryStatus?: MessageDeliveryStatus;
|
|
18
21
|
/** Number of unread Messages */
|
|
19
22
|
unread?: number;
|
|
20
23
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAOhE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAOhE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAA4B,MAAM,kCAAkC,CAAC;AAEnG,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,oBAAY,8BAA8B,CACxC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,4JAA4J;IAC5J,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,oBAAY,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,6MAA6M;IAC7M,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,+LAA+L;IAC/L,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7C,6PAA6P;IAC7P,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5E,2CAA2C;IAC3C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,0JA8E1B,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { useChannelPreviewInfo } from './hooks/useChannelPreviewInfo';
|
|
|
6
6
|
import { getLatestMessagePreview } from './utils';
|
|
7
7
|
import { useChatContext } from '../../context/ChatContext';
|
|
8
8
|
import { useTranslationContext } from '../../context/TranslationContext';
|
|
9
|
+
import { useMessageDeliveryStatus } from './hooks/useMessageDeliveryStatus';
|
|
9
10
|
export var ChannelPreview = function (props) {
|
|
10
11
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
|
|
11
12
|
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
@@ -13,6 +14,10 @@ export var ChannelPreview = function (props) {
|
|
|
13
14
|
var _d = useChannelPreviewInfo({ channel: channel }), displayImage = _d.displayImage, displayTitle = _d.displayTitle;
|
|
14
15
|
var _e = useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _e[0], setLastMessage = _e[1];
|
|
15
16
|
var _f = useState(0), unread = _f[0], setUnread = _f[1];
|
|
17
|
+
var messageDeliveryStatus = useMessageDeliveryStatus({
|
|
18
|
+
channel: channel,
|
|
19
|
+
lastMessage: lastMessage,
|
|
20
|
+
}).messageDeliveryStatus;
|
|
16
21
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
17
22
|
var muted = useIsChannelMuted(channel).muted;
|
|
18
23
|
useEffect(function () {
|
|
@@ -52,5 +57,5 @@ export var ChannelPreview = function (props) {
|
|
|
52
57
|
if (!Preview)
|
|
53
58
|
return null;
|
|
54
59
|
var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
|
|
55
|
-
return (React.createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
|
|
60
|
+
return (React.createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, messageDeliveryStatus: messageDeliveryStatus, setActiveChannel: setActiveChannel, unread: unread })));
|
|
56
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelPreview/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelPreview/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Channel } from 'stream-chat';
|
|
2
|
+
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
3
|
+
import type { StreamMessage } from '../../../context';
|
|
4
|
+
export declare enum MessageDeliveryStatus {
|
|
5
|
+
DELIVERED = "delivered",
|
|
6
|
+
READ = "read"
|
|
7
|
+
}
|
|
8
|
+
declare type UseMessageStatusParamsChannelPreviewProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
9
|
+
channel: Channel<StreamChatGenerics>;
|
|
10
|
+
/** The last message received in a channel */
|
|
11
|
+
lastMessage?: StreamMessage<StreamChatGenerics>;
|
|
12
|
+
};
|
|
13
|
+
export declare const useMessageDeliveryStatus: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, lastMessage, }: UseMessageStatusParamsChannelPreviewProps<StreamChatGenerics>) => {
|
|
14
|
+
messageDeliveryStatus: MessageDeliveryStatus | undefined;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=useMessageDeliveryStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMessageDeliveryStatus.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelPreview/hooks/useMessageDeliveryStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAIlD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,oBAAY,qBAAqB;IAC/B,SAAS,cAAc;IACvB,IAAI,SAAS;CACd;AAED,aAAK,yCAAyC,CAC5C,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,wBAAwB;;CAwEpC,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
2
|
+
import { useChatContext } from '../../../context';
|
|
3
|
+
export var MessageDeliveryStatus;
|
|
4
|
+
(function (MessageDeliveryStatus) {
|
|
5
|
+
MessageDeliveryStatus["DELIVERED"] = "delivered";
|
|
6
|
+
MessageDeliveryStatus["READ"] = "read";
|
|
7
|
+
})(MessageDeliveryStatus || (MessageDeliveryStatus = {}));
|
|
8
|
+
export var useMessageDeliveryStatus = function (_a) {
|
|
9
|
+
var channel = _a.channel, lastMessage = _a.lastMessage;
|
|
10
|
+
var client = useChatContext().client;
|
|
11
|
+
var _b = useState(), messageDeliveryStatus = _b[0], setMessageDeliveryStatus = _b[1];
|
|
12
|
+
var isOwnMessage = useCallback(function (message) { var _a; return client.user && ((_a = message === null || message === void 0 ? void 0 : message.user) === null || _a === void 0 ? void 0 : _a.id) === client.user.id; }, [client]);
|
|
13
|
+
useEffect(function () {
|
|
14
|
+
var lastMessageIsOwn = isOwnMessage(lastMessage);
|
|
15
|
+
if (!(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.created_at) || !lastMessageIsOwn)
|
|
16
|
+
return;
|
|
17
|
+
var lastMessageCreatedAtDate = typeof lastMessage.created_at === 'string'
|
|
18
|
+
? new Date(lastMessage.created_at)
|
|
19
|
+
: lastMessage.created_at;
|
|
20
|
+
var channelReadByOthersAfterLastMessageUpdate = Object.values(channel.state.read).some(function (_a) {
|
|
21
|
+
var channelLastMarkedReadDate = _a.last_read, user = _a.user;
|
|
22
|
+
var ignoreOwnReadStatus = client.user && user.id !== client.user.id;
|
|
23
|
+
return ignoreOwnReadStatus && lastMessageCreatedAtDate < channelLastMarkedReadDate;
|
|
24
|
+
});
|
|
25
|
+
setMessageDeliveryStatus(channelReadByOthersAfterLastMessageUpdate
|
|
26
|
+
? MessageDeliveryStatus.READ
|
|
27
|
+
: MessageDeliveryStatus.DELIVERED);
|
|
28
|
+
}, [channel.state.read, client, isOwnMessage, lastMessage]);
|
|
29
|
+
useEffect(function () {
|
|
30
|
+
var handleMessageNew = function (event) {
|
|
31
|
+
// the last message is not mine, so do not show the delivery status
|
|
32
|
+
if (!isOwnMessage(event.message)) {
|
|
33
|
+
return setMessageDeliveryStatus(undefined);
|
|
34
|
+
}
|
|
35
|
+
return setMessageDeliveryStatus(MessageDeliveryStatus.DELIVERED);
|
|
36
|
+
};
|
|
37
|
+
channel.on('message.new', handleMessageNew);
|
|
38
|
+
return function () {
|
|
39
|
+
channel.off('message.new', handleMessageNew);
|
|
40
|
+
};
|
|
41
|
+
}, [channel, client, isOwnMessage]);
|
|
42
|
+
useEffect(function () {
|
|
43
|
+
if (!isOwnMessage(lastMessage))
|
|
44
|
+
return;
|
|
45
|
+
var handleMarkRead = function (event) {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
if (((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
|
|
48
|
+
setMessageDeliveryStatus(MessageDeliveryStatus.READ);
|
|
49
|
+
};
|
|
50
|
+
channel.on('message.read', handleMarkRead);
|
|
51
|
+
return function () {
|
|
52
|
+
channel.off('message.read', handleMarkRead);
|
|
53
|
+
};
|
|
54
|
+
}, [channel, client, lastMessage, isOwnMessage]);
|
|
55
|
+
return {
|
|
56
|
+
messageDeliveryStatus: messageDeliveryStatus,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ChannelOrUserResponse } from '../utils';
|
|
3
|
-
import type { ChannelFilters, ChannelOptions, ChannelSort, UserFilters, UserOptions, UserSort } from 'stream-chat';
|
|
4
|
-
import type { Channel } from 'stream-chat';
|
|
3
|
+
import type { Channel, ChannelFilters, ChannelOptions, ChannelSort, UserFilters, UserOptions, UserSort } from 'stream-chat';
|
|
5
4
|
import type { SearchBarController } from '../SearchBar';
|
|
6
5
|
import type { SearchInputController } from '../SearchInput';
|
|
7
6
|
import type { SearchResultsController } from '../SearchResults';
|
|
@@ -37,6 +36,8 @@ export declare type ChannelSearchParams<StreamChatGenerics extends DefaultStream
|
|
|
37
36
|
onSearchExit?: () => void;
|
|
38
37
|
/** Custom handler function to run on search result item selection */
|
|
39
38
|
onSelectResult?: (params: ChannelSearchFunctionParams<StreamChatGenerics>, result: ChannelOrUserResponse<StreamChatGenerics>) => Promise<void> | void;
|
|
39
|
+
/** The number of milliseconds to debounce the search query. The default interval is 200ms. */
|
|
40
|
+
searchDebounceIntervalMs?: number;
|
|
40
41
|
/** Boolean to search for channels as well as users in the server query, default is false and just searches for users */
|
|
41
42
|
searchForChannels?: boolean;
|
|
42
43
|
/** Custom search function to override the default implementation */
|
|
@@ -48,5 +49,5 @@ export declare type ChannelSearchControllerParams<StreamChatGenerics extends Def
|
|
|
48
49
|
/** Set the array of channels displayed in the ChannelList */
|
|
49
50
|
setChannels: React.Dispatch<React.SetStateAction<Array<Channel<StreamChatGenerics>>>>;
|
|
50
51
|
};
|
|
51
|
-
export declare const useChannelSearch: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelType, clearSearchOnClickOutside, disabled, onSearch: onSearchCallback, onSearchExit, onSelectResult, searchForChannels, searchFunction, searchQueryParams, setChannels, }: ChannelSearchControllerParams<StreamChatGenerics>) => SearchController<StreamChatGenerics>;
|
|
52
|
+
export declare const useChannelSearch: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channelType, clearSearchOnClickOutside, disabled, onSearch: onSearchCallback, onSearchExit, onSelectResult, searchDebounceIntervalMs, searchForChannels, searchFunction, searchQueryParams, setChannels, }: ChannelSearchControllerParams<StreamChatGenerics>) => SearchController<StreamChatGenerics>;
|
|
52
53
|
//# sourceMappingURL=useChannelSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChannelSearch.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelSearch/hooks/useChannelSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAIxE,OAAO,EAAE,qBAAqB,EAAa,MAAM,UAAU,CAAC;AAI5D,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"useChannelSearch.d.ts","sourceRoot":"","sources":["../../../../src/components/ChannelSearch/hooks/useChannelSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator, __spreadArray } from "tslib";
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
|
-
import
|
|
3
|
+
import debounce from 'lodash.debounce';
|
|
4
4
|
import uniqBy from 'lodash.uniqby';
|
|
5
5
|
import { isChannel } from '../utils';
|
|
6
6
|
import { useChatContext } from '../../../context/ChatContext';
|
|
7
7
|
export var useChannelSearch = function (_a) {
|
|
8
|
-
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels =
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
8
|
+
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchDebounceIntervalMs, searchDebounceIntervalMs = _e === void 0 ? 300 : _e, _f = _a.searchForChannels, searchForChannels = _f === void 0 ? false : _f, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
|
|
9
|
+
var _g = useChatContext('useChannelSearch'), client = _g.client, setActiveChannel = _g.setActiveChannel, themeVersion = _g.themeVersion;
|
|
10
|
+
var _h = useState(false), inputIsFocused = _h[0], setInputIsFocused = _h[1];
|
|
11
|
+
var _j = useState(''), query = _j[0], setQuery = _j[1];
|
|
12
|
+
var _k = useState([]), results = _k[0], setResults = _k[1];
|
|
13
|
+
var _l = useState(false), searching = _l[0], setSearching = _l[1];
|
|
14
|
+
var searchQueryPromiseInProgress = useRef();
|
|
15
|
+
var shouldIgnoreQueryResults = useRef(false);
|
|
14
16
|
var inputRef = useRef(null);
|
|
15
17
|
var searchBarRef = useRef(null);
|
|
16
18
|
var clearState = useCallback(function () {
|
|
17
19
|
setQuery('');
|
|
18
20
|
setResults([]);
|
|
19
21
|
setSearching(false);
|
|
22
|
+
if (searchQueryPromiseInProgress.current) {
|
|
23
|
+
shouldIgnoreQueryResults.current = true;
|
|
24
|
+
}
|
|
20
25
|
}, []);
|
|
21
26
|
var activateSearch = useCallback(function () {
|
|
22
27
|
setInputIsFocused(true);
|
|
@@ -99,45 +104,56 @@ export var useChannelSearch = function (_a) {
|
|
|
99
104
|
});
|
|
100
105
|
}); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
|
|
101
106
|
var getChannels = useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
|
|
102
|
-
var
|
|
107
|
+
var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
|
|
103
108
|
var _b, _c, _d, _e, _f, _g;
|
|
104
109
|
return __generator(this, function (_h) {
|
|
105
110
|
switch (_h.label) {
|
|
106
111
|
case 0:
|
|
107
|
-
|
|
108
|
-
return [2 /*return*/];
|
|
109
|
-
setSearching(true);
|
|
112
|
+
results = [];
|
|
110
113
|
_h.label = 1;
|
|
111
114
|
case 1:
|
|
112
115
|
_h.trys.push([1, 6, , 7]);
|
|
113
|
-
|
|
116
|
+
userQueryPromise = client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options));
|
|
117
|
+
if (!!searchForChannels) return [3 /*break*/, 3];
|
|
118
|
+
searchQueryPromiseInProgress.current = userQueryPromise;
|
|
119
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
114
120
|
case 2:
|
|
115
|
-
userResponse = _h.sent();
|
|
116
|
-
if (!searchForChannels) return [3 /*break*/, 4];
|
|
117
|
-
channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
118
|
-
return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
|
|
119
|
-
case 3:
|
|
120
|
-
_a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
|
|
121
|
-
setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
|
|
122
|
-
setSearching(false);
|
|
123
|
-
return [2 /*return*/];
|
|
124
|
-
case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
|
|
125
|
-
case 5:
|
|
126
121
|
users = (_h.sent()).users;
|
|
127
|
-
|
|
128
|
-
return [3 /*break*/,
|
|
122
|
+
results = users;
|
|
123
|
+
return [3 /*break*/, 5];
|
|
124
|
+
case 3:
|
|
125
|
+
channelQueryPromise = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
126
|
+
searchQueryPromiseInProgress.current = Promise.all([
|
|
127
|
+
channelQueryPromise,
|
|
128
|
+
userQueryPromise,
|
|
129
|
+
]);
|
|
130
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
131
|
+
case 4:
|
|
132
|
+
_a = _h.sent(), channels = _a[0], users = _a[1].users;
|
|
133
|
+
results = __spreadArray(__spreadArray([], channels, true), users, true);
|
|
134
|
+
_h.label = 5;
|
|
135
|
+
case 5: return [3 /*break*/, 7];
|
|
129
136
|
case 6:
|
|
130
137
|
error_1 = _h.sent();
|
|
131
|
-
clearState();
|
|
132
138
|
console.error(error_1);
|
|
133
139
|
return [3 /*break*/, 7];
|
|
134
140
|
case 7:
|
|
135
141
|
setSearching(false);
|
|
142
|
+
if (!shouldIgnoreQueryResults.current) {
|
|
143
|
+
setResults(results);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
shouldIgnoreQueryResults.current = false;
|
|
147
|
+
}
|
|
148
|
+
searchQueryPromiseInProgress.current = undefined;
|
|
136
149
|
return [2 /*return*/];
|
|
137
150
|
}
|
|
138
151
|
});
|
|
139
|
-
}); }, [client,
|
|
140
|
-
var
|
|
152
|
+
}); }, [client, searchForChannels, searchQueryParams]);
|
|
153
|
+
var scheduleGetChannels = useCallback(debounce(getChannels, searchDebounceIntervalMs), [
|
|
154
|
+
getChannels,
|
|
155
|
+
searchDebounceIntervalMs,
|
|
156
|
+
]);
|
|
141
157
|
var onSearch = useCallback(function (event) {
|
|
142
158
|
event.preventDefault();
|
|
143
159
|
if (disabled)
|
|
@@ -149,12 +165,17 @@ export var useChannelSearch = function (_a) {
|
|
|
149
165
|
setSearching: setSearching,
|
|
150
166
|
}, event);
|
|
151
167
|
}
|
|
152
|
-
else {
|
|
168
|
+
else if (event.target.value) {
|
|
169
|
+
setSearching(true);
|
|
153
170
|
setQuery(event.target.value);
|
|
154
|
-
|
|
171
|
+
scheduleGetChannels(event.target.value);
|
|
172
|
+
}
|
|
173
|
+
else if (!event.target.value) {
|
|
174
|
+
clearState();
|
|
175
|
+
scheduleGetChannels.cancel();
|
|
155
176
|
}
|
|
156
177
|
onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
|
|
157
|
-
}, [disabled,
|
|
178
|
+
}, [clearState, disabled, scheduleGetChannels, onSearchCallback, searchFunction]);
|
|
158
179
|
return {
|
|
159
180
|
activateSearch: activateSearch,
|
|
160
181
|
clearState: clearState,
|
package/dist/index.cjs.js
CHANGED
|
@@ -34293,6 +34293,63 @@ var useIsChannelMuted = function (channel) {
|
|
|
34293
34293
|
return muted;
|
|
34294
34294
|
};
|
|
34295
34295
|
|
|
34296
|
+
exports.MessageDeliveryStatus = void 0;
|
|
34297
|
+
(function (MessageDeliveryStatus) {
|
|
34298
|
+
MessageDeliveryStatus["DELIVERED"] = "delivered";
|
|
34299
|
+
MessageDeliveryStatus["READ"] = "read";
|
|
34300
|
+
})(exports.MessageDeliveryStatus || (exports.MessageDeliveryStatus = {}));
|
|
34301
|
+
var useMessageDeliveryStatus = function (_a) {
|
|
34302
|
+
var channel = _a.channel, lastMessage = _a.lastMessage;
|
|
34303
|
+
var client = useChatContext().client;
|
|
34304
|
+
var _b = React.useState(), messageDeliveryStatus = _b[0], setMessageDeliveryStatus = _b[1];
|
|
34305
|
+
var isOwnMessage = React.useCallback(function (message) { var _a; return client.user && ((_a = message === null || message === void 0 ? void 0 : message.user) === null || _a === void 0 ? void 0 : _a.id) === client.user.id; }, [client]);
|
|
34306
|
+
React.useEffect(function () {
|
|
34307
|
+
var lastMessageIsOwn = isOwnMessage(lastMessage);
|
|
34308
|
+
if (!(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.created_at) || !lastMessageIsOwn)
|
|
34309
|
+
return;
|
|
34310
|
+
var lastMessageCreatedAtDate = typeof lastMessage.created_at === 'string'
|
|
34311
|
+
? new Date(lastMessage.created_at)
|
|
34312
|
+
: lastMessage.created_at;
|
|
34313
|
+
var channelReadByOthersAfterLastMessageUpdate = Object.values(channel.state.read).some(function (_a) {
|
|
34314
|
+
var channelLastMarkedReadDate = _a.last_read, user = _a.user;
|
|
34315
|
+
var ignoreOwnReadStatus = client.user && user.id !== client.user.id;
|
|
34316
|
+
return ignoreOwnReadStatus && lastMessageCreatedAtDate < channelLastMarkedReadDate;
|
|
34317
|
+
});
|
|
34318
|
+
setMessageDeliveryStatus(channelReadByOthersAfterLastMessageUpdate
|
|
34319
|
+
? exports.MessageDeliveryStatus.READ
|
|
34320
|
+
: exports.MessageDeliveryStatus.DELIVERED);
|
|
34321
|
+
}, [channel.state.read, client, isOwnMessage, lastMessage]);
|
|
34322
|
+
React.useEffect(function () {
|
|
34323
|
+
var handleMessageNew = function (event) {
|
|
34324
|
+
// the last message is not mine, so do not show the delivery status
|
|
34325
|
+
if (!isOwnMessage(event.message)) {
|
|
34326
|
+
return setMessageDeliveryStatus(undefined);
|
|
34327
|
+
}
|
|
34328
|
+
return setMessageDeliveryStatus(exports.MessageDeliveryStatus.DELIVERED);
|
|
34329
|
+
};
|
|
34330
|
+
channel.on('message.new', handleMessageNew);
|
|
34331
|
+
return function () {
|
|
34332
|
+
channel.off('message.new', handleMessageNew);
|
|
34333
|
+
};
|
|
34334
|
+
}, [channel, client, isOwnMessage]);
|
|
34335
|
+
React.useEffect(function () {
|
|
34336
|
+
if (!isOwnMessage(lastMessage))
|
|
34337
|
+
return;
|
|
34338
|
+
var handleMarkRead = function (event) {
|
|
34339
|
+
var _a, _b;
|
|
34340
|
+
if (((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
|
|
34341
|
+
setMessageDeliveryStatus(exports.MessageDeliveryStatus.READ);
|
|
34342
|
+
};
|
|
34343
|
+
channel.on('message.read', handleMarkRead);
|
|
34344
|
+
return function () {
|
|
34345
|
+
channel.off('message.read', handleMarkRead);
|
|
34346
|
+
};
|
|
34347
|
+
}, [channel, client, lastMessage, isOwnMessage]);
|
|
34348
|
+
return {
|
|
34349
|
+
messageDeliveryStatus: messageDeliveryStatus,
|
|
34350
|
+
};
|
|
34351
|
+
};
|
|
34352
|
+
|
|
34296
34353
|
var ChannelPreview = function (props) {
|
|
34297
34354
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
|
|
34298
34355
|
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
@@ -34300,6 +34357,10 @@ var ChannelPreview = function (props) {
|
|
|
34300
34357
|
var _d = useChannelPreviewInfo({ channel: channel }), displayImage = _d.displayImage, displayTitle = _d.displayTitle;
|
|
34301
34358
|
var _e = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _e[0], setLastMessage = _e[1];
|
|
34302
34359
|
var _f = React.useState(0), unread = _f[0], setUnread = _f[1];
|
|
34360
|
+
var messageDeliveryStatus = useMessageDeliveryStatus({
|
|
34361
|
+
channel: channel,
|
|
34362
|
+
lastMessage: lastMessage,
|
|
34363
|
+
}).messageDeliveryStatus;
|
|
34303
34364
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
34304
34365
|
var muted = useIsChannelMuted(channel).muted;
|
|
34305
34366
|
React.useEffect(function () {
|
|
@@ -34339,24 +34400,29 @@ var ChannelPreview = function (props) {
|
|
|
34339
34400
|
if (!Preview)
|
|
34340
34401
|
return null;
|
|
34341
34402
|
var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
|
|
34342
|
-
return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
|
|
34403
|
+
return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, messageDeliveryStatus: messageDeliveryStatus, setActiveChannel: setActiveChannel, unread: unread })));
|
|
34343
34404
|
};
|
|
34344
34405
|
|
|
34345
34406
|
var isChannel = function (output) { return output.cid != null; };
|
|
34346
34407
|
|
|
34347
34408
|
var useChannelSearch = function (_a) {
|
|
34348
|
-
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchForChannels, searchForChannels =
|
|
34349
|
-
var
|
|
34350
|
-
var
|
|
34351
|
-
var
|
|
34352
|
-
var
|
|
34353
|
-
var
|
|
34409
|
+
var _b = _a.channelType, channelType = _b === void 0 ? 'messaging' : _b, _c = _a.clearSearchOnClickOutside, clearSearchOnClickOutside = _c === void 0 ? true : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, onSearchCallback = _a.onSearch, onSearchExit = _a.onSearchExit, onSelectResult = _a.onSelectResult, _e = _a.searchDebounceIntervalMs, searchDebounceIntervalMs = _e === void 0 ? 300 : _e, _f = _a.searchForChannels, searchForChannels = _f === void 0 ? false : _f, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
|
|
34410
|
+
var _g = useChatContext('useChannelSearch'), client = _g.client, setActiveChannel = _g.setActiveChannel, themeVersion = _g.themeVersion;
|
|
34411
|
+
var _h = React.useState(false), inputIsFocused = _h[0], setInputIsFocused = _h[1];
|
|
34412
|
+
var _j = React.useState(''), query = _j[0], setQuery = _j[1];
|
|
34413
|
+
var _k = React.useState([]), results = _k[0], setResults = _k[1];
|
|
34414
|
+
var _l = React.useState(false), searching = _l[0], setSearching = _l[1];
|
|
34415
|
+
var searchQueryPromiseInProgress = React.useRef();
|
|
34416
|
+
var shouldIgnoreQueryResults = React.useRef(false);
|
|
34354
34417
|
var inputRef = React.useRef(null);
|
|
34355
34418
|
var searchBarRef = React.useRef(null);
|
|
34356
34419
|
var clearState = React.useCallback(function () {
|
|
34357
34420
|
setQuery('');
|
|
34358
34421
|
setResults([]);
|
|
34359
34422
|
setSearching(false);
|
|
34423
|
+
if (searchQueryPromiseInProgress.current) {
|
|
34424
|
+
shouldIgnoreQueryResults.current = true;
|
|
34425
|
+
}
|
|
34360
34426
|
}, []);
|
|
34361
34427
|
var activateSearch = React.useCallback(function () {
|
|
34362
34428
|
setInputIsFocused(true);
|
|
@@ -34439,45 +34505,56 @@ var useChannelSearch = function (_a) {
|
|
|
34439
34505
|
});
|
|
34440
34506
|
}); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
|
|
34441
34507
|
var getChannels = React.useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
|
|
34442
|
-
var
|
|
34508
|
+
var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
|
|
34443
34509
|
var _b, _c, _d, _e, _f, _g;
|
|
34444
34510
|
return __generator(this, function (_h) {
|
|
34445
34511
|
switch (_h.label) {
|
|
34446
34512
|
case 0:
|
|
34447
|
-
|
|
34448
|
-
return [2 /*return*/];
|
|
34449
|
-
setSearching(true);
|
|
34513
|
+
results = [];
|
|
34450
34514
|
_h.label = 1;
|
|
34451
34515
|
case 1:
|
|
34452
34516
|
_h.trys.push([1, 6, , 7]);
|
|
34453
|
-
|
|
34517
|
+
userQueryPromise = client.queryUsers(__assign({ $or: [{ id: { $autocomplete: text } }, { name: { $autocomplete: text } }], id: { $ne: client.userID } }, (_b = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _b === void 0 ? void 0 : _b.filters), __assign({ id: 1 }, (_c = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _c === void 0 ? void 0 : _c.sort), __assign({ limit: 8 }, (_d = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.userFilters) === null || _d === void 0 ? void 0 : _d.options));
|
|
34518
|
+
if (!!searchForChannels) return [3 /*break*/, 3];
|
|
34519
|
+
searchQueryPromiseInProgress.current = userQueryPromise;
|
|
34520
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
34454
34521
|
case 2:
|
|
34455
|
-
userResponse = _h.sent();
|
|
34456
|
-
if (!searchForChannels) return [3 /*break*/, 4];
|
|
34457
|
-
channelResponse = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
34458
|
-
return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
|
|
34459
|
-
case 3:
|
|
34460
|
-
_a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
|
|
34461
|
-
setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
|
|
34462
|
-
setSearching(false);
|
|
34463
|
-
return [2 /*return*/];
|
|
34464
|
-
case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
|
|
34465
|
-
case 5:
|
|
34466
34522
|
users = (_h.sent()).users;
|
|
34467
|
-
|
|
34468
|
-
return [3 /*break*/,
|
|
34523
|
+
results = users;
|
|
34524
|
+
return [3 /*break*/, 5];
|
|
34525
|
+
case 3:
|
|
34526
|
+
channelQueryPromise = client.queryChannels(__assign({ name: { $autocomplete: text } }, (_e = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _e === void 0 ? void 0 : _e.filters), ((_f = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _f === void 0 ? void 0 : _f.sort) || {}, __assign({ limit: 5 }, (_g = searchQueryParams === null || searchQueryParams === void 0 ? void 0 : searchQueryParams.channelFilters) === null || _g === void 0 ? void 0 : _g.options));
|
|
34527
|
+
searchQueryPromiseInProgress.current = Promise.all([
|
|
34528
|
+
channelQueryPromise,
|
|
34529
|
+
userQueryPromise,
|
|
34530
|
+
]);
|
|
34531
|
+
return [4 /*yield*/, searchQueryPromiseInProgress.current];
|
|
34532
|
+
case 4:
|
|
34533
|
+
_a = _h.sent(), channels = _a[0], users = _a[1].users;
|
|
34534
|
+
results = __spreadArray(__spreadArray([], channels, true), users, true);
|
|
34535
|
+
_h.label = 5;
|
|
34536
|
+
case 5: return [3 /*break*/, 7];
|
|
34469
34537
|
case 6:
|
|
34470
34538
|
error_1 = _h.sent();
|
|
34471
|
-
clearState();
|
|
34472
34539
|
console.error(error_1);
|
|
34473
34540
|
return [3 /*break*/, 7];
|
|
34474
34541
|
case 7:
|
|
34475
34542
|
setSearching(false);
|
|
34543
|
+
if (!shouldIgnoreQueryResults.current) {
|
|
34544
|
+
setResults(results);
|
|
34545
|
+
}
|
|
34546
|
+
else {
|
|
34547
|
+
shouldIgnoreQueryResults.current = false;
|
|
34548
|
+
}
|
|
34549
|
+
searchQueryPromiseInProgress.current = undefined;
|
|
34476
34550
|
return [2 /*return*/];
|
|
34477
34551
|
}
|
|
34478
34552
|
});
|
|
34479
|
-
}); }, [client,
|
|
34480
|
-
var
|
|
34553
|
+
}); }, [client, searchForChannels, searchQueryParams]);
|
|
34554
|
+
var scheduleGetChannels = React.useCallback(debounce__default["default"](getChannels, searchDebounceIntervalMs), [
|
|
34555
|
+
getChannels,
|
|
34556
|
+
searchDebounceIntervalMs,
|
|
34557
|
+
]);
|
|
34481
34558
|
var onSearch = React.useCallback(function (event) {
|
|
34482
34559
|
event.preventDefault();
|
|
34483
34560
|
if (disabled)
|
|
@@ -34489,12 +34566,17 @@ var useChannelSearch = function (_a) {
|
|
|
34489
34566
|
setSearching: setSearching,
|
|
34490
34567
|
}, event);
|
|
34491
34568
|
}
|
|
34492
|
-
else {
|
|
34569
|
+
else if (event.target.value) {
|
|
34570
|
+
setSearching(true);
|
|
34493
34571
|
setQuery(event.target.value);
|
|
34494
|
-
|
|
34572
|
+
scheduleGetChannels(event.target.value);
|
|
34573
|
+
}
|
|
34574
|
+
else if (!event.target.value) {
|
|
34575
|
+
clearState();
|
|
34576
|
+
scheduleGetChannels.cancel();
|
|
34495
34577
|
}
|
|
34496
34578
|
onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
|
|
34497
|
-
}, [disabled,
|
|
34579
|
+
}, [clearState, disabled, scheduleGetChannels, onSearchCallback, searchFunction]);
|
|
34498
34580
|
return {
|
|
34499
34581
|
activateSearch: activateSearch,
|
|
34500
34582
|
clearState: clearState,
|
|
@@ -34887,7 +34969,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
34887
34969
|
*/
|
|
34888
34970
|
var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
|
|
34889
34971
|
|
|
34890
|
-
var version = '10.
|
|
34972
|
+
var version = '10.12.0';
|
|
34891
34973
|
|
|
34892
34974
|
var useChat = function (_a) {
|
|
34893
34975
|
var _b, _c;
|