stream-chat-react 10.10.1 → 10.11.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.
Files changed (40) hide show
  1. package/dist/browser.full-bundle.js +192 -101
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +5 -5
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/Channel/Channel.d.ts.map +1 -1
  6. package/dist/components/Channel/Channel.js +27 -8
  7. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  8. package/dist/components/ChannelList/hooks/useChannelVisibleListener.js +6 -2
  9. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  10. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js +19 -7
  11. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  12. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.js +6 -2
  13. package/dist/components/ChannelList/utils.d.ts +1 -8
  14. package/dist/components/ChannelList/utils.d.ts.map +1 -1
  15. package/dist/components/ChannelList/utils.js +1 -35
  16. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  17. package/dist/components/Message/MessageSimple.js +10 -3
  18. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  19. package/dist/components/Message/hooks/useReactionHandler.js +17 -21
  20. package/dist/components/MessageInput/CooldownTimer.js +1 -1
  21. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  22. package/dist/components/MessageInput/hooks/useCooldownTimer.js +5 -2
  23. package/dist/context/MessageContext.d.ts +3 -1
  24. package/dist/context/MessageContext.d.ts.map +1 -1
  25. package/dist/context/TranslationContext.d.ts +1 -1
  26. package/dist/context/TranslationContext.d.ts.map +1 -1
  27. package/dist/i18n/Streami18n.d.ts +9 -3
  28. package/dist/i18n/Streami18n.d.ts.map +1 -1
  29. package/dist/i18n/Streami18n.js +18 -11
  30. package/dist/index.cjs.js +178 -101
  31. package/dist/index.cjs.js.map +1 -1
  32. package/dist/index.d.ts +1 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -0
  35. package/dist/utils/getChannel.d.ts +20 -0
  36. package/dist/utils/getChannel.d.ts.map +1 -0
  37. package/dist/utils/getChannel.js +58 -0
  38. package/dist/version.d.ts +1 -1
  39. package/dist/version.js +1 -1
  40. package/package.json +3 -3
package/dist/index.cjs.js CHANGED
@@ -14,6 +14,8 @@ var i18n = require('i18next');
14
14
  var updateLocale = require('dayjs/plugin/updateLocale');
15
15
  var localeData = require('dayjs/plugin/localeData');
16
16
  var relativeTime = require('dayjs/plugin/relativeTime');
17
+ var utc = require('dayjs/plugin/utc');
18
+ var timezone = require('dayjs/plugin/timezone');
17
19
  require('dayjs/locale/de');
18
20
  require('dayjs/locale/es');
19
21
  require('dayjs/locale/fr');
@@ -88,6 +90,8 @@ var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
88
90
  var updateLocale__default = /*#__PURE__*/_interopDefaultLegacy(updateLocale);
89
91
  var localeData__default = /*#__PURE__*/_interopDefaultLegacy(localeData);
90
92
  var relativeTime__default = /*#__PURE__*/_interopDefaultLegacy(relativeTime);
93
+ var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
94
+ var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
91
95
  var ImageGallery__default = /*#__PURE__*/_interopDefaultLegacy(ImageGallery);
92
96
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
93
97
  var linkify__namespace = /*#__PURE__*/_interopNamespace(linkify);
@@ -609,6 +613,8 @@ var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi"
609
613
  var defaultNS = 'translation';
610
614
  var defaultLng = 'en';
611
615
  Dayjs__default["default"].extend(updateLocale__default["default"]);
616
+ Dayjs__default["default"].extend(utc__default["default"]);
617
+ Dayjs__default["default"].extend(timezone__default["default"]);
612
618
  Dayjs__default["default"].updateLocale('de', {
613
619
  calendar: {
614
620
  lastDay: '[gestern um] LT',
@@ -777,6 +783,9 @@ var en_locale = {
777
783
  var isDayJs = function (dateTimeParser) {
778
784
  return dateTimeParser.extend !== undefined;
779
785
  };
786
+ var supportsTz = function (dateTimeParser) {
787
+ return dateTimeParser.tz !== undefined;
788
+ };
780
789
  /**
781
790
  * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.
782
791
  * Instance of this class should be provided to Chat component to handle translations.
@@ -1020,6 +1029,7 @@ var Streami18n = /** @class */ (function () {
1020
1029
  this.logger = finalOptions.logger;
1021
1030
  this.currentLanguage = finalOptions.language;
1022
1031
  this.DateTimeParser = finalOptions.DateTimeParser;
1032
+ this.timezone = finalOptions.timezone;
1023
1033
  try {
1024
1034
  if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {
1025
1035
  this.DateTimeParser.extend(LocalizedFormat__default["default"]);
@@ -1069,19 +1079,18 @@ var Streami18n = /** @class */ (function () {
1069
1079
  "register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)");
1070
1080
  }
1071
1081
  this.tDateTimeParser = function (timestamp) {
1072
- if (finalOptions.disableDateTimeTranslations || !_this.localeExists(_this.currentLanguage)) {
1073
- /**
1074
- * TS needs to know which is being called to accept the chain call
1075
- */
1076
- if (isDayJs(_this.DateTimeParser)) {
1077
- return _this.DateTimeParser(timestamp).locale(defaultLng);
1078
- }
1079
- return _this.DateTimeParser(timestamp).locale(defaultLng);
1080
- }
1082
+ var language = finalOptions.disableDateTimeTranslations || !_this.localeExists(_this.currentLanguage)
1083
+ ? defaultLng
1084
+ : _this.currentLanguage;
1081
1085
  if (isDayJs(_this.DateTimeParser)) {
1082
- return _this.DateTimeParser(timestamp).locale(_this.currentLanguage);
1086
+ return supportsTz(_this.DateTimeParser)
1087
+ ? _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language)
1088
+ : _this.DateTimeParser(timestamp).locale(language);
1089
+ }
1090
+ if (supportsTz(_this.DateTimeParser) && _this.timezone) {
1091
+ return _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language);
1083
1092
  }
1084
- return _this.DateTimeParser(timestamp).locale(_this.currentLanguage);
1093
+ return _this.DateTimeParser(timestamp).locale(language);
1085
1094
  };
1086
1095
  }
1087
1096
  /**
@@ -30422,7 +30431,7 @@ var CooldownTimer = function (_a) {
30422
30431
  }, 1000);
30423
30432
  return function () { return clearInterval(countdownInterval); };
30424
30433
  });
30425
- return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds === 0 ? null : seconds));
30434
+ return (React__default["default"].createElement("div", { className: 'str-chat__message-input-cooldown', "data-testid": 'cooldown-timer' }, seconds));
30426
30435
  };
30427
30436
 
30428
30437
  var useCommandTrigger = function () {
@@ -31138,9 +31147,12 @@ var useCooldownTimer = function () {
31138
31147
  }, [messages, (_a = client.user) === null || _a === void 0 ? void 0 : _a.id, latestMessageDatesByChannels, channel.cid]);
31139
31148
  React.useEffect(function () {
31140
31149
  var timeSinceOwnLastMessage = ownLatestMessageDate
31141
- ? (new Date().getTime() - ownLatestMessageDate.getTime()) / 1000
31150
+ ? // prevent negative values
31151
+ Math.max(0, (new Date().getTime() - ownLatestMessageDate.getTime()) / 1000)
31142
31152
  : undefined;
31143
- setCooldownRemaining(!skipCooldown && timeSinceOwnLastMessage && cooldownInterval > timeSinceOwnLastMessage
31153
+ setCooldownRemaining(!skipCooldown &&
31154
+ typeof timeSinceOwnLastMessage !== 'undefined' &&
31155
+ cooldownInterval > timeSinceOwnLastMessage
31144
31156
  ? Math.round(cooldownInterval - timeSinceOwnLastMessage)
31145
31157
  : 0);
31146
31158
  }, [cooldownInterval, ownLatestMessageDate, skipCooldown]);
@@ -32575,6 +32587,13 @@ var MessageSimpleWithContext = function (props) {
32575
32587
  if (message.deleted_at || message.type === 'deleted') {
32576
32588
  return React__default["default"].createElement(MessageDeleted$1, { message: message });
32577
32589
  }
32590
+ /** FIXME: isReactionEnabled should be removed with next major version and a proper centralized permissions logic should be put in place
32591
+ * With the current permissions implementation it would be sth like:
32592
+ * const messageActions = getMessageActions();
32593
+ * const canReact = messageActions.includes(MESSAGE_ACTIONS.react);
32594
+ */
32595
+ var canReact = isReactionEnabled;
32596
+ var canShowReactions = hasReactions;
32578
32597
  var showMetadata = !groupedByUser || endOfGroup;
32579
32598
  var showReplyCountButton = !threadList && !!message.reply_count;
32580
32599
  var allowRetry = message.status === 'failed' && message.errorStatusCode !== 403;
@@ -32584,7 +32603,7 @@ var MessageSimpleWithContext = function (props) {
32584
32603
  'pinned-message': message.pinned,
32585
32604
  'str-chat__message--has-attachment': hasAttachment,
32586
32605
  'str-chat__message--highlighted': highlighted,
32587
- 'str-chat__message--with-reactions str-chat__message-with-thread-link': hasReactions && isReactionEnabled,
32606
+ 'str-chat__message--with-reactions str-chat__message-with-thread-link': canShowReactions,
32588
32607
  'str-chat__message-send-can-be-retried': (message === null || message === void 0 ? void 0 : message.status) === 'failed' && (message === null || message === void 0 ? void 0 : message.errorStatusCode) !== 403,
32589
32608
  'str-chat__virtual-message__wrapper--end': endOfGroup,
32590
32609
  'str-chat__virtual-message__wrapper--first': firstOfGroup,
@@ -32601,8 +32620,8 @@ var MessageSimpleWithContext = function (props) {
32601
32620
  }), "data-testid": 'message-inner', onClick: allowRetry ? function () { return handleRetry(message); } : undefined, onKeyUp: allowRetry ? function () { return handleRetry(message); } : undefined },
32602
32621
  React__default["default"].createElement(MessageOptions$1, null),
32603
32622
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-host' },
32604
- hasReactions && isReactionEnabled && React__default["default"].createElement(ReactionsList$1, { reverse: true }),
32605
- showDetailedReactions && isReactionEnabled && (React__default["default"].createElement(ReactionSelector$1, { ref: reactionSelectorRef }))),
32623
+ canShowReactions && React__default["default"].createElement(ReactionsList$1, { reverse: true }),
32624
+ showDetailedReactions && canReact && React__default["default"].createElement(ReactionSelector$1, { ref: reactionSelectorRef })),
32606
32625
  React__default["default"].createElement("div", { className: 'str-chat__message-bubble' },
32607
32626
  ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.length) && !message.quoted_message ? (React__default["default"].createElement(Attachment, { actionHandler: handleAction, attachments: message.attachments })) : null,
32608
32627
  React__default["default"].createElement(MessageText, { message: message, renderText: renderText }),
@@ -32883,6 +32902,64 @@ var makeAddNotifications = function (setNotifications, notificationTimeouts) { r
32883
32902
  notificationTimeouts.push(timeout);
32884
32903
  }; };
32885
32904
 
32905
+ /**
32906
+ * prevent from duplicate invocation of channel.watch()
32907
+ * when events 'notification.message_new' and 'notification.added_to_channel' arrive at the same time
32908
+ */
32909
+ var WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL = {};
32910
+ /**
32911
+ * Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
32912
+ * @param client
32913
+ * @param members
32914
+ * @param type
32915
+ * @param id
32916
+ * @param channel
32917
+ */
32918
+ var getChannel = function (_a) {
32919
+ var channel = _a.channel, client = _a.client, id = _a.id, members = _a.members, type = _a.type;
32920
+ return __awaiter(void 0, void 0, void 0, function () {
32921
+ var theChannel, originalCid, queryPromise;
32922
+ return __generator(this, function (_b) {
32923
+ switch (_b.label) {
32924
+ case 0:
32925
+ if (!channel && !type) {
32926
+ throw new Error('Channel or channel type have to be provided to query a channel.');
32927
+ }
32928
+ theChannel = channel || client.channel(type, id, { members: members });
32929
+ originalCid = (theChannel === null || theChannel === void 0 ? void 0 : theChannel.id)
32930
+ ? theChannel.cid
32931
+ : members && members.length
32932
+ ? generateChannelTempCid(theChannel.type, members)
32933
+ : undefined;
32934
+ if (!originalCid) {
32935
+ throw new Error('Channel ID or channel members array have to be provided to query a channel.');
32936
+ }
32937
+ queryPromise = WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid];
32938
+ if (!queryPromise) return [3 /*break*/, 2];
32939
+ return [4 /*yield*/, queryPromise];
32940
+ case 1:
32941
+ _b.sent();
32942
+ return [3 /*break*/, 4];
32943
+ case 2:
32944
+ WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid] = theChannel.watch();
32945
+ return [4 /*yield*/, WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid]];
32946
+ case 3:
32947
+ _b.sent();
32948
+ delete WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[originalCid];
32949
+ _b.label = 4;
32950
+ case 4: return [2 /*return*/, theChannel];
32951
+ }
32952
+ });
32953
+ });
32954
+ };
32955
+ // Channels created without ID need to be referenced by an identifier until the back-end generates the final ID.
32956
+ var generateChannelTempCid = function (channelType, members) {
32957
+ if (!members)
32958
+ return;
32959
+ var membersStr = __spreadArray([], members, true).sort().join(',');
32960
+ return "".concat(channelType, ":!members-").concat(membersStr);
32961
+ };
32962
+
32886
32963
  var useChannelContainerClasses = function (_a) {
32887
32964
  var _b, _c, _d;
32888
32965
  var customClasses = _a.customClasses;
@@ -33125,22 +33202,40 @@ var ChannelInner = function (props) {
33125
33202
  markRead();
33126
33203
  };
33127
33204
  (function () { return __awaiter(void 0, void 0, void 0, function () {
33128
- var config, e_1;
33129
- return __generator(this, function (_a) {
33130
- switch (_a.label) {
33205
+ var members, _i, _a, member, userId, _b, user, user_id, config, e_1;
33206
+ var _c;
33207
+ return __generator(this, function (_d) {
33208
+ switch (_d.label) {
33131
33209
  case 0:
33132
33210
  if (!!channel.initialized) return [3 /*break*/, 4];
33133
- _a.label = 1;
33211
+ _d.label = 1;
33134
33212
  case 1:
33135
- _a.trys.push([1, 3, , 4]);
33136
- return [4 /*yield*/, channel.watch()];
33213
+ _d.trys.push([1, 3, , 4]);
33214
+ members = [];
33215
+ if (!channel.id && ((_c = channel.data) === null || _c === void 0 ? void 0 : _c.members)) {
33216
+ for (_i = 0, _a = channel.data.members; _i < _a.length; _i++) {
33217
+ member = _a[_i];
33218
+ userId = void 0;
33219
+ if (typeof member === 'string') {
33220
+ userId = member;
33221
+ }
33222
+ else if (typeof member === 'object') {
33223
+ _b = member, user = _b.user, user_id = _b.user_id;
33224
+ userId = user_id || (user === null || user === void 0 ? void 0 : user.id);
33225
+ }
33226
+ if (userId) {
33227
+ members.push(userId);
33228
+ }
33229
+ }
33230
+ }
33231
+ return [4 /*yield*/, getChannel({ channel: channel, client: client, members: members })];
33137
33232
  case 2:
33138
- _a.sent();
33233
+ _d.sent();
33139
33234
  config = channel.getConfig();
33140
33235
  setChannelConfig(config);
33141
33236
  return [3 /*break*/, 4];
33142
33237
  case 3:
33143
- e_1 = _a.sent();
33238
+ e_1 = _d.sent();
33144
33239
  dispatch({ error: e_1, type: 'setError' });
33145
33240
  errored = true;
33146
33241
  return [3 /*break*/, 4];
@@ -33872,52 +33967,6 @@ var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdat
33872
33967
  }, [customHandler]);
33873
33968
  };
33874
33969
 
33875
- /**
33876
- * prevent from duplicate invocation of channel.watch()
33877
- * when events 'notification.message_new' and 'notification.added_to_channel' arrive at the same time
33878
- */
33879
- var WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL = {};
33880
- /**
33881
- * Calls channel.watch() if it was not already recently called. Waits for watch promise to resolve even if it was invoked previously.
33882
- * @param client
33883
- * @param type
33884
- * @param id
33885
- */
33886
- var getChannel = function (client, type, id) { return __awaiter(void 0, void 0, void 0, function () {
33887
- var channel, queryPromise;
33888
- return __generator(this, function (_a) {
33889
- switch (_a.label) {
33890
- case 0:
33891
- channel = client.channel(type, id);
33892
- queryPromise = WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid];
33893
- if (!queryPromise) return [3 /*break*/, 2];
33894
- return [4 /*yield*/, queryPromise];
33895
- case 1:
33896
- _a.sent();
33897
- return [3 /*break*/, 4];
33898
- case 2:
33899
- WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = channel.watch();
33900
- return [4 /*yield*/, WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid]];
33901
- case 3:
33902
- _a.sent();
33903
- WATCH_QUERY_IN_PROGRESS_FOR_CHANNEL[channel.cid] = undefined;
33904
- _a.label = 4;
33905
- case 4: return [2 /*return*/, channel];
33906
- }
33907
- });
33908
- }); };
33909
- var MAX_QUERY_CHANNELS_LIMIT = 30;
33910
- var moveChannelUp = function (_a) {
33911
- var activeChannel = _a.activeChannel, channels = _a.channels, cid = _a.cid;
33912
- // get index of channel to move up
33913
- var channelIndex = channels.findIndex(function (channel) { return channel.cid === cid; });
33914
- if (!activeChannel && channelIndex <= 0)
33915
- return channels;
33916
- // get channel to move up
33917
- var channel = activeChannel || channels[channelIndex];
33918
- return uniqBy__default["default"](__spreadArray([channel], channels, true), 'cid');
33919
- };
33920
-
33921
33970
  var useChannelVisibleListener = function (setChannels, customHandler) {
33922
33971
  var client = useChatContext('useChannelVisibleListener').client;
33923
33972
  React.useEffect(function () {
@@ -33931,7 +33980,11 @@ var useChannelVisibleListener = function (setChannels, customHandler) {
33931
33980
  return [3 /*break*/, 3];
33932
33981
  case 1:
33933
33982
  if (!(event.type && event.channel_type && event.channel_id)) return [3 /*break*/, 3];
33934
- return [4 /*yield*/, getChannel(client, event.channel_type, event.channel_id)];
33983
+ return [4 /*yield*/, getChannel({
33984
+ client: client,
33985
+ id: event.channel_id,
33986
+ type: event.channel_type,
33987
+ })];
33935
33988
  case 2:
33936
33989
  channel_1 = _a.sent();
33937
33990
  setChannels(function (channels) { return uniqBy__default["default"](__spreadArray([channel_1], channels, true), 'cid'); });
@@ -33962,6 +34015,18 @@ var useConnectionRecoveredListener = function (forceUpdate) {
33962
34015
  }, []);
33963
34016
  };
33964
34017
 
34018
+ var MAX_QUERY_CHANNELS_LIMIT = 30;
34019
+ var moveChannelUp = function (_a) {
34020
+ var activeChannel = _a.activeChannel, channels = _a.channels, cid = _a.cid;
34021
+ // get index of channel to move up
34022
+ var channelIndex = channels.findIndex(function (channel) { return channel.cid === cid; });
34023
+ if (!activeChannel && channelIndex <= 0)
34024
+ return channels;
34025
+ // get channel to move up
34026
+ var channel = activeChannel || channels[channelIndex];
34027
+ return uniqBy__default["default"](__spreadArray([channel], channels, true), 'cid');
34028
+ };
34029
+
33965
34030
  var useMessageNewListener = function (setChannels, lockChannelOrder, allowNewMessagesFromUnfilteredChannels) {
33966
34031
  if (lockChannelOrder === void 0) { lockChannelOrder = false; }
33967
34032
  if (allowNewMessagesFromUnfilteredChannels === void 0) { allowNewMessagesFromUnfilteredChannels = true; }
@@ -34009,20 +34074,32 @@ var useNotificationAddedToChannelListener = function (setChannels, customHandler
34009
34074
  React.useEffect(function () {
34010
34075
  var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
34011
34076
  var channel_1;
34012
- var _a;
34013
- return __generator(this, function (_b) {
34014
- switch (_b.label) {
34077
+ var _a, _b;
34078
+ return __generator(this, function (_c) {
34079
+ switch (_c.label) {
34015
34080
  case 0:
34016
34081
  if (!(customHandler && typeof customHandler === 'function')) return [3 /*break*/, 1];
34017
34082
  customHandler(setChannels, event);
34018
34083
  return [3 /*break*/, 3];
34019
34084
  case 1:
34020
34085
  if (!(allowNewMessagesFromUnfilteredChannels && ((_a = event.channel) === null || _a === void 0 ? void 0 : _a.type))) return [3 /*break*/, 3];
34021
- return [4 /*yield*/, getChannel(client, event.channel.type, event.channel.id)];
34086
+ return [4 /*yield*/, getChannel({
34087
+ client: client,
34088
+ id: event.channel.id,
34089
+ members: (_b = event.channel.members) === null || _b === void 0 ? void 0 : _b.reduce(function (acc, _a) {
34090
+ var user = _a.user, user_id = _a.user_id;
34091
+ var userId = user_id || (user === null || user === void 0 ? void 0 : user.id);
34092
+ if (userId) {
34093
+ acc.push(userId);
34094
+ }
34095
+ return acc;
34096
+ }, []),
34097
+ type: event.channel.type,
34098
+ })];
34022
34099
  case 2:
34023
- channel_1 = _b.sent();
34100
+ channel_1 = _c.sent();
34024
34101
  setChannels(function (channels) { return uniqBy__default["default"](__spreadArray([channel_1], channels, true), 'cid'); });
34025
- _b.label = 3;
34102
+ _c.label = 3;
34026
34103
  case 3: return [2 /*return*/];
34027
34104
  }
34028
34105
  });
@@ -34049,7 +34126,11 @@ var useNotificationMessageNewListener = function (setChannels, customHandler, al
34049
34126
  return [3 /*break*/, 3];
34050
34127
  case 1:
34051
34128
  if (!(allowNewMessagesFromUnfilteredChannels && ((_a = event.channel) === null || _a === void 0 ? void 0 : _a.type))) return [3 /*break*/, 3];
34052
- return [4 /*yield*/, getChannel(client, event.channel.type, event.channel.id)];
34129
+ return [4 /*yield*/, getChannel({
34130
+ client: client,
34131
+ id: event.channel.id,
34132
+ type: event.channel.type,
34133
+ })];
34053
34134
  case 2:
34054
34135
  channel_1 = _b.sent();
34055
34136
  setChannels(function (channels) { return uniqBy__default["default"](__spreadArray([channel_1], channels, true), 'cid'); });
@@ -34806,7 +34887,7 @@ var UnMemoizedChannelList = function (props) {
34806
34887
  */
34807
34888
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
34808
34889
 
34809
- var version = '10.10.1';
34890
+ var version = '10.11.0';
34810
34891
 
34811
34892
  var useChat = function (_a) {
34812
34893
  var _b, _c;
@@ -35458,7 +35539,7 @@ notifications) {
35458
35539
  var reactionHandlerWarning = "Reaction handler was called, but it is missing one of its required arguments.\nMake sure the ChannelAction and ChannelState contexts are properly set and the hook is initialized with a valid message.";
35459
35540
  var useReactionHandler = function (message) {
35460
35541
  var updateMessage = useChannelActionContext('useReactionHandler').updateMessage;
35461
- var channel = useChannelStateContext('useReactionHandler').channel;
35542
+ var _a = useChannelStateContext('useReactionHandler'), channel = _a.channel, channelCapabilities = _a.channelCapabilities;
35462
35543
  var client = useChatContext('useReactionHandler').client;
35463
35544
  var createMessagePreview = React.useCallback(function (add, reaction, message) {
35464
35545
  var _a, _b;
@@ -35482,7 +35563,7 @@ var useReactionHandler = function (message) {
35482
35563
  ? __spreadArray([reaction], ((message === null || message === void 0 ? void 0 : message.own_reactions) || []), true) : (_b = message === null || message === void 0 ? void 0 : message.own_reactions) === null || _b === void 0 ? void 0 : _b.filter(function (item) { return item.type !== reaction.type; });
35483
35564
  return __assign(__assign({}, message), { latest_reactions: newReactions || message.latest_reactions, own_reactions: newOwnReactions, reaction_counts: newReactionCounts, reaction_scores: newReactionCounts });
35484
35565
  }, [client.user, client.userID]);
35485
- var creatReactionPreview = function (type) {
35566
+ var createReactionPreview = function (type) {
35486
35567
  var _a;
35487
35568
  return ({
35488
35569
  message_id: message === null || message === void 0 ? void 0 : message.id,
@@ -35494,33 +35575,32 @@ var useReactionHandler = function (message) {
35494
35575
  };
35495
35576
  var toggleReaction = throttle__default["default"](function (id, type, add) { return __awaiter(void 0, void 0, void 0, function () {
35496
35577
  var newReaction, tempMessage, messageResponse, _a;
35497
- var _b;
35498
- return __generator(this, function (_c) {
35499
- switch (_c.label) {
35578
+ return __generator(this, function (_b) {
35579
+ switch (_b.label) {
35500
35580
  case 0:
35501
- if (!message || ((_b = channel.data) === null || _b === void 0 ? void 0 : _b.frozen))
35581
+ if (!message || !channelCapabilities['send-reaction'])
35502
35582
  return [2 /*return*/];
35503
- newReaction = creatReactionPreview(type);
35583
+ newReaction = createReactionPreview(type);
35504
35584
  tempMessage = createMessagePreview(add, newReaction, message);
35505
- _c.label = 1;
35585
+ _b.label = 1;
35506
35586
  case 1:
35507
- _c.trys.push([1, 6, , 7]);
35587
+ _b.trys.push([1, 6, , 7]);
35508
35588
  updateMessage(tempMessage);
35509
35589
  if (!add) return [3 /*break*/, 3];
35510
35590
  return [4 /*yield*/, channel.sendReaction(id, { type: type })];
35511
35591
  case 2:
35512
- _a = _c.sent();
35592
+ _a = _b.sent();
35513
35593
  return [3 /*break*/, 5];
35514
35594
  case 3: return [4 /*yield*/, channel.deleteReaction(id, type)];
35515
35595
  case 4:
35516
- _a = _c.sent();
35517
- _c.label = 5;
35596
+ _a = _b.sent();
35597
+ _b.label = 5;
35518
35598
  case 5:
35519
35599
  messageResponse = _a;
35520
35600
  updateMessage(messageResponse.message);
35521
35601
  return [3 /*break*/, 7];
35522
35602
  case 6:
35523
- _c.sent();
35603
+ _b.sent();
35524
35604
  // revert to the original message if the API call fails
35525
35605
  updateMessage(message);
35526
35606
  return [3 /*break*/, 7];
@@ -35575,12 +35655,10 @@ var useReactionHandler = function (message) {
35575
35655
  }); };
35576
35656
  };
35577
35657
  var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef, closeReactionSelectorOnClick) {
35578
- var _a;
35579
- var _b = useChannelStateContext('useReactionClick'), channel = _b.channel, _c = _b.channelCapabilities, channelCapabilities = _c === void 0 ? {} : _c, channelConfig = _b.channelConfig;
35580
- var _d = React.useState(false), showDetailedReactions = _d[0], setShowDetailedReactions = _d[1];
35658
+ var _a = useChannelStateContext('useReactionClick').channelCapabilities, channelCapabilities = _a === void 0 ? {} : _a;
35659
+ var _b = React.useState(false), showDetailedReactions = _b[0], setShowDetailedReactions = _b[1];
35581
35660
  var hasListener = React.useRef(false);
35582
- var isFrozen = !!((_a = channel.data) === null || _a === void 0 ? void 0 : _a.frozen);
35583
- var isReactionEnabled = ((channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction']) || isFrozen;
35661
+ var isReactionEnabled = channelCapabilities['send-reaction'];
35584
35662
  var messageDeleted = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
35585
35663
  var closeDetailedReactions = React.useCallback(function (event) {
35586
35664
  var _a;
@@ -35628,9 +35706,8 @@ var useReactionClick = function (message, reactionSelectorRef, messageWrapperRef
35628
35706
  }
35629
35707
  }, [messageDeleted, closeDetailedReactions, messageWrapperRef]);
35630
35708
  var onReactionListClick = function (event) {
35631
- if (event === null || event === void 0 ? void 0 : event.stopPropagation) {
35632
- event.stopPropagation();
35633
- }
35709
+ var _a;
35710
+ (_a = event === null || event === void 0 ? void 0 : event.stopPropagation) === null || _a === void 0 ? void 0 : _a.call(event);
35634
35711
  setShowDetailedReactions(function (prev) { return !prev; });
35635
35712
  };
35636
35713
  return {