stream-chat-react 8.1.3-beta.1 → 9.0.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 +178 -250
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +4 -4
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Attachment/utils.js +2 -2
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts +2 -1
- package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
- package/dist/components/AutoCompleteTextarea/Textarea.js +10 -17
- package/dist/components/Channel/Channel.js +2 -2
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +2 -2
- package/dist/components/Channel/utils.js +2 -2
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreview.js +20 -4
- package/dist/components/ChatAutoComplete/ChatAutoComplete.js +1 -1
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +5 -10
- package/dist/components/MessageInput/MessageInput.d.ts +12 -8
- package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useAttachments.js +2 -2
- package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +2 -2
- package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useMessageInputState.js +24 -27
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/usePasteHandler.js +3 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +17 -15
- package/dist/components/MessageList/utils.js +3 -3
- package/dist/components/Thread/Thread.js +50 -10
- package/dist/index.cjs.js +116 -105
- package/dist/index.cjs.js.map +1 -1
- package/dist/stories/{connected-user.stories.d.ts → add-message.stories.d.ts} +1 -1
- package/dist/stories/add-message.stories.d.ts.map +1 -0
- package/dist/stories/{connected-user.stories.js → add-message.stories.js} +4 -3
- package/dist/stories/jump-to-message.stories.d.ts.map +1 -1
- package/dist/stories/jump-to-message.stories.js +0 -3
- package/dist/stories/mark-read.stories.d.ts.map +1 -1
- package/dist/stories/mark-read.stories.js +4 -25
- package/dist/stories/navigate-long-message-lists.stories.d.ts +4 -0
- package/dist/stories/navigate-long-message-lists.stories.d.ts.map +1 -0
- package/dist/stories/navigate-long-message-lists.stories.js +167 -0
- package/dist/utils.d.ts +5 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +5 -8
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +6 -5
- package/dist/stories/connected-user.stories.d.ts.map +0 -1
package/dist/index.cjs.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var ReactPlayer = require('react-player');
|
|
7
|
-
var
|
|
7
|
+
var nanoid = require('nanoid');
|
|
8
8
|
var sanitizeUrl = require('@braintree/sanitize-url');
|
|
9
9
|
var Dayjs = require('dayjs');
|
|
10
10
|
var calendar = require('dayjs/plugin/calendar');
|
|
@@ -1148,7 +1148,7 @@ var renderAttachmentWithinContainer = function (props) {
|
|
|
1148
1148
|
? 'actions'
|
|
1149
1149
|
: '';
|
|
1150
1150
|
}
|
|
1151
|
-
return (React__default['default'].createElement("div", { className: "str-chat__message-attachment str-chat__message-attachment--" + componentType + " str-chat__message-attachment--" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || '') + " str-chat__message-attachment--" + componentType + "--" + extra, key: (isGalleryAttachmentType(attachment) ? '' : (attachment === null || attachment === void 0 ? void 0 : attachment.id) ||
|
|
1151
|
+
return (React__default['default'].createElement("div", { className: "str-chat__message-attachment str-chat__message-attachment--" + componentType + " str-chat__message-attachment--" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || '') + " str-chat__message-attachment--" + componentType + "--" + extra, key: (isGalleryAttachmentType(attachment) ? '' : (attachment === null || attachment === void 0 ? void 0 : attachment.id) || nanoid.nanoid()) + "-" + ((attachment === null || attachment === void 0 ? void 0 : attachment.type) || 'none') + " " }, children));
|
|
1152
1152
|
};
|
|
1153
1153
|
var renderAttachmentActions = function (props) {
|
|
1154
1154
|
var _a;
|
|
@@ -1491,14 +1491,10 @@ var renderText = function (text, mentioned_users, options) {
|
|
|
1491
1491
|
function escapeRegExp(text) {
|
|
1492
1492
|
return text.replace(/[-[\]{}()*+?.,\\^$|#]/g, '\\$&');
|
|
1493
1493
|
}
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
function generateRandomId() {
|
|
1499
|
-
// prettier-ignore
|
|
1500
|
-
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
|
|
1501
|
-
}
|
|
1494
|
+
/**
|
|
1495
|
+
* @deprecated will be removed in the next major release
|
|
1496
|
+
*/
|
|
1497
|
+
var generateRandomId = nanoid.nanoid;
|
|
1502
1498
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charAt#getting_whole_characters
|
|
1503
1499
|
var getWholeChar = function (str, i) {
|
|
1504
1500
|
var code = str.charCodeAt(i);
|
|
@@ -1871,10 +1867,14 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1871
1867
|
return _this.textareaRef.selectionEnd;
|
|
1872
1868
|
});
|
|
1873
1869
|
|
|
1870
|
+
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_defaultShouldSubmit", function (event) {
|
|
1871
|
+
return event.key === 'Enter' && !event.shiftKey;
|
|
1872
|
+
});
|
|
1873
|
+
|
|
1874
1874
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_handleKeyDown", function (event) {
|
|
1875
|
-
var _this$props$
|
|
1876
|
-
|
|
1877
|
-
if (
|
|
1875
|
+
var _this$props$shouldSub = _this.props.shouldSubmit,
|
|
1876
|
+
shouldSubmit = _this$props$shouldSub === void 0 ? _this._defaultShouldSubmit : _this$props$shouldSub;
|
|
1877
|
+
if (shouldSubmit !== null && shouldSubmit !== void 0 && shouldSubmit(event)) return _this._onEnter(event);
|
|
1878
1878
|
if (event.key === ' ') return _this._onSpace(event);
|
|
1879
1879
|
if (event.key === 'Escape') return _this._closeAutocomplete();
|
|
1880
1880
|
});
|
|
@@ -1883,13 +1883,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
1883
1883
|
if (!_this.textareaRef) return;
|
|
1884
1884
|
var trigger = _this.state.currentTrigger;
|
|
1885
1885
|
|
|
1886
|
-
var hasFocus = _this.textareaRef.matches(':focus'); // Don't submit if the element doesn't have focus or the shift key is pressed, unless shift+Enter were provided as submit keys
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
if (!hasFocus || event.shiftKey === true && !_this.keycodeSubmitShiftE || event.shiftKey === true && !_this.props.keycodeSubmitKeys) {
|
|
1890
|
-
return;
|
|
1891
|
-
}
|
|
1892
|
-
|
|
1893
1886
|
if (!trigger || !_this.state.data) {
|
|
1894
1887
|
// trigger a submit
|
|
1895
1888
|
_this._replaceWord();
|
|
@@ -2156,7 +2149,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
2156
2149
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_cleanUpProps", function () {
|
|
2157
2150
|
var props = _objectSpread({}, _this.props);
|
|
2158
2151
|
|
|
2159
|
-
var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', '
|
|
2152
|
+
var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'shouldSubmit', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value']; // eslint-disable-next-line
|
|
2160
2153
|
|
|
2161
2154
|
for (var prop in props) {
|
|
2162
2155
|
if (notSafe.includes(prop)) delete props[prop];
|
|
@@ -2168,8 +2161,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
2168
2161
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_isCommand", function (text) {
|
|
2169
2162
|
if (text[0] !== '/') return false;
|
|
2170
2163
|
var tokens = text.split(' ');
|
|
2171
|
-
|
|
2172
|
-
return true;
|
|
2164
|
+
return tokens.length <= 1;
|
|
2173
2165
|
});
|
|
2174
2166
|
|
|
2175
2167
|
_defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_changeHandler", function (e) {
|
|
@@ -2375,9 +2367,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
2375
2367
|
currentTrigger: null,
|
|
2376
2368
|
data: null,
|
|
2377
2369
|
dataLoading: false,
|
|
2378
|
-
keycodeSubmitShiftE: false,
|
|
2379
2370
|
left: null,
|
|
2380
|
-
listenerIndex: {},
|
|
2381
2371
|
selectionEnd: 0,
|
|
2382
2372
|
selectionStart: 0,
|
|
2383
2373
|
top: null,
|
|
@@ -2436,7 +2426,10 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
2436
2426
|
var _this$state7 = this.state,
|
|
2437
2427
|
dataLoading = _this$state7.dataLoading,
|
|
2438
2428
|
value = _this$state7.value;
|
|
2439
|
-
if (!this.props.grow) maxRows = 1;
|
|
2429
|
+
if (!this.props.grow) maxRows = 1; // By setting defaultValue to undefined, avoid error:
|
|
2430
|
+
// ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
|
|
2431
|
+
// Textarea elements must be either controlled or uncontrolled
|
|
2432
|
+
|
|
2440
2433
|
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2441
2434
|
className: "rta ".concat(dataLoading === true ? 'rta--loading' : '', " ").concat(containerClassName || ''),
|
|
2442
2435
|
style: containerStyle
|
|
@@ -2458,7 +2451,9 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
|
|
|
2458
2451
|
},
|
|
2459
2452
|
style: style,
|
|
2460
2453
|
value: value
|
|
2461
|
-
}, this.props.additionalTextareaProps
|
|
2454
|
+
}, this.props.additionalTextareaProps, {
|
|
2455
|
+
defaultValue: undefined
|
|
2456
|
+
})));
|
|
2462
2457
|
}
|
|
2463
2458
|
}], [{
|
|
2464
2459
|
key: "getDerivedStateFromProps",
|
|
@@ -2504,7 +2499,6 @@ ReactTextareaAutocomplete.propTypes = {
|
|
|
2504
2499
|
dropdownStyle: PropTypes__default['default'].object,
|
|
2505
2500
|
itemClassName: PropTypes__default['default'].string,
|
|
2506
2501
|
itemStyle: PropTypes__default['default'].object,
|
|
2507
|
-
keycodeSubmitKeys: PropTypes__default['default'].array,
|
|
2508
2502
|
listClassName: PropTypes__default['default'].string,
|
|
2509
2503
|
listStyle: PropTypes__default['default'].object,
|
|
2510
2504
|
loaderClassName: PropTypes__default['default'].string,
|
|
@@ -2515,6 +2509,7 @@ ReactTextareaAutocomplete.propTypes = {
|
|
|
2515
2509
|
onCaretPositionChange: PropTypes__default['default'].func,
|
|
2516
2510
|
onChange: PropTypes__default['default'].func,
|
|
2517
2511
|
onSelect: PropTypes__default['default'].func,
|
|
2512
|
+
shouldSubmit: PropTypes__default['default'].func,
|
|
2518
2513
|
style: PropTypes__default['default'].object,
|
|
2519
2514
|
SuggestionList: PropTypes__default['default'].elementType,
|
|
2520
2515
|
trigger: triggerPropsCheck,
|
|
@@ -2673,7 +2668,7 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2673
2668
|
return type;
|
|
2674
2669
|
}).join() : '') + pinned + reply_count + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2675
2670
|
? updated_at.toISOString()
|
|
2676
|
-
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.
|
|
2671
|
+
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
|
|
2677
2672
|
})
|
|
2678
2673
|
.join();
|
|
2679
2674
|
var memoizedThreadMessageData = threadMessages
|
|
@@ -2684,7 +2679,7 @@ var useCreateChannelStateContext = function (value) {
|
|
|
2684
2679
|
return type;
|
|
2685
2680
|
}).join() : '') + pinned + status + (updated_at && (isDayOrMoment(updated_at) || isDate(updated_at))
|
|
2686
2681
|
? updated_at.toISOString()
|
|
2687
|
-
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.
|
|
2682
|
+
: updated_at || '') + (user === null || user === void 0 ? void 0 : user.updated_at);
|
|
2688
2683
|
})
|
|
2689
2684
|
.join();
|
|
2690
2685
|
var channelStateContext = React.useMemo(function () { return ({
|
|
@@ -3100,7 +3095,7 @@ var showMessageActionsBox = function (actions, inThread) {
|
|
|
3100
3095
|
return true;
|
|
3101
3096
|
};
|
|
3102
3097
|
var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
3103
|
-
var _a, _b, _c, _d, _e, _f
|
|
3098
|
+
var _a, _b, _c, _d, _e, _f;
|
|
3104
3099
|
var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
|
|
3105
3100
|
var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
|
|
3106
3101
|
if (prevMessageUI !== nextMessageUI)
|
|
@@ -3119,8 +3114,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
3119
3114
|
prevMessage.text === nextMessage.text &&
|
|
3120
3115
|
prevMessage.type === nextMessage.type &&
|
|
3121
3116
|
prevMessage.updated_at === nextMessage.updated_at &&
|
|
3122
|
-
((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.
|
|
3123
|
-
((_g = prevMessage.user) === null || _g === void 0 ? void 0 : _g.name) === ((_h = nextMessage.user) === null || _h === void 0 ? void 0 : _h.name);
|
|
3117
|
+
((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
|
|
3124
3118
|
if (!messagesAreEqual)
|
|
3125
3119
|
return false;
|
|
3126
3120
|
var deepEqualProps = deepequal__default['default'](nextProps.readBy, prevProps.readBy) &&
|
|
@@ -3134,7 +3128,7 @@ var areMessagePropsEqual = function (prevProps, nextProps) {
|
|
|
3134
3128
|
);
|
|
3135
3129
|
};
|
|
3136
3130
|
var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
3137
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k
|
|
3131
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
3138
3132
|
var prevLastReceivedId = prevProps.lastReceivedId, prevMessage = prevProps.message;
|
|
3139
3133
|
var nextLastReceivedId = nextProps.lastReceivedId, nextMessage = nextProps.message;
|
|
3140
3134
|
if (prevProps.editing !== nextProps.editing)
|
|
@@ -3154,7 +3148,7 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
3154
3148
|
prevLastReceivedId !== nextLastReceivedId) {
|
|
3155
3149
|
return false;
|
|
3156
3150
|
}
|
|
3157
|
-
|
|
3151
|
+
return (prevMessage.deleted_at === nextMessage.deleted_at &&
|
|
3158
3152
|
((_e = prevMessage.latest_reactions) === null || _e === void 0 ? void 0 : _e.length) === ((_f = nextMessage.latest_reactions) === null || _f === void 0 ? void 0 : _f.length) &&
|
|
3159
3153
|
((_g = prevMessage.own_reactions) === null || _g === void 0 ? void 0 : _g.length) === ((_h = nextMessage.own_reactions) === null || _h === void 0 ? void 0 : _h.length) &&
|
|
3160
3154
|
prevMessage.pinned === nextMessage.pinned &&
|
|
@@ -3163,11 +3157,7 @@ var areMessageUIPropsEqual = function (prevProps, nextProps) {
|
|
|
3163
3157
|
prevMessage.text === nextMessage.text &&
|
|
3164
3158
|
prevMessage.type === nextMessage.type &&
|
|
3165
3159
|
prevMessage.updated_at === nextMessage.updated_at &&
|
|
3166
|
-
((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.
|
|
3167
|
-
((_l = prevMessage.user) === null || _l === void 0 ? void 0 : _l.name) === ((_m = nextMessage.user) === null || _m === void 0 ? void 0 : _m.name);
|
|
3168
|
-
if (!messagesAreEqual)
|
|
3169
|
-
return false;
|
|
3170
|
-
return true;
|
|
3160
|
+
((_j = prevMessage.user) === null || _j === void 0 ? void 0 : _j.updated_at) === ((_k = nextMessage.user) === null || _k === void 0 ? void 0 : _k.updated_at));
|
|
3171
3161
|
};
|
|
3172
3162
|
var messageHasReactions = function (message) { return !!(message === null || message === void 0 ? void 0 : message.latest_reactions) && !!message.latest_reactions.length; };
|
|
3173
3163
|
var messageHasAttachments = function (message) { return !!(message === null || message === void 0 ? void 0 : message.attachments) && !!message.attachments.length; };
|
|
@@ -4746,7 +4736,7 @@ var UnMemoizedChatAutoComplete = function (props) {
|
|
|
4746
4736
|
innerRef.current = ref;
|
|
4747
4737
|
}
|
|
4748
4738
|
}, [innerRef]);
|
|
4749
|
-
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item',
|
|
4739
|
+
return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, shouldSubmit: messageInput.shouldSubmit, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
|
|
4750
4740
|
};
|
|
4751
4741
|
var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
|
|
4752
4742
|
|
|
@@ -5074,7 +5064,7 @@ var useAttachments = function (props, state, dispatch, textareaRef) {
|
|
|
5074
5064
|
Array.from(files)
|
|
5075
5065
|
.slice(0, maxFilesLeft)
|
|
5076
5066
|
.forEach(function (file) {
|
|
5077
|
-
var id =
|
|
5067
|
+
var id = nanoid.nanoid();
|
|
5078
5068
|
if (file.type.startsWith('image/') &&
|
|
5079
5069
|
!file.type.endsWith('.photoshop') // photoshop files begin with 'image/'
|
|
5080
5070
|
) {
|
|
@@ -5325,25 +5315,27 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
|
|
|
5325
5315
|
_a.sent();
|
|
5326
5316
|
addNotification(t('Edit message request failed'), 'error');
|
|
5327
5317
|
return [3 /*break*/, 4];
|
|
5328
|
-
case 4: return [3 /*break*/,
|
|
5318
|
+
case 4: return [3 /*break*/, 13];
|
|
5329
5319
|
case 5:
|
|
5330
|
-
_a.trys.push([5,
|
|
5320
|
+
_a.trys.push([5, 12, , 13]);
|
|
5331
5321
|
dispatch({ type: 'clear' });
|
|
5332
|
-
if (!overrideSubmitHandler) return [3 /*break*/,
|
|
5333
|
-
overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid);
|
|
5334
|
-
|
|
5335
|
-
case 6: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
|
|
5336
|
-
case 7:
|
|
5322
|
+
if (!overrideSubmitHandler) return [3 /*break*/, 7];
|
|
5323
|
+
return [4 /*yield*/, overrideSubmitHandler(__assign(__assign({}, updatedMessage), { parent: parent }), channel.cid, customMessageData)];
|
|
5324
|
+
case 6:
|
|
5337
5325
|
_a.sent();
|
|
5338
|
-
|
|
5326
|
+
return [3 /*break*/, 9];
|
|
5327
|
+
case 7: return [4 /*yield*/, sendMessage(__assign(__assign({}, updatedMessage), { parent: parent }), customMessageData)];
|
|
5339
5328
|
case 8:
|
|
5340
|
-
|
|
5341
|
-
|
|
5329
|
+
_a.sent();
|
|
5330
|
+
_a.label = 9;
|
|
5342
5331
|
case 9:
|
|
5332
|
+
if (!publishTypingEvent) return [3 /*break*/, 11];
|
|
5333
|
+
return [4 /*yield*/, channel.stopTyping()];
|
|
5334
|
+
case 10:
|
|
5343
5335
|
_a.sent();
|
|
5344
|
-
_a.label =
|
|
5345
|
-
case
|
|
5346
|
-
case
|
|
5336
|
+
_a.label = 11;
|
|
5337
|
+
case 11: return [3 /*break*/, 13];
|
|
5338
|
+
case 12:
|
|
5347
5339
|
_a.sent();
|
|
5348
5340
|
dispatch({
|
|
5349
5341
|
getNewText: function () { return text; },
|
|
@@ -5355,16 +5347,18 @@ var useSubmitHandler = function (props, state, dispatch, numberOfUploads) {
|
|
|
5355
5347
|
});
|
|
5356
5348
|
}
|
|
5357
5349
|
addNotification(t('Send message request failed'), 'error');
|
|
5358
|
-
return [3 /*break*/,
|
|
5359
|
-
case
|
|
5350
|
+
return [3 /*break*/, 13];
|
|
5351
|
+
case 13: return [2 /*return*/];
|
|
5360
5352
|
}
|
|
5361
5353
|
});
|
|
5362
5354
|
}); };
|
|
5363
5355
|
return { handleSubmit: handleSubmit };
|
|
5364
5356
|
};
|
|
5365
5357
|
|
|
5366
|
-
var usePasteHandler = function (uploadNewFiles, insertText) {
|
|
5358
|
+
var usePasteHandler = function (uploadNewFiles, insertText, isUploadEnabled) {
|
|
5367
5359
|
var onPaste = React.useCallback(function (clipboardEvent) {
|
|
5360
|
+
if (!isUploadEnabled)
|
|
5361
|
+
return;
|
|
5368
5362
|
(function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
5369
5363
|
var items, plainTextPromise, _loop_1, i, state_1, fileLikes, pastedText;
|
|
5370
5364
|
return __generator(this, function (_a) {
|
|
@@ -5414,30 +5408,31 @@ var usePasteHandler = function (uploadNewFiles, insertText) {
|
|
|
5414
5408
|
|
|
5415
5409
|
var emptyFileUploads = {};
|
|
5416
5410
|
var emptyImageUploads = {};
|
|
5411
|
+
var makeEmptyMessageInputState = function () { return ({
|
|
5412
|
+
attachments: [],
|
|
5413
|
+
emojiPickerIsOpen: false,
|
|
5414
|
+
fileOrder: [],
|
|
5415
|
+
fileUploads: __assign({}, emptyFileUploads),
|
|
5416
|
+
imageOrder: [],
|
|
5417
|
+
imageUploads: __assign({}, emptyImageUploads),
|
|
5418
|
+
mentioned_users: [],
|
|
5419
|
+
setText: function () { return null; },
|
|
5420
|
+
text: '',
|
|
5421
|
+
}); };
|
|
5417
5422
|
/**
|
|
5418
5423
|
* Initializes the state. Empty if the message prop is falsy.
|
|
5419
5424
|
*/
|
|
5420
5425
|
var initState = function (message) {
|
|
5421
5426
|
var _a, _b, _c;
|
|
5422
5427
|
if (!message) {
|
|
5423
|
-
return
|
|
5424
|
-
attachments: [],
|
|
5425
|
-
emojiPickerIsOpen: false,
|
|
5426
|
-
fileOrder: [],
|
|
5427
|
-
fileUploads: __assign({}, emptyFileUploads),
|
|
5428
|
-
imageOrder: [],
|
|
5429
|
-
imageUploads: __assign({}, emptyImageUploads),
|
|
5430
|
-
mentioned_users: [],
|
|
5431
|
-
setText: function () { return null; },
|
|
5432
|
-
text: '',
|
|
5433
|
-
};
|
|
5428
|
+
return makeEmptyMessageInputState();
|
|
5434
5429
|
}
|
|
5435
5430
|
// if message prop is defined, get image uploads, file uploads, text, etc.
|
|
5436
5431
|
var imageUploads = ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.filter(function (_a) {
|
|
5437
5432
|
var type = _a.type;
|
|
5438
5433
|
return type === 'image';
|
|
5439
5434
|
}).reduce(function (acc, attachment) {
|
|
5440
|
-
var id =
|
|
5435
|
+
var id = nanoid.nanoid();
|
|
5441
5436
|
acc[id] = {
|
|
5442
5437
|
file: {
|
|
5443
5438
|
name: attachment.fallback || '',
|
|
@@ -5453,7 +5448,7 @@ var initState = function (message) {
|
|
|
5453
5448
|
var type = _a.type;
|
|
5454
5449
|
return type === 'file';
|
|
5455
5450
|
}).reduce(function (acc, attachment) {
|
|
5456
|
-
var id =
|
|
5451
|
+
var id = nanoid.nanoid();
|
|
5457
5452
|
acc[id] = {
|
|
5458
5453
|
file: {
|
|
5459
5454
|
name: attachment.title || '',
|
|
@@ -5495,16 +5490,7 @@ var messageInputReducer = function (state, action) {
|
|
|
5495
5490
|
case 'setText':
|
|
5496
5491
|
return __assign(__assign({}, state), { text: action.getNewText(state.text) });
|
|
5497
5492
|
case 'clear':
|
|
5498
|
-
return
|
|
5499
|
-
attachments: [],
|
|
5500
|
-
emojiPickerIsOpen: false,
|
|
5501
|
-
fileOrder: [],
|
|
5502
|
-
fileUploads: __assign({}, emptyFileUploads),
|
|
5503
|
-
imageOrder: [],
|
|
5504
|
-
imageUploads: __assign({}, emptyImageUploads),
|
|
5505
|
-
mentioned_users: [],
|
|
5506
|
-
text: '',
|
|
5507
|
-
};
|
|
5493
|
+
return makeEmptyMessageInputState();
|
|
5508
5494
|
case 'setImageUpload': {
|
|
5509
5495
|
var imageAlreadyExists = state.imageUploads[action.id];
|
|
5510
5496
|
if (!imageAlreadyExists && !action.file)
|
|
@@ -5547,9 +5533,14 @@ var messageInputReducer = function (state, action) {
|
|
|
5547
5533
|
* hook for MessageInput state
|
|
5548
5534
|
*/
|
|
5549
5535
|
var useMessageInputState = function (props) {
|
|
5550
|
-
var closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
|
|
5536
|
+
var additionalTextareaProps = props.additionalTextareaProps, closeEmojiPickerOnClick = props.closeEmojiPickerOnClick, message = props.message;
|
|
5551
5537
|
var _a = useChannelStateContext('useMessageInputState'), _b = _a.channelCapabilities, channelCapabilities = _b === void 0 ? {} : _b, channelConfig = _a.channelConfig;
|
|
5552
|
-
var
|
|
5538
|
+
var defaultValue = additionalTextareaProps === null || additionalTextareaProps === void 0 ? void 0 : additionalTextareaProps.defaultValue;
|
|
5539
|
+
var initialStateValue = message ||
|
|
5540
|
+
(Array.isArray(defaultValue)
|
|
5541
|
+
? { text: defaultValue.join('') }
|
|
5542
|
+
: { text: defaultValue === null || defaultValue === void 0 ? void 0 : defaultValue.toString() });
|
|
5543
|
+
var _c = React.useReducer(messageInputReducer, initialStateValue, initState), state = _c[0], dispatch = _c[1];
|
|
5553
5544
|
var _d = useMessageInputText(props, state, dispatch), handleChange = _d.handleChange, insertText = _d.insertText, textareaRef = _d.textareaRef;
|
|
5554
5545
|
var _e = React.useState(false), showCommandsList = _e[0], setShowCommandsList = _e[1];
|
|
5555
5546
|
var _f = React.useState(false), showMentionsList = _f[0], setShowMentionsList = _f[1];
|
|
@@ -5572,8 +5563,8 @@ var useMessageInputState = function (props) {
|
|
|
5572
5563
|
var _g = useEmojiPicker(state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick), closeEmojiPicker = _g.closeEmojiPicker, emojiPickerRef = _g.emojiPickerRef, handleEmojiKeyDown = _g.handleEmojiKeyDown, onSelectEmoji = _g.onSelectEmoji, openEmojiPicker = _g.openEmojiPicker;
|
|
5573
5564
|
var _h = useAttachments(props, state, dispatch, textareaRef), maxFilesLeft = _h.maxFilesLeft, numberOfUploads = _h.numberOfUploads, removeFile = _h.removeFile, removeImage = _h.removeImage, uploadFile = _h.uploadFile, uploadImage = _h.uploadImage, uploadNewFiles = _h.uploadNewFiles;
|
|
5574
5565
|
var handleSubmit = useSubmitHandler(props, state, dispatch, numberOfUploads).handleSubmit;
|
|
5575
|
-
var onPaste = usePasteHandler(uploadNewFiles, insertText).onPaste;
|
|
5576
5566
|
var isUploadEnabled = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.uploads) !== false && channelCapabilities['upload-file'] !== false;
|
|
5567
|
+
var onPaste = usePasteHandler(uploadNewFiles, insertText, isUploadEnabled).onPaste;
|
|
5577
5568
|
var onSelectUser = React.useCallback(function (item) {
|
|
5578
5569
|
dispatch({ type: 'addMentionedUser', user: item });
|
|
5579
5570
|
}, []);
|
|
@@ -5669,7 +5660,7 @@ var MessageInputFlat = function () {
|
|
|
5669
5660
|
};
|
|
5670
5661
|
|
|
5671
5662
|
var useCreateMessageInputContext = function (value) {
|
|
5672
|
-
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled,
|
|
5663
|
+
var additionalTextareaProps = value.additionalTextareaProps, attachments = value.attachments, autocompleteTriggers = value.autocompleteTriggers, clearEditingState = value.clearEditingState, closeCommandsList = value.closeCommandsList, closeEmojiPicker = value.closeEmojiPicker, closeMentionsList = value.closeMentionsList, cooldownInterval = value.cooldownInterval, cooldownRemaining = value.cooldownRemaining, disabled = value.disabled, disableMentions = value.disableMentions, doFileUploadRequest = value.doFileUploadRequest, doImageUploadRequest = value.doImageUploadRequest, emojiIndex = value.emojiIndex, emojiPickerIsOpen = value.emojiPickerIsOpen, emojiPickerRef = value.emojiPickerRef, errorHandler = value.errorHandler, fileOrder = value.fileOrder, fileUploads = value.fileUploads, focus = value.focus, grow = value.grow, handleChange = value.handleChange, handleEmojiKeyDown = value.handleEmojiKeyDown, handleSubmit = value.handleSubmit, imageOrder = value.imageOrder, imageUploads = value.imageUploads, insertText = value.insertText, isUploadEnabled = value.isUploadEnabled, maxFilesLeft = value.maxFilesLeft, maxRows = value.maxRows, mentionAllAppUsers = value.mentionAllAppUsers, mentioned_users = value.mentioned_users, mentionQueryParams = value.mentionQueryParams, message = value.message, noFiles = value.noFiles, numberOfUploads = value.numberOfUploads, onPaste = value.onPaste, onSelectEmoji = value.onSelectEmoji, onSelectUser = value.onSelectUser, openCommandsList = value.openCommandsList, openEmojiPicker = value.openEmojiPicker, openMentionsList = value.openMentionsList, overrideSubmitHandler = value.overrideSubmitHandler, parent = value.parent, publishTypingEvent = value.publishTypingEvent, removeFile = value.removeFile, removeImage = value.removeImage, setCooldownRemaining = value.setCooldownRemaining, setText = value.setText, shouldSubmit = value.shouldSubmit, showCommandsList = value.showCommandsList, showMentionsList = value.showMentionsList, text = value.text, textareaRef = value.textareaRef, uploadFile = value.uploadFile, uploadImage = value.uploadImage, uploadNewFiles = value.uploadNewFiles, useMentionsTransliteration = value.useMentionsTransliteration;
|
|
5673
5664
|
var editing = message === null || message === void 0 ? void 0 : message.editing;
|
|
5674
5665
|
var fileUploadsValue = Object.entries(fileUploads)
|
|
5675
5666
|
// eslint-disable-next-line
|
|
@@ -5716,7 +5707,6 @@ var useCreateMessageInputContext = function (value) {
|
|
|
5716
5707
|
imageUploads: imageUploads,
|
|
5717
5708
|
insertText: insertText,
|
|
5718
5709
|
isUploadEnabled: isUploadEnabled,
|
|
5719
|
-
keycodeSubmitKeys: keycodeSubmitKeys,
|
|
5720
5710
|
maxFilesLeft: maxFilesLeft,
|
|
5721
5711
|
maxRows: maxRows,
|
|
5722
5712
|
mentionAllAppUsers: mentionAllAppUsers,
|
|
@@ -5738,6 +5728,7 @@ var useCreateMessageInputContext = function (value) {
|
|
|
5738
5728
|
removeImage: removeImage,
|
|
5739
5729
|
setCooldownRemaining: setCooldownRemaining,
|
|
5740
5730
|
setText: setText,
|
|
5731
|
+
shouldSubmit: shouldSubmit,
|
|
5741
5732
|
showCommandsList: showCommandsList,
|
|
5742
5733
|
showMentionsList: showMentionsList,
|
|
5743
5734
|
text: text,
|
|
@@ -6148,7 +6139,7 @@ var makeAddNotifications = function (setNotifications, notificationTimeouts) { r
|
|
|
6148
6139
|
if (typeof text !== 'string' || (type !== 'success' && type !== 'error')) {
|
|
6149
6140
|
return;
|
|
6150
6141
|
}
|
|
6151
|
-
var id =
|
|
6142
|
+
var id = nanoid.nanoid();
|
|
6152
6143
|
setNotifications(function (prevNotifications) { return __spreadArray(__spreadArray([], prevNotifications), [{ id: id, text: text, type: type }]); });
|
|
6153
6144
|
var timeout = setTimeout(function () {
|
|
6154
6145
|
return setNotifications(function (prevNotifications) {
|
|
@@ -6517,7 +6508,7 @@ var ChannelInner = function (props) {
|
|
|
6517
6508
|
});
|
|
6518
6509
|
}); };
|
|
6519
6510
|
var createMessagePreview = function (text, attachments, parent, mentioned_users) {
|
|
6520
|
-
var clientSideID = client.userID + "-" +
|
|
6511
|
+
var clientSideID = client.userID + "-" + nanoid.nanoid();
|
|
6521
6512
|
return __assign({ __html: text, attachments: attachments, created_at: new Date(), html: text, id: clientSideID, mentioned_users: mentioned_users, reactions: [], status: 'sending', text: text, type: 'regular', user: client.user }, ((parent === null || parent === void 0 ? void 0 : parent.id) ? { parent_id: parent.id } : null));
|
|
6522
6513
|
};
|
|
6523
6514
|
var sendMessage = function (_a, customMessageData) {
|
|
@@ -7277,8 +7268,10 @@ var ChannelPreview = function (props) {
|
|
|
7277
7268
|
var channel = props.channel, _a = props.Preview, Preview = _a === void 0 ? ChannelPreviewMessenger : _a, channelUpdateCount = props.channelUpdateCount;
|
|
7278
7269
|
var _b = useChatContext('ChannelPreview'), activeChannel = _b.channel, client = _b.client, setActiveChannel = _b.setActiveChannel;
|
|
7279
7270
|
var _c = useTranslationContext('ChannelPreview'), t = _c.t, userLanguage = _c.userLanguage;
|
|
7280
|
-
var _d = React.useState(channel.
|
|
7281
|
-
var _e = React.useState(
|
|
7271
|
+
var _d = React.useState(getDisplayTitle(channel, client.user)), displayTitle = _d[0], setDisplayTitle = _d[1];
|
|
7272
|
+
var _e = React.useState(getDisplayImage(channel, client.user)), displayImage = _e[0], setDisplayImage = _e[1];
|
|
7273
|
+
var _f = React.useState(channel.state.messages[channel.state.messages.length - 1]), lastMessage = _f[0], setLastMessage = _f[1];
|
|
7274
|
+
var _g = React.useState(0), unread = _g[0], setUnread = _g[1];
|
|
7282
7275
|
var isActive = (activeChannel === null || activeChannel === void 0 ? void 0 : activeChannel.cid) === channel.cid;
|
|
7283
7276
|
var muted = useIsChannelMuted(channel).muted;
|
|
7284
7277
|
React.useEffect(function () {
|
|
@@ -7315,10 +7308,24 @@ var ChannelPreview = function (props) {
|
|
|
7315
7308
|
channel.off('message.deleted', handleEvent);
|
|
7316
7309
|
};
|
|
7317
7310
|
}, [refreshUnreadCount, channelUpdateCount]);
|
|
7311
|
+
React.useEffect(function () {
|
|
7312
|
+
var handleEvent = function () {
|
|
7313
|
+
setDisplayTitle(function (displayTitle) {
|
|
7314
|
+
var newDisplayTitle = getDisplayTitle(channel, client.user);
|
|
7315
|
+
return displayTitle !== newDisplayTitle ? newDisplayTitle : displayTitle;
|
|
7316
|
+
});
|
|
7317
|
+
setDisplayImage(function (displayImage) {
|
|
7318
|
+
var newDisplayImage = getDisplayImage(channel, client.user);
|
|
7319
|
+
return displayImage !== newDisplayImage ? newDisplayImage : displayImage;
|
|
7320
|
+
});
|
|
7321
|
+
};
|
|
7322
|
+
client.on('user.updated', handleEvent);
|
|
7323
|
+
return function () {
|
|
7324
|
+
client.off('user.updated', handleEvent);
|
|
7325
|
+
};
|
|
7326
|
+
}, []);
|
|
7318
7327
|
if (!Preview)
|
|
7319
7328
|
return null;
|
|
7320
|
-
var displayImage = getDisplayImage(channel, client.user);
|
|
7321
|
-
var displayTitle = getDisplayTitle(channel, client.user);
|
|
7322
7329
|
var latestMessage = getLatestMessagePreview(channel, t, userLanguage);
|
|
7323
7330
|
return (React__default['default'].createElement(Preview, __assign({}, props, { active: isActive, displayImage: displayImage, displayTitle: displayTitle, lastMessage: lastMessage, latestMessage: latestMessage, setActiveChannel: setActiveChannel, unread: unread })));
|
|
7324
7331
|
};
|
|
@@ -7651,7 +7658,7 @@ var UnMemoizedChannelList = function (props) {
|
|
|
7651
7658
|
*/
|
|
7652
7659
|
var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
|
|
7653
7660
|
|
|
7654
|
-
var version = '
|
|
7661
|
+
var version = '9.0.0';
|
|
7655
7662
|
|
|
7656
7663
|
var useChat = function (_a) {
|
|
7657
7664
|
var _b, _c;
|
|
@@ -8460,10 +8467,10 @@ var processMessages = function (params) {
|
|
|
8460
8467
|
var makeDateMessageId = function (date) {
|
|
8461
8468
|
var idSuffix;
|
|
8462
8469
|
try {
|
|
8463
|
-
idSuffix = !date ?
|
|
8470
|
+
idSuffix = !date ? nanoid.nanoid() : date instanceof Date ? date.toISOString() : date;
|
|
8464
8471
|
}
|
|
8465
8472
|
catch (e) {
|
|
8466
|
-
idSuffix =
|
|
8473
|
+
idSuffix = nanoid.nanoid();
|
|
8467
8474
|
}
|
|
8468
8475
|
return CUSTOM_MESSAGE_TYPE.date + "-" + idSuffix;
|
|
8469
8476
|
};
|
|
@@ -9374,7 +9381,7 @@ var DefaultThreadStart = function () {
|
|
|
9374
9381
|
var ThreadInner = function (props) {
|
|
9375
9382
|
var additionalMessageInputProps = props.additionalMessageInputProps, additionalMessageListProps = props.additionalMessageListProps, additionalParentMessageProps = props.additionalParentMessageProps, additionalVirtualizedMessageListProps = props.additionalVirtualizedMessageListProps, _a = props.autoFocus, autoFocus = _a === void 0 ? true : _a, _b = props.enableDateSeparator, enableDateSeparator = _b === void 0 ? false : _b, _c = props.fullWidth, fullWidth = _c === void 0 ? false : _c, PropInput = props.Input, PropMessage = props.Message, virtualized = props.virtualized;
|
|
9376
9383
|
var _d = useChannelStateContext('Thread'), thread = _d.thread, threadHasMore = _d.threadHasMore, threadLoadingMore = _d.threadLoadingMore, threadMessages = _d.threadMessages;
|
|
9377
|
-
var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread;
|
|
9384
|
+
var _e = useChannelActionContext('Thread'), closeThread = _e.closeThread, loadMoreThread = _e.loadMoreThread, sendMessage = _e.sendMessage;
|
|
9378
9385
|
var customClasses = useChatContext('Thread').customClasses;
|
|
9379
9386
|
var _f = useComponentContext('Thread'), ContextInput = _f.ThreadInput, ContextMessage = _f.Message, _g = _f.ThreadHeader, ThreadHeader = _g === void 0 ? DefaultThreadHeader : _g, _h = _f.ThreadStart, ThreadStart = _h === void 0 ? DefaultThreadStart : _h, _j = _f.VirtualMessage, VirtualMessage = _j === void 0 ? FixedHeightMessage : _j;
|
|
9380
9387
|
var messageList = React.useRef(null);
|
|
@@ -9387,15 +9394,19 @@ var ThreadInner = function (props) {
|
|
|
9387
9394
|
loadMoreThread();
|
|
9388
9395
|
}
|
|
9389
9396
|
}, []);
|
|
9390
|
-
|
|
9391
|
-
|
|
9392
|
-
|
|
9393
|
-
|
|
9394
|
-
|
|
9395
|
-
|
|
9397
|
+
var threadSubmitHandler = function (message, _, customMessageData) { return __awaiter(void 0, void 0, void 0, function () {
|
|
9398
|
+
return __generator(this, function (_a) {
|
|
9399
|
+
switch (_a.label) {
|
|
9400
|
+
case 0: return [4 /*yield*/, sendMessage(message, customMessageData)];
|
|
9401
|
+
case 1:
|
|
9402
|
+
_a.sent();
|
|
9403
|
+
if (messageList.current) {
|
|
9404
|
+
messageList.current.scrollTop = messageList.current.scrollHeight;
|
|
9405
|
+
}
|
|
9406
|
+
return [2 /*return*/];
|
|
9396
9407
|
}
|
|
9397
|
-
}
|
|
9398
|
-
}
|
|
9408
|
+
});
|
|
9409
|
+
}); };
|
|
9399
9410
|
if (!thread)
|
|
9400
9411
|
return null;
|
|
9401
9412
|
var threadClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.thread) || 'str-chat__thread';
|
|
@@ -9405,7 +9416,7 @@ var ThreadInner = function (props) {
|
|
|
9405
9416
|
React__default['default'].createElement(Message, __assign({ initialMessage: true, message: thread, Message: ThreadMessage || FallbackMessage, threadList: true }, additionalParentMessageProps)),
|
|
9406
9417
|
React__default['default'].createElement(ThreadStart, null),
|
|
9407
9418
|
React__default['default'].createElement(ThreadMessageList, __assign({ disableDateSeparator: !enableDateSeparator, hasMore: threadHasMore, loadingMore: threadLoadingMore, loadMore: loadMoreThread, Message: ThreadMessage || FallbackMessage, messages: threadMessages || [], threadList: true }, (virtualized ? additionalVirtualizedMessageListProps : additionalMessageListProps)))),
|
|
9408
|
-
React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
|
|
9419
|
+
React__default['default'].createElement(MessageInput, __assign({ focus: autoFocus, Input: ThreadInput, overrideSubmitHandler: threadSubmitHandler, parent: thread, publishTypingEvent: false }, additionalMessageInputProps))));
|
|
9409
9420
|
};
|
|
9410
9421
|
|
|
9411
9422
|
var UnMemoizedWindow = function (props) {
|