stream-chat-react 8.1.0 → 8.1.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.
Files changed (51) hide show
  1. package/dist/browser.full-bundle.js +45 -28
  2. package/dist/browser.full-bundle.js.map +1 -1
  3. package/dist/browser.full-bundle.min.js +1 -1
  4. package/dist/browser.full-bundle.min.js.map +1 -1
  5. package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
  6. package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
  7. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  8. package/dist/components/Channel/Channel.d.ts.map +1 -1
  9. package/dist/components/Channel/Channel.js +5 -8
  10. package/dist/components/Message/MessageCommerce.d.ts.map +1 -1
  11. package/dist/components/Message/MessageCommerce.js +2 -1
  12. package/dist/components/Message/MessageLivestream.d.ts.map +1 -1
  13. package/dist/components/Message/MessageLivestream.js +2 -1
  14. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  15. package/dist/components/Message/MessageSimple.js +2 -1
  16. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  17. package/dist/components/MessageList/VirtualizedMessageList.js +2 -1
  18. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  19. package/dist/components/MessageList/hooks/useMessageListElements.js +5 -2
  20. package/dist/components/MessageList/utils.d.ts +1 -0
  21. package/dist/components/MessageList/utils.d.ts.map +1 -1
  22. package/dist/components/MessageList/utils.js +27 -13
  23. package/dist/constants/messageTypes.d.ts +5 -0
  24. package/dist/constants/messageTypes.d.ts.map +1 -0
  25. package/dist/constants/messageTypes.js +4 -0
  26. package/dist/css/index.css +1 -1
  27. package/dist/index.cjs.js +45 -28
  28. package/dist/index.cjs.js.map +1 -1
  29. package/dist/scss/ActionsBox.scss +2 -2
  30. package/dist/scss/Attachment.scss +1 -1
  31. package/dist/scss/ChannelList.scss +6 -0
  32. package/dist/scss/ChannelSearch.scss +12 -1
  33. package/dist/scss/Message.scss +86 -80
  34. package/dist/scss/MessageInput.scss +8 -2
  35. package/dist/scss/MessageInputFlat.scss +4 -0
  36. package/dist/scss/MessageNotification.scss +6 -18
  37. package/dist/scss/Thread.scss +20 -4
  38. package/dist/scss/_base.scss +4 -0
  39. package/dist/stories/connected-user.stories.d.ts.map +1 -1
  40. package/dist/stories/connected-user.stories.js +13 -39
  41. package/dist/stories/mark-read.stories.d.ts +4 -0
  42. package/dist/stories/mark-read.stories.d.ts.map +1 -0
  43. package/dist/stories/mark-read.stories.js +77 -0
  44. package/dist/stories/utils.d.ts +8 -0
  45. package/dist/stories/utils.d.ts.map +1 -1
  46. package/dist/stories/utils.js +33 -0
  47. package/dist/types/types.d.ts +2 -1
  48. package/dist/types/types.d.ts.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +9 -5
package/dist/index.cjs.js CHANGED
@@ -3667,6 +3667,11 @@ var UnMemoizedMessageTimestamp = function (props) {
3667
3667
  };
3668
3668
  var MessageTimestamp = React__default['default'].memo(UnMemoizedMessageTimestamp);
3669
3669
 
3670
+ var CUSTOM_MESSAGE_TYPE = {
3671
+ date: 'message.date',
3672
+ intro: 'channel.intro',
3673
+ };
3674
+
3670
3675
  var useCommandTrigger = function () {
3671
3676
  var channelConfig = useChannelStateContext('useCommandTrigger').channelConfig;
3672
3677
  var commands = channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.commands;
@@ -5561,7 +5566,7 @@ var MessageSimpleWithContext = function (props) {
5561
5566
  var messageClasses = isMyMessage()
5562
5567
  ? 'str-chat__message str-chat__message--me str-chat__message-simple str-chat__message-simple--me'
5563
5568
  : 'str-chat__message str-chat__message-simple';
5564
- if (message.customType === 'message.date') {
5569
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date) {
5565
5570
  return null;
5566
5571
  }
5567
5572
  if (message.deleted_at || message.type === 'deleted') {
@@ -5822,14 +5827,11 @@ var ChannelInner = function (props) {
5822
5827
  }, [channel.cid, doMarkReadRequest]);
5823
5828
  React.useEffect(function () {
5824
5829
  var _a;
5825
- if (state.thread && ((_a = state.messages) === null || _a === void 0 ? void 0 : _a.length)) {
5826
- for (var i = state.messages.length - 1; i >= 0; i -= 1) {
5827
- if (state.messages[i].id === state.thread.id) {
5828
- dispatch({ message: state.messages[i], type: 'setThread' });
5829
- break;
5830
- }
5831
- }
5832
- }
5830
+ if (!state.thread)
5831
+ return;
5832
+ var message = (_a = state.messages) === null || _a === void 0 ? void 0 : _a.find(function (m) { var _a; return m.id === ((_a = state.thread) === null || _a === void 0 ? void 0 : _a.id); });
5833
+ if (message)
5834
+ dispatch({ message: message, type: 'setThread' });
5833
5835
  }, [state.messages, state.thread]);
5834
5836
  /** MESSAGE */
5835
5837
  // Adds a temporary notification to message list, will be removed after 5 seconds
@@ -7777,7 +7779,7 @@ var Streami18n = /** @class */ (function () {
7777
7779
  return Streami18n;
7778
7780
  }());
7779
7781
 
7780
- var version = '8.1.0';
7782
+ var version = '8.1.1';
7781
7783
 
7782
7784
  var useChat = function (_a) {
7783
7785
  var _b, _c;
@@ -8230,7 +8232,7 @@ var MessageCommerceWithContext = function (props) {
8230
8232
  if (message.deleted_at) {
8231
8233
  return React__default['default'].createElement(MessageDeleted$1, { message: message });
8232
8234
  }
8233
- if (message.customType === 'message.date') {
8235
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date) {
8234
8236
  return null;
8235
8237
  }
8236
8238
  return (React__default['default'].createElement("div", { className: ("\n\t\t\t\t\t\t" + messageClasses + "\n\t\t\t\t\t\tstr-chat__message-commerce--" + message.type + "\n\t\t\t\t\t\t" + (message.text ? 'str-chat__message-commerce--has-text' : 'str-chat__message-commerce--has-no-text') + "\n\t\t\t\t\t\t" + (hasAttachment ? 'str-chat__message-commerce--has-attachment' : '') + "\n " + (hasReactions && isReactionEnabled ? 'str-chat__message-commerce--with-reactions' : '') + "\n " + ("str-chat__message-commerce--" + firstGroupStyle) + "\n " + (message.pinned ? 'pinned-message' : '') + "\n\t\t\t\t\t").trim(), "data-testid": 'message-commerce-wrapper', key: message.id },
@@ -8271,7 +8273,7 @@ var MessageLivestreamWithContext = function (props) {
8271
8273
  messageTextToRender,
8272
8274
  ]);
8273
8275
  var firstGroupStyle = groupStyles ? groupStyles[0] : 'single';
8274
- if (message.customType === 'message.date') {
8276
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date) {
8275
8277
  return null;
8276
8278
  }
8277
8279
  if (message.deleted_at) {
@@ -8556,9 +8558,9 @@ var processMessages = function (params) {
8556
8558
  // do not show date separator for current user's messages
8557
8559
  if (enableDateSeparator && unread && ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) !== userId) {
8558
8560
  newMessages.push({
8559
- customType: 'message.date',
8561
+ customType: CUSTOM_MESSAGE_TYPE.date,
8560
8562
  date: message.created_at,
8561
- id: message.id,
8563
+ id: makeDateMessageId(message.created_at),
8562
8564
  unread: unread,
8563
8565
  });
8564
8566
  }
@@ -8570,13 +8572,13 @@ var processMessages = function (params) {
8570
8572
  (hideDeletedMessages &&
8571
8573
  (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.type) === 'deleted' &&
8572
8574
  lastDateSeparator !== messageDate)) &&
8573
- ((_b = newMessages === null || newMessages === void 0 ? void 0 : newMessages[newMessages.length - 1]) === null || _b === void 0 ? void 0 : _b.customType) !== 'message.date' // do not show two date separators in a row)
8575
+ ((_b = newMessages === null || newMessages === void 0 ? void 0 : newMessages[newMessages.length - 1]) === null || _b === void 0 ? void 0 : _b.customType) !== CUSTOM_MESSAGE_TYPE.date // do not show two date separators in a row)
8574
8576
  ) {
8575
8577
  lastDateSeparator = messageDate;
8576
8578
  newMessages.push({
8577
- customType: 'message.date',
8579
+ customType: CUSTOM_MESSAGE_TYPE.date,
8578
8580
  date: message.created_at,
8579
- id: message.id,
8581
+ id: makeDateMessageId(message.created_at),
8580
8582
  }, message);
8581
8583
  }
8582
8584
  else {
@@ -8589,6 +8591,16 @@ var processMessages = function (params) {
8589
8591
  }
8590
8592
  return newMessages;
8591
8593
  };
8594
+ var makeDateMessageId = function (date) {
8595
+ var idSuffix;
8596
+ try {
8597
+ idSuffix = !date ? uuid.v4() : date instanceof Date ? date.toISOString() : date;
8598
+ }
8599
+ catch (e) {
8600
+ idSuffix = uuid.v4();
8601
+ }
8602
+ return CUSTOM_MESSAGE_TYPE.date + "-" + idSuffix;
8603
+ };
8592
8604
  // fast since it usually iterates just the last few messages
8593
8605
  var getLastReceived = function (messages) {
8594
8606
  for (var i = messages.length - 1; i > 0; i -= 1) {
@@ -8631,7 +8643,9 @@ var getReadStates = function (messages, read, returnAllReadData) {
8631
8643
  };
8632
8644
  var insertIntro = function (messages, headerPosition) {
8633
8645
  var newMessages = messages;
8634
- var intro = { customType: 'channel.intro' };
8646
+ var intro = {
8647
+ customType: CUSTOM_MESSAGE_TYPE.intro,
8648
+ };
8635
8649
  // if no headerPosition is set, HeaderComponent will go at the top
8636
8650
  if (!headerPosition) {
8637
8651
  newMessages.unshift(intro);
@@ -8654,7 +8668,7 @@ var insertIntro = function (messages, headerPosition) {
8654
8668
  if (messageTime && messageTime < headerPosition) {
8655
8669
  // if header position is also smaller than message time continue;
8656
8670
  if (nextMessageTime && nextMessageTime < headerPosition) {
8657
- if (messages[i + 1] && messages[i + 1].customType === 'message.date')
8671
+ if (messages[i + 1] && messages[i + 1].customType === CUSTOM_MESSAGE_TYPE.date)
8658
8672
  continue;
8659
8673
  if (!nextMessageTime) {
8660
8674
  newMessages.push(intro);
@@ -8671,24 +8685,24 @@ var insertIntro = function (messages, headerPosition) {
8671
8685
  };
8672
8686
  var getGroupStyles = function (message, previousMessage, nextMessage, noGroupByUser) {
8673
8687
  var _a, _b, _c, _d, _e, _f, _g;
8674
- if (message.customType === 'message.date')
8688
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date)
8675
8689
  return '';
8676
- if (message.customType === 'channel.intro')
8690
+ if (message.customType === CUSTOM_MESSAGE_TYPE.intro)
8677
8691
  return '';
8678
8692
  if (noGroupByUser || ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.length) !== 0)
8679
8693
  return 'single';
8680
8694
  var isTopMessage = !previousMessage ||
8681
- previousMessage.customType === 'channel.intro' ||
8682
- previousMessage.customType === 'message.date' ||
8695
+ previousMessage.customType === CUSTOM_MESSAGE_TYPE.intro ||
8696
+ previousMessage.customType === CUSTOM_MESSAGE_TYPE.date ||
8683
8697
  previousMessage.type === 'system' ||
8684
8698
  ((_b = previousMessage.attachments) === null || _b === void 0 ? void 0 : _b.length) !== 0 ||
8685
8699
  ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_d = previousMessage.user) === null || _d === void 0 ? void 0 : _d.id) ||
8686
8700
  previousMessage.type === 'error' ||
8687
8701
  previousMessage.deleted_at;
8688
8702
  var isBottomMessage = !nextMessage ||
8689
- nextMessage.customType === 'message.date' ||
8703
+ nextMessage.customType === CUSTOM_MESSAGE_TYPE.date ||
8690
8704
  nextMessage.type === 'system' ||
8691
- nextMessage.customType === 'channel.intro' ||
8705
+ nextMessage.customType === CUSTOM_MESSAGE_TYPE.intro ||
8692
8706
  ((_e = nextMessage.attachments) === null || _e === void 0 ? void 0 : _e.length) !== 0 ||
8693
8707
  ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_g = nextMessage.user) === null || _g === void 0 ? void 0 : _g.id) ||
8694
8708
  nextMessage.type === 'error' ||
@@ -8764,11 +8778,13 @@ var useMessageListElements = function (props) {
8764
8778
  return React.useMemo(function () {
8765
8779
  return enrichedMessages.map(function (message) {
8766
8780
  var _a;
8767
- if (message.customType === 'message.date' && message.date && isDate(message.date)) {
8781
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date &&
8782
+ message.date &&
8783
+ isDate(message.date)) {
8768
8784
  return (React__default['default'].createElement("li", { key: message.date.toISOString() + "-i" },
8769
8785
  React__default['default'].createElement(DateSeparator$1, { date: message.date, formatDate: internalMessageProps.formatDate, unread: message.unread })));
8770
8786
  }
8771
- if (message.customType === 'channel.intro' && HeaderComponent) {
8787
+ if (message.customType === CUSTOM_MESSAGE_TYPE.intro && HeaderComponent) {
8772
8788
  return (React__default['default'].createElement("li", { key: 'intro' },
8773
8789
  React__default['default'].createElement(HeaderComponent, null)));
8774
8790
  }
@@ -9379,7 +9395,7 @@ var VirtualizedMessageListWithContext = function (props) {
9379
9395
  return customMessageRenderer(messageList, streamMessageIndex);
9380
9396
  }
9381
9397
  var message = messageList[streamMessageIndex];
9382
- if (message.customType === 'message.date' && message.date && isDate(message.date)) {
9398
+ if (message.customType === CUSTOM_MESSAGE_TYPE.date && message.date && isDate(message.date)) {
9383
9399
  return React__default['default'].createElement(DateSeparator$1, { date: message.date, unread: message.unread });
9384
9400
  }
9385
9401
  if (!message)
@@ -9692,6 +9708,7 @@ exports.itTranslations = itTranslations;
9692
9708
  exports.jaTranslations = jaTranslations;
9693
9709
  exports.koTranslations = koTranslations;
9694
9710
  exports.listener = Listeners;
9711
+ exports.makeDateMessageId = makeDateMessageId;
9695
9712
  exports.markDownRenderers = markDownRenderers;
9696
9713
  exports.matchMarkdownLinks = matchMarkdownLinks;
9697
9714
  exports.mentionsMarkdownPlugin = mentionsMarkdownPlugin;