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.
@@ -46834,6 +46834,63 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46834
46834
  return muted;
46835
46835
  };
46836
46836
 
46837
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};exports.MessageDeliveryStatus = void 0;
46838
+ (function (MessageDeliveryStatus) {
46839
+ MessageDeliveryStatus["DELIVERED"] = "delivered";
46840
+ MessageDeliveryStatus["READ"] = "read";
46841
+ })(exports.MessageDeliveryStatus || (exports.MessageDeliveryStatus = {}));
46842
+ var useMessageDeliveryStatus = function (_a) {
46843
+ var channel = _a.channel, lastMessage = _a.lastMessage;
46844
+ var client = useChatContext().client;
46845
+ var _b = React$2.useState(), messageDeliveryStatus = _b[0], setMessageDeliveryStatus = _b[1];
46846
+ var isOwnMessage = React$2.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]);
46847
+ React$2.useEffect(function () {
46848
+ var lastMessageIsOwn = isOwnMessage(lastMessage);
46849
+ if (!(lastMessage === null || lastMessage === void 0 ? void 0 : lastMessage.created_at) || !lastMessageIsOwn)
46850
+ return;
46851
+ var lastMessageCreatedAtDate = typeof lastMessage.created_at === 'string'
46852
+ ? new Date(lastMessage.created_at)
46853
+ : lastMessage.created_at;
46854
+ var channelReadByOthersAfterLastMessageUpdate = Object.values(channel.state.read).some(function (_a) {
46855
+ var channelLastMarkedReadDate = _a.last_read, user = _a.user;
46856
+ var ignoreOwnReadStatus = client.user && user.id !== client.user.id;
46857
+ return ignoreOwnReadStatus && lastMessageCreatedAtDate < channelLastMarkedReadDate;
46858
+ });
46859
+ setMessageDeliveryStatus(channelReadByOthersAfterLastMessageUpdate
46860
+ ? exports.MessageDeliveryStatus.READ
46861
+ : exports.MessageDeliveryStatus.DELIVERED);
46862
+ }, [channel.state.read, client, isOwnMessage, lastMessage]);
46863
+ React$2.useEffect(function () {
46864
+ var handleMessageNew = function (event) {
46865
+ // the last message is not mine, so do not show the delivery status
46866
+ if (!isOwnMessage(event.message)) {
46867
+ return setMessageDeliveryStatus(undefined);
46868
+ }
46869
+ return setMessageDeliveryStatus(exports.MessageDeliveryStatus.DELIVERED);
46870
+ };
46871
+ channel.on('message.new', handleMessageNew);
46872
+ return function () {
46873
+ channel.off('message.new', handleMessageNew);
46874
+ };
46875
+ }, [channel, client, isOwnMessage]);
46876
+ React$2.useEffect(function () {
46877
+ if (!isOwnMessage(lastMessage))
46878
+ return;
46879
+ var handleMarkRead = function (event) {
46880
+ var _a, _b;
46881
+ if (((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
46882
+ setMessageDeliveryStatus(exports.MessageDeliveryStatus.READ);
46883
+ };
46884
+ channel.on('message.read', handleMarkRead);
46885
+ return function () {
46886
+ channel.off('message.read', handleMarkRead);
46887
+ };
46888
+ }, [channel, client, lastMessage, isOwnMessage]);
46889
+ return {
46890
+ messageDeliveryStatus: messageDeliveryStatus,
46891
+ };
46892
+ };
46893
+
46837
46894
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var ChannelPreview = function (props) {
46838
46895
  var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
46839
46896
  var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
@@ -46841,6 +46898,10 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46841
46898
  var _d = useChannelPreviewInfo({ channel: channel }), displayImage = _d.displayImage, displayTitle = _d.displayTitle;
46842
46899
  var _e = React$2.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _e[0], setLastMessage = _e[1];
46843
46900
  var _f = React$2.useState(0), unread = _f[0], setUnread = _f[1];
46901
+ var messageDeliveryStatus = useMessageDeliveryStatus({
46902
+ channel: channel,
46903
+ lastMessage: lastMessage,
46904
+ }).messageDeliveryStatus;
46844
46905
  var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
46845
46906
  var muted = useIsChannelMuted(channel).muted;
46846
46907
  React$2.useEffect(function () {
@@ -46880,24 +46941,29 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46880
46941
  if (!Preview)
46881
46942
  return null;
46882
46943
  var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
46883
- return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
46944
+ return (React__default["default"].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, messageDeliveryStatus: messageDeliveryStatus, setActiveChannel: setActiveChannel, unread: unread })));
46884
46945
  };
46885
46946
 
46886
46947
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var isChannel = function (output) { return output.cid != null; };
46887
46948
 
46888
46949
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChannelSearch = function (_a) {
46889
- 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 = _e === void 0 ? false : _e, searchFunction = _a.searchFunction, searchQueryParams = _a.searchQueryParams, setChannels = _a.setChannels;
46890
- var _f = useChatContext('useChannelSearch'), client = _f.client, setActiveChannel = _f.setActiveChannel, themeVersion = _f.themeVersion;
46891
- var _g = React$2.useState(false), inputIsFocused = _g[0], setInputIsFocused = _g[1];
46892
- var _h = React$2.useState(''), query = _h[0], setQuery = _h[1];
46893
- var _j = React$2.useState([]), results = _j[0], setResults = _j[1];
46894
- var _k = React$2.useState(false), searching = _k[0], setSearching = _k[1];
46950
+ 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;
46951
+ var _g = useChatContext('useChannelSearch'), client = _g.client, setActiveChannel = _g.setActiveChannel, themeVersion = _g.themeVersion;
46952
+ var _h = React$2.useState(false), inputIsFocused = _h[0], setInputIsFocused = _h[1];
46953
+ var _j = React$2.useState(''), query = _j[0], setQuery = _j[1];
46954
+ var _k = React$2.useState([]), results = _k[0], setResults = _k[1];
46955
+ var _l = React$2.useState(false), searching = _l[0], setSearching = _l[1];
46956
+ var searchQueryPromiseInProgress = React$2.useRef();
46957
+ var shouldIgnoreQueryResults = React$2.useRef(false);
46895
46958
  var inputRef = React$2.useRef(null);
46896
46959
  var searchBarRef = React$2.useRef(null);
46897
46960
  var clearState = React$2.useCallback(function () {
46898
46961
  setQuery('');
46899
46962
  setResults([]);
46900
46963
  setSearching(false);
46964
+ if (searchQueryPromiseInProgress.current) {
46965
+ shouldIgnoreQueryResults.current = true;
46966
+ }
46901
46967
  }, []);
46902
46968
  var activateSearch = React$2.useCallback(function () {
46903
46969
  setInputIsFocused(true);
@@ -46980,45 +47046,56 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
46980
47046
  });
46981
47047
  }); }, [clearSearchOnClickOutside, client, exitSearch, onSelectResult, setActiveChannel, setChannels]);
46982
47048
  var getChannels = React$2.useCallback(function (text) { return __awaiter(void 0, void 0, void 0, function () {
46983
- var userResponse, channelResponse, _a, channels, users_1, users, error_1;
47049
+ var results, userQueryPromise, users, channelQueryPromise, _a, channels, users, error_1;
46984
47050
  var _b, _c, _d, _e, _f, _g;
46985
47051
  return __generator(this, function (_h) {
46986
47052
  switch (_h.label) {
46987
47053
  case 0:
46988
- if (!text || searching)
46989
- return [2 /*return*/];
46990
- setSearching(true);
47054
+ results = [];
46991
47055
  _h.label = 1;
46992
47056
  case 1:
46993
47057
  _h.trys.push([1, 6, , 7]);
46994
- return [4 /*yield*/, 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))];
47058
+ 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));
47059
+ if (!!searchForChannels) return [3 /*break*/, 3];
47060
+ searchQueryPromiseInProgress.current = userQueryPromise;
47061
+ return [4 /*yield*/, searchQueryPromiseInProgress.current];
46995
47062
  case 2:
46996
- userResponse = _h.sent();
46997
- if (!searchForChannels) return [3 /*break*/, 4];
46998
- 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));
46999
- return [4 /*yield*/, Promise.all([channelResponse, userResponse])];
47000
- case 3:
47001
- _a = _h.sent(), channels = _a[0], users_1 = _a[1].users;
47002
- setResults(__spreadArray(__spreadArray([], channels, true), users_1, true));
47003
- setSearching(false);
47004
- return [2 /*return*/];
47005
- case 4: return [4 /*yield*/, Promise.resolve(userResponse)];
47006
- case 5:
47007
47063
  users = (_h.sent()).users;
47008
- setResults(users);
47009
- return [3 /*break*/, 7];
47064
+ results = users;
47065
+ return [3 /*break*/, 5];
47066
+ case 3:
47067
+ 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));
47068
+ searchQueryPromiseInProgress.current = Promise.all([
47069
+ channelQueryPromise,
47070
+ userQueryPromise,
47071
+ ]);
47072
+ return [4 /*yield*/, searchQueryPromiseInProgress.current];
47073
+ case 4:
47074
+ _a = _h.sent(), channels = _a[0], users = _a[1].users;
47075
+ results = __spreadArray(__spreadArray([], channels, true), users, true);
47076
+ _h.label = 5;
47077
+ case 5: return [3 /*break*/, 7];
47010
47078
  case 6:
47011
47079
  error_1 = _h.sent();
47012
- clearState();
47013
47080
  console.error(error_1);
47014
47081
  return [3 /*break*/, 7];
47015
47082
  case 7:
47016
47083
  setSearching(false);
47084
+ if (!shouldIgnoreQueryResults.current) {
47085
+ setResults(results);
47086
+ }
47087
+ else {
47088
+ shouldIgnoreQueryResults.current = false;
47089
+ }
47090
+ searchQueryPromiseInProgress.current = undefined;
47017
47091
  return [2 /*return*/];
47018
47092
  }
47019
47093
  });
47020
- }); }, [client, searching, searchForChannels]);
47021
- var getChannelsThrottled = lodash_throttle(getChannels, 200);
47094
+ }); }, [client, searchForChannels, searchQueryParams]);
47095
+ var scheduleGetChannels = React$2.useCallback(lodash_debounce(getChannels, searchDebounceIntervalMs), [
47096
+ getChannels,
47097
+ searchDebounceIntervalMs,
47098
+ ]);
47022
47099
  var onSearch = React$2.useCallback(function (event) {
47023
47100
  event.preventDefault();
47024
47101
  if (disabled)
@@ -47030,12 +47107,17 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47030
47107
  setSearching: setSearching,
47031
47108
  }, event);
47032
47109
  }
47033
- else {
47110
+ else if (event.target.value) {
47111
+ setSearching(true);
47034
47112
  setQuery(event.target.value);
47035
- getChannelsThrottled(event.target.value);
47113
+ scheduleGetChannels(event.target.value);
47114
+ }
47115
+ else if (!event.target.value) {
47116
+ clearState();
47117
+ scheduleGetChannels.cancel();
47036
47118
  }
47037
47119
  onSearchCallback === null || onSearchCallback === void 0 ? void 0 : onSearchCallback(event);
47038
- }, [disabled, getChannelsThrottled, onSearchCallback, searchFunction]);
47120
+ }, [clearState, disabled, scheduleGetChannels, onSearchCallback, searchFunction]);
47039
47121
  return {
47040
47122
  activateSearch: activateSearch,
47041
47123
  clearState: clearState,
@@ -47440,7 +47522,7 @@ var StreamChatReact = (function (exports, React$2, streamChat, ReactDOM) {
47440
47522
 
47441
47523
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};
47442
47524
 
47443
- window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.11.0';
47525
+ window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var version$1 = '10.12.0';
47444
47526
 
47445
47527
  window.StreamChat.StreamChat=StreamChat;window.StreamChat.logChatPromiseExecution=logChatPromiseExecution;window.StreamChat.Channel=Channel;window.ICAL=window.ICAL||{};var useChat = function (_a) {
47446
47528
  var _b, _c;