stream-chat-react 11.7.0 → 11.8.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/Window-7c2f264c.js +41846 -0
- package/dist/browser.full-bundle.js +251 -178
- 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/Channel/Channel.d.ts +7 -5
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +97 -56
- package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
- package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
- package/dist/components/ChannelPreview/ChannelPreview.d.ts +0 -16
- package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +0 -5
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
- package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +2 -62
- package/dist/components/Emojis/index.cjs.js +30 -12
- package/dist/components/Message/MessageErrorText.d.ts +9 -0
- package/dist/components/Message/MessageErrorText.d.ts.map +1 -0
- package/dist/components/Message/MessageErrorText.js +16 -0
- package/dist/components/Message/MessageSimple.d.ts.map +1 -1
- package/dist/components/Message/MessageSimple.js +17 -5
- package/dist/components/Message/MessageText.d.ts.map +1 -1
- package/dist/components/Message/MessageText.js +3 -5
- package/dist/components/Message/utils.d.ts +1 -0
- package/dist/components/Message/utils.d.ts.map +1 -1
- package/dist/components/Message/utils.js +5 -0
- package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
- package/dist/components/MessageActions/MessageActionsBox.js +1 -1
- package/dist/components/MessageBounce/MessageBounceModal.d.ts +8 -0
- package/dist/components/MessageBounce/MessageBounceModal.d.ts.map +1 -0
- package/dist/components/MessageBounce/MessageBounceModal.js +10 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +6 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.d.ts.map +1 -0
- package/dist/components/MessageBounce/MessageBouncePrompt.js +19 -0
- package/dist/components/MessageBounce/index.d.ts +3 -0
- package/dist/components/MessageBounce/index.d.ts.map +1 -0
- package/dist/components/MessageBounce/index.js +2 -0
- package/dist/components/MessageInput/hooks/useSubmitHandler.js +1 -1
- package/dist/components/MessageList/MessageList.d.ts.map +1 -1
- package/dist/components/MessageList/MessageList.js +12 -12
- package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
- package/dist/components/MessageList/UnreadMessagesNotification.js +2 -2
- package/dist/components/MessageList/UnreadMessagesSeparator.js +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +11 -12
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +3 -4
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
- package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +3 -3
- package/dist/components/MessageList/renderMessages.d.ts +8 -7
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/components/MessageList/renderMessages.js +4 -4
- package/dist/context/ChannelActionContext.d.ts +9 -1
- package/dist/context/ChannelActionContext.d.ts.map +1 -1
- package/dist/context/ChannelStateContext.d.ts +3 -2
- package/dist/context/ChannelStateContext.d.ts.map +1 -1
- package/dist/context/ComponentContext.d.ts +3 -1
- package/dist/context/ComponentContext.d.ts.map +1 -1
- package/dist/context/MessageBounceContext.d.ts +12 -0
- package/dist/context/MessageBounceContext.d.ts.map +1 -0
- package/dist/context/MessageBounceContext.js +37 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -0
- package/dist/css/v2/index.css +1 -1
- package/dist/css/v2/index.layout.css +1 -1
- package/dist/i18n/Streami18n.d.ts +3 -0
- package/dist/i18n/Streami18n.d.ts.map +1 -1
- package/dist/i18n/de.json +3 -0
- package/dist/i18n/en.json +3 -0
- package/dist/i18n/es.json +3 -0
- package/dist/i18n/fr.json +3 -0
- package/dist/i18n/hi.json +3 -0
- package/dist/i18n/it.json +3 -0
- package/dist/i18n/ja.json +3 -0
- package/dist/i18n/ko.json +3 -0
- package/dist/i18n/nl.json +3 -0
- package/dist/i18n/pt.json +3 -0
- package/dist/i18n/ru.json +3 -0
- package/dist/i18n/tr.json +3 -0
- package/dist/index.cjs.js +1391 -39772
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-layout.scss → MessageBouncePrompt/MessageBouncePrompt-layout.scss} +2 -1
- package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-theme.scss → MessageBouncePrompt/MessageBouncePrompt-theme.scss} +1 -1
- package/dist/scss/v2/index.layout.scss +1 -1
- package/dist/scss/v2/index.scss +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/types.d.ts +12 -10
- package/dist/types/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/icons-7ead3d97.js +0 -3172
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { ChannelQueryOptions, Message, MessageResponse, Channel as StreamChannel, StreamChat, UpdatedMessage } from 'stream-chat';
|
|
2
|
+
import { ChannelQueryOptions, EventAPIResponse, Message, MessageResponse, Channel as StreamChannel, StreamChat, UpdatedMessage } from 'stream-chat';
|
|
3
3
|
import { OnMentionAction } from './hooks/useMentionsHandlers';
|
|
4
4
|
import { LoadingErrorIndicatorProps } from '../Loading';
|
|
5
5
|
import { StreamMessage } from '../../context/ChannelStateContext';
|
|
6
6
|
import { ComponentContextValue } from '../../context/ComponentContext';
|
|
7
|
+
import type { UnreadMessagesNotificationProps } from '../MessageList';
|
|
7
8
|
import type { MessageProps } from '../Message/types';
|
|
8
9
|
import type { MessageInputProps } from '../MessageInput/MessageInput';
|
|
9
|
-
import type { CustomTrigger, DefaultStreamChatGenerics, GiphyVersions, ImageAttachmentSizeHandler, SendMessageOptions, UpdateMessageOptions, VideoAttachmentSizeHandler } from '../../types/types';
|
|
10
|
+
import type { ChannelUnreadUiState, CustomTrigger, DefaultStreamChatGenerics, GiphyVersions, ImageAttachmentSizeHandler, SendMessageOptions, UpdateMessageOptions, VideoAttachmentSizeHandler } from '../../types/types';
|
|
10
11
|
import type { URLEnrichmentConfig } from '../MessageInput/hooks/useLinkPreviews';
|
|
11
12
|
import { ReactionOptions } from '../Reactions';
|
|
12
|
-
import type { UnreadMessagesNotificationProps } from '../MessageList';
|
|
13
13
|
type ChannelPropsForwardedToComponentContext<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
14
14
|
/** Custom UI component to display a message attachment, defaults to and accepts same props as: [Attachment](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Attachment/Attachment.tsx) */
|
|
15
15
|
Attachment?: ComponentContextValue<StreamChatGenerics>['Attachment'];
|
|
@@ -55,6 +55,8 @@ type ChannelPropsForwardedToComponentContext<StreamChatGenerics extends DefaultS
|
|
|
55
55
|
LoadingIndicator?: ComponentContextValue<StreamChatGenerics>['LoadingIndicator'];
|
|
56
56
|
/** Custom UI component to display a message in the standard `MessageList`, defaults to and accepts the same props as: [MessageSimple](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageSimple.tsx) */
|
|
57
57
|
Message?: ComponentContextValue<StreamChatGenerics>['Message'];
|
|
58
|
+
/** Custom UI component to display the contents of a bounced message modal. Usually it allows to retry, edit, or delete the message. Defaults to and accepts the same props as: [MessageBouncePrompt](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageBounce/MessageBouncePrompt.tsx) */
|
|
59
|
+
MessageBouncePrompt?: ComponentContextValue<StreamChatGenerics>['MessageBouncePrompt'];
|
|
58
60
|
/** Custom UI component for a deleted message, defaults to and accepts same props as: [MessageDeleted](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Message/MessageDeleted.tsx) */
|
|
59
61
|
MessageDeleted?: ComponentContextValue<StreamChatGenerics>['MessageDeleted'];
|
|
60
62
|
/** Custom UI component that displays message and connection status notifications in the `MessageList`, defaults to and accepts same props as [DefaultMessageListNotifications](https://github.com/GetStream/stream-chat-react/blob/master/src/components/MessageList/MessageListNotifications.tsx) */
|
|
@@ -121,7 +123,7 @@ export type ChannelProps<StreamChatGenerics extends DefaultStreamChatGenerics =
|
|
|
121
123
|
/** Custom action handler to override the default `client.deleteMessage(message.id)` function */
|
|
122
124
|
doDeleteMessageRequest?: (message: StreamMessage<StreamChatGenerics>) => Promise<MessageResponse<StreamChatGenerics>>;
|
|
123
125
|
/** Custom action handler to override the default `channel.markRead` request function (advanced usage only) */
|
|
124
|
-
doMarkReadRequest?: (channel: StreamChannel<StreamChatGenerics
|
|
126
|
+
doMarkReadRequest?: (channel: StreamChannel<StreamChatGenerics>, setChannelUnreadUiState?: (state: ChannelUnreadUiState) => void) => Promise<EventAPIResponse<StreamChatGenerics>> | void;
|
|
125
127
|
/** Custom action handler to override the default `channel.sendMessage` request function (advanced usage only) */
|
|
126
128
|
doSendMessageRequest?: (channel: StreamChannel<StreamChatGenerics>, message: Message<StreamChatGenerics>, options?: SendMessageOptions) => ReturnType<StreamChannel<StreamChatGenerics>['sendMessage']> | void;
|
|
127
129
|
/** Custom action handler to override the default `client.updateMessage` request function (advanced usage only) */
|
|
@@ -148,7 +150,7 @@ export type ChannelProps<StreamChatGenerics extends DefaultStreamChatGenerics =
|
|
|
148
150
|
* Preventing to initialize the channel on mount allows us to postpone the channel creation to a later point in time.
|
|
149
151
|
*/
|
|
150
152
|
initializeOnMount?: boolean;
|
|
151
|
-
/** Configuration parameter to mark the active channel as read when mounted (opened). By default, the channel is
|
|
153
|
+
/** Configuration parameter to mark the active channel as read when mounted (opened). By default, the channel is marked read on mount. */
|
|
152
154
|
markReadOnMount?: boolean;
|
|
153
155
|
/** Maximum number of attachments allowed per message */
|
|
154
156
|
maxNumberOfFiles?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAQlB,MAAM,OAAO,CAAC;AAIf,OAAO,EAGL,mBAAmB,
|
|
1
|
+
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import { __assign, __awaiter, __generator, __rest } from "tslib";
|
|
|
2
2
|
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useReducer, useRef, useState, } from 'react';
|
|
3
3
|
import debounce from 'lodash.debounce';
|
|
4
4
|
import throttle from 'lodash.throttle';
|
|
5
|
-
import { logChatPromiseExecution, } from 'stream-chat';
|
|
6
5
|
import { nanoid } from 'nanoid';
|
|
7
6
|
import clsx from 'clsx';
|
|
8
7
|
import { channelReducer, initialState } from './channelState';
|
|
@@ -55,15 +54,16 @@ var UnMemoizedChannel = function (props) {
|
|
|
55
54
|
};
|
|
56
55
|
var ChannelInner = function (props) {
|
|
57
56
|
var _a;
|
|
58
|
-
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, channelQueryOptions = props.channelQueryOptions, children = props.children, doDeleteMessageRequest = props.doDeleteMessageRequest, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _c = props.initializeOnMount, initializeOnMount = _c === void 0 ? true : _c, _d = props.LoadingErrorIndicator, LoadingErrorIndicator = _d === void 0 ? DefaultLoadingErrorIndicator : _d, _e = props.LoadingIndicator, LoadingIndicator = _e === void 0 ? DefaultLoadingIndicator : _e,
|
|
59
|
-
var
|
|
57
|
+
var acceptedFiles = props.acceptedFiles, activeUnreadHandler = props.activeUnreadHandler, channel = props.channel, channelQueryOptions = props.channelQueryOptions, children = props.children, doDeleteMessageRequest = props.doDeleteMessageRequest, doMarkReadRequest = props.doMarkReadRequest, doSendMessageRequest = props.doSendMessageRequest, doUpdateMessageRequest = props.doUpdateMessageRequest, _b = props.dragAndDropWindow, dragAndDropWindow = _b === void 0 ? false : _b, enrichURLForPreviewConfig = props.enrichURLForPreviewConfig, _c = props.initializeOnMount, initializeOnMount = _c === void 0 ? true : _c, _d = props.LoadingErrorIndicator, LoadingErrorIndicator = _d === void 0 ? DefaultLoadingErrorIndicator : _d, _e = props.LoadingIndicator, LoadingIndicator = _e === void 0 ? DefaultLoadingIndicator : _e, _f = props.markReadOnMount, markReadOnMount = _f === void 0 ? true : _f, maxNumberOfFiles = props.maxNumberOfFiles, _g = props.multipleUploads, multipleUploads = _g === void 0 ? true : _g, onMentionsClick = props.onMentionsClick, onMentionsHover = props.onMentionsHover, _h = props.optionalMessageInputProps, optionalMessageInputProps = _h === void 0 ? {} : _h, skipMessageDataMemoization = props.skipMessageDataMemoization;
|
|
58
|
+
var _j = useChatContext('Channel'), client = _j.client, customClasses = _j.customClasses, latestMessageDatesByChannels = _j.latestMessageDatesByChannels, mutes = _j.mutes, theme = _j.theme;
|
|
60
59
|
var t = useTranslationContext('Channel').t;
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
60
|
+
var _k = useChannelContainerClasses({ customClasses: customClasses }), channelClass = _k.channelClass, chatClass = _k.chatClass, chatContainerClass = _k.chatContainerClass, windowsEmojiClass = _k.windowsEmojiClass;
|
|
61
|
+
var _l = useState(channel.getConfig()), channelConfig = _l[0], setChannelConfig = _l[1];
|
|
62
|
+
var _m = useState([]), notifications = _m[0], setNotifications = _m[1];
|
|
63
|
+
var _o = useState(), quotedMessage = _o[0], setQuotedMessage = _o[1];
|
|
64
|
+
var _p = useState(), channelUnreadUiState = _p[0], setChannelUnreadUiState = _p[1];
|
|
65
65
|
var notificationTimeouts = [];
|
|
66
|
-
var
|
|
66
|
+
var _q = useReducer(channelReducer, __assign(__assign({}, initialState), { loading: !channel.initialized })), state = _q[0], dispatch = _q[1];
|
|
67
67
|
var isMounted = useIsMounted();
|
|
68
68
|
var originalTitle = useRef('');
|
|
69
69
|
var lastRead = useRef(new Date());
|
|
@@ -74,24 +74,49 @@ var ChannelInner = function (props) {
|
|
|
74
74
|
trailing: true,
|
|
75
75
|
});
|
|
76
76
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
77
|
-
var markRead = useCallback(throttle(function () {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
77
|
+
var markRead = useCallback(throttle(function (options) { return __awaiter(void 0, void 0, void 0, function () {
|
|
78
|
+
var _a, updateChannelUiUnreadState, markReadResponse, e_1;
|
|
79
|
+
return __generator(this, function (_b) {
|
|
80
|
+
switch (_b.label) {
|
|
81
|
+
case 0:
|
|
82
|
+
_a = (options !== null && options !== void 0 ? options : {}).updateChannelUiUnreadState, updateChannelUiUnreadState = _a === void 0 ? true : _a;
|
|
83
|
+
if (channel.disconnected || !(channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.read_events)) {
|
|
84
|
+
return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
lastRead.current = new Date();
|
|
87
|
+
_b.label = 1;
|
|
88
|
+
case 1:
|
|
89
|
+
_b.trys.push([1, 5, , 6]);
|
|
90
|
+
if (!doMarkReadRequest) return [3 /*break*/, 2];
|
|
91
|
+
doMarkReadRequest(channel, updateChannelUiUnreadState ? setChannelUnreadUiState : undefined);
|
|
92
|
+
return [3 /*break*/, 4];
|
|
93
|
+
case 2: return [4 /*yield*/, channel.markRead()];
|
|
94
|
+
case 3:
|
|
95
|
+
markReadResponse = _b.sent();
|
|
96
|
+
if (updateChannelUiUnreadState && markReadResponse) {
|
|
97
|
+
setChannelUnreadUiState({
|
|
98
|
+
last_read: lastRead.current,
|
|
99
|
+
last_read_message_id: markReadResponse.event.last_read_message_id,
|
|
100
|
+
unread_messages: 0,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
_b.label = 4;
|
|
104
|
+
case 4:
|
|
105
|
+
if (activeUnreadHandler) {
|
|
106
|
+
activeUnreadHandler(0, originalTitle.current);
|
|
107
|
+
}
|
|
108
|
+
else if (originalTitle.current) {
|
|
109
|
+
document.title = originalTitle.current;
|
|
110
|
+
}
|
|
111
|
+
return [3 /*break*/, 6];
|
|
112
|
+
case 5:
|
|
113
|
+
e_1 = _b.sent();
|
|
114
|
+
console.error(t('Failed to mark channel as read'));
|
|
115
|
+
return [3 /*break*/, 6];
|
|
116
|
+
case 6: return [2 /*return*/];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}); }, 500, { leading: true, trailing: false }), [activeUnreadHandler, channel, channelConfig, doMarkReadRequest, t]);
|
|
95
120
|
var handleEvent = function (event) { return __awaiter(void 0, void 0, void 0, function () {
|
|
96
121
|
var mainChannelUpdated, unread, messageDate, cid, oldestID;
|
|
97
122
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
@@ -158,6 +183,18 @@ var ChannelInner = function (props) {
|
|
|
158
183
|
_k.sent();
|
|
159
184
|
_k.label = 2;
|
|
160
185
|
case 2:
|
|
186
|
+
if (event.type === 'notification.mark_unread')
|
|
187
|
+
setChannelUnreadUiState(function (prev) {
|
|
188
|
+
var _a;
|
|
189
|
+
if (!(event.last_read_at && event.user))
|
|
190
|
+
return prev;
|
|
191
|
+
return {
|
|
192
|
+
first_unread_message_id: event.first_unread_message_id,
|
|
193
|
+
last_read: new Date(event.last_read_at),
|
|
194
|
+
last_read_message_id: event.last_read_message_id,
|
|
195
|
+
unread_messages: (_a = event.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
196
|
+
};
|
|
197
|
+
});
|
|
161
198
|
throttledCopyStateFromChannel();
|
|
162
199
|
return [2 /*return*/];
|
|
163
200
|
}
|
|
@@ -168,17 +205,17 @@ var ChannelInner = function (props) {
|
|
|
168
205
|
var errored = false;
|
|
169
206
|
var done = false;
|
|
170
207
|
(function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
171
|
-
var members, _i, _a, member, userId, _b, user, user_id, config,
|
|
172
|
-
var
|
|
173
|
-
return __generator(this, function (
|
|
174
|
-
switch (
|
|
208
|
+
var members, _i, _a, member, userId, _b, user, user_id, config, e_2, _c, user, ownReadState;
|
|
209
|
+
var _d, _e, _f, _g;
|
|
210
|
+
return __generator(this, function (_h) {
|
|
211
|
+
switch (_h.label) {
|
|
175
212
|
case 0:
|
|
176
213
|
if (!(!channel.initialized && initializeOnMount)) return [3 /*break*/, 4];
|
|
177
|
-
|
|
214
|
+
_h.label = 1;
|
|
178
215
|
case 1:
|
|
179
|
-
|
|
216
|
+
_h.trys.push([1, 3, , 4]);
|
|
180
217
|
members = [];
|
|
181
|
-
if (!channel.id && ((
|
|
218
|
+
if (!channel.id && ((_d = channel.data) === null || _d === void 0 ? void 0 : _d.members)) {
|
|
182
219
|
for (_i = 0, _a = channel.data.members; _i < _a.length; _i++) {
|
|
183
220
|
member = _a[_i];
|
|
184
221
|
userId = void 0;
|
|
@@ -196,13 +233,13 @@ var ChannelInner = function (props) {
|
|
|
196
233
|
}
|
|
197
234
|
return [4 /*yield*/, getChannel({ channel: channel, client: client, members: members, options: channelQueryOptions })];
|
|
198
235
|
case 2:
|
|
199
|
-
|
|
236
|
+
_h.sent();
|
|
200
237
|
config = channel.getConfig();
|
|
201
238
|
setChannelConfig(config);
|
|
202
239
|
return [3 /*break*/, 4];
|
|
203
240
|
case 3:
|
|
204
|
-
|
|
205
|
-
dispatch({ error:
|
|
241
|
+
e_2 = _h.sent();
|
|
242
|
+
dispatch({ error: e_2, type: 'setError' });
|
|
206
243
|
errored = true;
|
|
207
244
|
return [3 /*break*/, 4];
|
|
208
245
|
case 4:
|
|
@@ -211,9 +248,13 @@ var ChannelInner = function (props) {
|
|
|
211
248
|
if (!errored) {
|
|
212
249
|
dispatch({
|
|
213
250
|
channel: channel,
|
|
214
|
-
hasMore: hasMoreMessagesProbably(channel.state.messages.length, (
|
|
251
|
+
hasMore: hasMoreMessagesProbably(channel.state.messages.length, (_f = (_e = channelQueryOptions === null || channelQueryOptions === void 0 ? void 0 : channelQueryOptions.messages) === null || _e === void 0 ? void 0 : _e.limit) !== null && _f !== void 0 ? _f : DEFAULT_INITIAL_CHANNEL_PAGE_SIZE),
|
|
215
252
|
type: 'initStateFromChannel',
|
|
216
253
|
});
|
|
254
|
+
if (((_g = client.user) === null || _g === void 0 ? void 0 : _g.id) && channel.state.read[client.user.id]) {
|
|
255
|
+
_c = channel.state.read[client.user.id], user = _c.user, ownReadState = __rest(_c, ["user"]);
|
|
256
|
+
setChannelUnreadUiState(ownReadState);
|
|
257
|
+
}
|
|
217
258
|
/**
|
|
218
259
|
* TODO: maybe pass last_read to the countUnread method to get proper value
|
|
219
260
|
* combined with channel.countUnread adjustment (_countMessageAsUnread)
|
|
@@ -222,7 +263,7 @@ var ChannelInner = function (props) {
|
|
|
222
263
|
* const lastRead = channel.state.read[client.userID as string].last_read;
|
|
223
264
|
*/
|
|
224
265
|
if (channel.countUnread() > 0 && markReadOnMount)
|
|
225
|
-
markRead();
|
|
266
|
+
markRead({ updateChannelUiUnreadState: false });
|
|
226
267
|
// The more complex sync logic is done in Chat
|
|
227
268
|
client.on('connection.changed', handleEvent);
|
|
228
269
|
client.on('connection.recovered', handleEvent);
|
|
@@ -272,7 +313,7 @@ var ChannelInner = function (props) {
|
|
|
272
313
|
var loadMore = function (limit) {
|
|
273
314
|
if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
|
|
274
315
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
275
|
-
var oldestMessage, oldestID, perPage, queryResponse,
|
|
316
|
+
var oldestMessage, oldestID, perPage, queryResponse, e_3, hasMoreMessages;
|
|
276
317
|
var _a;
|
|
277
318
|
return __generator(this, function (_b) {
|
|
278
319
|
switch (_b.label) {
|
|
@@ -297,8 +338,8 @@ var ChannelInner = function (props) {
|
|
|
297
338
|
queryResponse = _b.sent();
|
|
298
339
|
return [3 /*break*/, 4];
|
|
299
340
|
case 3:
|
|
300
|
-
|
|
301
|
-
console.warn('message pagination request failed with error',
|
|
341
|
+
e_3 = _b.sent();
|
|
342
|
+
console.warn('message pagination request failed with error', e_3);
|
|
302
343
|
dispatch({ loadingMore: false, type: 'setLoadingMore' });
|
|
303
344
|
return [2 /*return*/, 0];
|
|
304
345
|
case 4:
|
|
@@ -312,7 +353,7 @@ var ChannelInner = function (props) {
|
|
|
312
353
|
var loadMoreNewer = function (limit) {
|
|
313
354
|
if (limit === void 0) { limit = 100; }
|
|
314
355
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
315
|
-
var newestMessage, newestId, perPage, queryResponse,
|
|
356
|
+
var newestMessage, newestId, perPage, queryResponse, e_4, hasMoreNewerMessages;
|
|
316
357
|
var _a, _b;
|
|
317
358
|
return __generator(this, function (_c) {
|
|
318
359
|
switch (_c.label) {
|
|
@@ -336,8 +377,8 @@ var ChannelInner = function (props) {
|
|
|
336
377
|
queryResponse = _c.sent();
|
|
337
378
|
return [3 /*break*/, 4];
|
|
338
379
|
case 3:
|
|
339
|
-
|
|
340
|
-
console.warn('message pagination request failed with error',
|
|
380
|
+
e_4 = _c.sent();
|
|
381
|
+
console.warn('message pagination request failed with error', e_4);
|
|
341
382
|
dispatch({ loadingMoreNewer: false, type: 'setLoadingMoreNewer' });
|
|
342
383
|
return [2 /*return*/, 0];
|
|
343
384
|
case 4:
|
|
@@ -403,22 +444,21 @@ var ChannelInner = function (props) {
|
|
|
403
444
|
var jumpToFirstUnreadMessage = useCallback(function (queryMessageLimit) {
|
|
404
445
|
if (queryMessageLimit === void 0) { queryMessageLimit = 100; }
|
|
405
446
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
406
|
-
var
|
|
447
|
+
var indexOfLastReadMessage, currentMessageSet, i, id, hasMoreMessages, e_5, firstUnreadMessage, jumpToMessageId;
|
|
407
448
|
var _a;
|
|
408
449
|
return __generator(this, function (_b) {
|
|
409
450
|
switch (_b.label) {
|
|
410
451
|
case 0:
|
|
411
452
|
if (!client.user)
|
|
412
453
|
return [2 /*return*/];
|
|
413
|
-
|
|
414
|
-
if (!(readState === null || readState === void 0 ? void 0 : readState.last_read_message_id)) {
|
|
454
|
+
if (!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id)) {
|
|
415
455
|
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
416
456
|
return [2 /*return*/];
|
|
417
457
|
}
|
|
418
458
|
currentMessageSet = channel.state.messages;
|
|
419
459
|
for (i = currentMessageSet.length - 1; i >= 0; i--) {
|
|
420
460
|
id = currentMessageSet[i].id;
|
|
421
|
-
if (id ===
|
|
461
|
+
if (id === channelUnreadUiState.last_read_message_id) {
|
|
422
462
|
indexOfLastReadMessage = i;
|
|
423
463
|
break;
|
|
424
464
|
}
|
|
@@ -429,18 +469,18 @@ var ChannelInner = function (props) {
|
|
|
429
469
|
_b.label = 1;
|
|
430
470
|
case 1:
|
|
431
471
|
_b.trys.push([1, 3, , 4]);
|
|
432
|
-
return [4 /*yield*/, channel.state.loadMessageIntoState(
|
|
472
|
+
return [4 /*yield*/, channel.state.loadMessageIntoState(channelUnreadUiState.last_read_message_id, undefined, queryMessageLimit)];
|
|
433
473
|
case 2:
|
|
434
474
|
_b.sent();
|
|
435
475
|
/**
|
|
436
476
|
* if the index of the last read message on the page is beyond the half of the page,
|
|
437
477
|
* we have arrived to the oldest page of the channel
|
|
438
478
|
*/
|
|
439
|
-
indexOfLastReadMessage = channel.state.messages.findIndex(function (message) { return message.id ===
|
|
479
|
+
indexOfLastReadMessage = channel.state.messages.findIndex(function (message) { return message.id === channelUnreadUiState.last_read_message_id; });
|
|
440
480
|
hasMoreMessages = indexOfLastReadMessage >= Math.floor(queryMessageLimit / 2);
|
|
441
481
|
return [3 /*break*/, 4];
|
|
442
482
|
case 3:
|
|
443
|
-
|
|
483
|
+
e_5 = _b.sent();
|
|
444
484
|
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
445
485
|
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
446
486
|
return [2 /*return*/];
|
|
@@ -449,7 +489,7 @@ var ChannelInner = function (props) {
|
|
|
449
489
|
_b.label = 5;
|
|
450
490
|
case 5:
|
|
451
491
|
firstUnreadMessage = channel.state.messages[indexOfLastReadMessage + 1];
|
|
452
|
-
jumpToMessageId = (_a = firstUnreadMessage === null || firstUnreadMessage === void 0 ? void 0 : firstUnreadMessage.id) !== null && _a !== void 0 ? _a :
|
|
492
|
+
jumpToMessageId = (_a = firstUnreadMessage === null || firstUnreadMessage === void 0 ? void 0 : firstUnreadMessage.id) !== null && _a !== void 0 ? _a : channelUnreadUiState.last_read_message_id;
|
|
453
493
|
dispatch({
|
|
454
494
|
hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
|
|
455
495
|
highlightedMessageId: jumpToMessageId,
|
|
@@ -466,7 +506,7 @@ var ChannelInner = function (props) {
|
|
|
466
506
|
}
|
|
467
507
|
});
|
|
468
508
|
});
|
|
469
|
-
}, [addNotification, channel, client, loadMoreFinished, t]);
|
|
509
|
+
}, [addNotification, channel, client, loadMoreFinished, t, channelUnreadUiState]);
|
|
470
510
|
var deleteMessage = useCallback(function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
471
511
|
var deletedMessage, result;
|
|
472
512
|
return __generator(this, function (_a) {
|
|
@@ -628,7 +668,7 @@ var ChannelInner = function (props) {
|
|
|
628
668
|
var loadMoreThread = function (limit) {
|
|
629
669
|
if (limit === void 0) { limit = DEFAULT_THREAD_PAGE_SIZE; }
|
|
630
670
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
631
|
-
var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages,
|
|
671
|
+
var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages, e_6;
|
|
632
672
|
var _a;
|
|
633
673
|
return __generator(this, function (_b) {
|
|
634
674
|
switch (_b.label) {
|
|
@@ -658,7 +698,7 @@ var ChannelInner = function (props) {
|
|
|
658
698
|
loadMoreThreadFinished(threadHasMoreMessages, newThreadMessages);
|
|
659
699
|
return [3 /*break*/, 4];
|
|
660
700
|
case 3:
|
|
661
|
-
|
|
701
|
+
e_6 = _b.sent();
|
|
662
702
|
loadMoreThreadFinished(false, oldMessages);
|
|
663
703
|
return [3 /*break*/, 4];
|
|
664
704
|
case 4: return [2 /*return*/];
|
|
@@ -669,7 +709,7 @@ var ChannelInner = function (props) {
|
|
|
669
709
|
var onMentionsHoverOrClick = useMentionsHandlers(onMentionsHover, onMentionsClick);
|
|
670
710
|
var editMessage = useEditMessageHandler(doUpdateMessageRequest);
|
|
671
711
|
var typing = state.typing, restState = __rest(state, ["typing"]);
|
|
672
|
-
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, debounceURLEnrichmentMs: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.debounceURLEnrichmentMs, dragAndDropWindow: dragAndDropWindow, enrichURLForPreview: props.enrichURLForPreview, findURLFn: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.findURLFn, giphyVersion: props.giphyVersion || 'fixed_height', imageAttachmentSizeHandler: props.imageAttachmentSizeHandler || getImageAttachmentConfiguration, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, onLinkPreviewDismissed: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.onLinkPreviewDismissed, quotedMessage: quotedMessage, shouldGenerateVideoThumbnail: props.shouldGenerateVideoThumbnail || true, videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration, watcher_count: state.watcherCount }));
|
|
712
|
+
var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, channelUnreadUiState: channelUnreadUiState, debounceURLEnrichmentMs: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.debounceURLEnrichmentMs, dragAndDropWindow: dragAndDropWindow, enrichURLForPreview: props.enrichURLForPreview, findURLFn: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.findURLFn, giphyVersion: props.giphyVersion || 'fixed_height', imageAttachmentSizeHandler: props.imageAttachmentSizeHandler || getImageAttachmentConfiguration, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, onLinkPreviewDismissed: enrichURLForPreviewConfig === null || enrichURLForPreviewConfig === void 0 ? void 0 : enrichURLForPreviewConfig.onLinkPreviewDismissed, quotedMessage: quotedMessage, shouldGenerateVideoThumbnail: props.shouldGenerateVideoThumbnail || true, videoAttachmentSizeHandler: props.videoAttachmentSizeHandler || getVideoAttachmentConfiguration, watcher_count: state.watcherCount }));
|
|
673
713
|
var channelActionContextValue = useMemo(function () { return ({
|
|
674
714
|
addNotification: addNotification,
|
|
675
715
|
closeThread: closeThread,
|
|
@@ -731,6 +771,7 @@ var ChannelInner = function (props) {
|
|
|
731
771
|
LinkPreviewList: props.LinkPreviewList,
|
|
732
772
|
LoadingIndicator: props.LoadingIndicator,
|
|
733
773
|
Message: props.Message || MessageSimple,
|
|
774
|
+
MessageBouncePrompt: props.MessageBouncePrompt,
|
|
734
775
|
MessageDeleted: props.MessageDeleted,
|
|
735
776
|
MessageListNotifications: props.MessageListNotifications,
|
|
736
777
|
MessageNotification: props.MessageNotification,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCreateChannelStateContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Channel/hooks/useCreateChannelStateContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,4BAA4B;8BAIX,MAAM,EAAE;;
|
|
1
|
+
{"version":3,"file":"useCreateChannelStateContext.d.ts","sourceRoot":"","sources":["../../../../src/components/Channel/hooks/useCreateChannelStateContext.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAErF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAO,MAAM,4BAA4B;8BAIX,MAAM,EAAE;;kDAkKrC,CAAC"}
|
|
@@ -2,7 +2,7 @@ import { useMemo } from 'react';
|
|
|
2
2
|
import { isDate, isDayOrMoment } from '../../../context/TranslationContext';
|
|
3
3
|
export var useCreateChannelStateContext = function (value) {
|
|
4
4
|
var _a;
|
|
5
|
-
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, debounceURLEnrichmentMs = value.debounceURLEnrichmentMs, dragAndDropWindow = value.dragAndDropWindow, enrichURLForPreview = value.enrichURLForPreview, giphyVersion = value.giphyVersion, error = value.error, findURLFn = value.findURLFn, hasMore = value.hasMore, hasMoreNewer = value.hasMoreNewer, imageAttachmentSizeHandler = value.imageAttachmentSizeHandler, suppressAutoscroll = value.suppressAutoscroll, highlightedMessageId = value.highlightedMessageId, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, onLinkPreviewDismissed = value.onLinkPreviewDismissed, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, shouldGenerateVideoThumbnail = value.shouldGenerateVideoThumbnail, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, videoAttachmentSizeHandler = value.videoAttachmentSizeHandler, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
|
|
5
|
+
var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, debounceURLEnrichmentMs = value.debounceURLEnrichmentMs, dragAndDropWindow = value.dragAndDropWindow, enrichURLForPreview = value.enrichURLForPreview, giphyVersion = value.giphyVersion, error = value.error, findURLFn = value.findURLFn, hasMore = value.hasMore, hasMoreNewer = value.hasMoreNewer, imageAttachmentSizeHandler = value.imageAttachmentSizeHandler, suppressAutoscroll = value.suppressAutoscroll, highlightedMessageId = value.highlightedMessageId, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, onLinkPreviewDismissed = value.onLinkPreviewDismissed, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, shouldGenerateVideoThumbnail = value.shouldGenerateVideoThumbnail, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, channelUnreadUiState = value.channelUnreadUiState, videoAttachmentSizeHandler = value.videoAttachmentSizeHandler, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
|
|
6
6
|
var channelId = channel.cid;
|
|
7
7
|
var lastRead = channel.initialized && ((_a = channel.lastRead()) === null || _a === void 0 ? void 0 : _a.getTime());
|
|
8
8
|
var membersLength = Object.keys(members || []).length;
|
|
@@ -47,6 +47,7 @@ export var useCreateChannelStateContext = function (value) {
|
|
|
47
47
|
channel: channel,
|
|
48
48
|
channelCapabilities: channelCapabilities,
|
|
49
49
|
channelConfig: channelConfig,
|
|
50
|
+
channelUnreadUiState: channelUnreadUiState,
|
|
50
51
|
debounceURLEnrichmentMs: debounceURLEnrichmentMs,
|
|
51
52
|
dragAndDropWindow: dragAndDropWindow,
|
|
52
53
|
enrichURLForPreview: enrichURLForPreview,
|
|
@@ -83,6 +84,7 @@ export var useCreateChannelStateContext = function (value) {
|
|
|
83
84
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
85
|
[
|
|
85
86
|
channelId,
|
|
87
|
+
channelUnreadUiState,
|
|
86
88
|
debounceURLEnrichmentMs,
|
|
87
89
|
enrichURLForPreview,
|
|
88
90
|
error,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { MarkChannelReadOn } from './ChannelPreviewMessenger';
|
|
3
2
|
import { ChatContextValue } from '../../context/ChatContext';
|
|
4
3
|
import { MessageDeliveryStatus } from './hooks/useMessageDeliveryStatus';
|
|
5
4
|
import type { Channel } from 'stream-chat';
|
|
@@ -17,21 +16,6 @@ export type ChannelPreviewUIComponentProps<StreamChatGenerics extends DefaultStr
|
|
|
17
16
|
lastMessage?: StreamMessage<StreamChatGenerics>;
|
|
18
17
|
/** Latest message preview to display, will be a string or JSX element supporting markdown. */
|
|
19
18
|
latestMessage?: string | JSX.Element;
|
|
20
|
-
/**
|
|
21
|
-
* Configuration that determines when and whether a channel is marked read upon clicking ChannelPreview.
|
|
22
|
-
* 1. MarkChannelReadOn.never:
|
|
23
|
-
* Prevents a channel from being marked read when any ChannelPreview is clicked.
|
|
24
|
-
* 2. MarkChannelReadOn.leave:
|
|
25
|
-
* Marks active channel read before switching the active channel state to the clicked preview's channel.
|
|
26
|
-
* This means that active channel being left is marked read before navigating to another channel.
|
|
27
|
-
* 3. MarkChannelReadOn.reenter:
|
|
28
|
-
* Channel, which is re-entered by clicking the preview, is marked read.
|
|
29
|
-
* That means
|
|
30
|
-
* 1. an active channel can be marked unread, left and on return marked read.
|
|
31
|
-
* 2. a non-active channel receives a new message, is entered, left and re-entered and marked read.
|
|
32
|
-
* The default configuration is set to MarkChannelReadOn.reenter.
|
|
33
|
-
*/
|
|
34
|
-
markActiveChannelReadOn?: MarkChannelReadOn;
|
|
35
19
|
/** Status describing whether own message has been delivered or read by another. If the last message is not an own message, then the status is undefined. */
|
|
36
20
|
messageDeliveryStatus?: MessageDeliveryStatus;
|
|
37
21
|
/** Number of unread Messages */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChannelPreview.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAOhE,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAA4B,MAAM,kCAAkC,CAAC;AAEnG,OAAO,KAAK,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,MAAM,8BAA8B,CACxC,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,mBAAmB,CAAC,kBAAkB,CAAC,GAAG;IAC5C,kEAAkE;IAClE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAChD,8FAA8F;IAC9F,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;IACrC,4JAA4J;IAC5J,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,mBAAmB,CAC7B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,6MAA6M;IAC7M,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,+LAA+L;IAC/L,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC1C,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7C,6PAA6P;IAC7P,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,8BAA8B,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAClF,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAC5E,2CAA2C;IAC3C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD,CAAC;AAEF,eAAO,MAAM,cAAc,0JA4F1B,CAAC"}
|
|
@@ -1,10 +1,5 @@
|
|
|
1
1
|
import type { ChannelPreviewUIComponentProps } from './ChannelPreview';
|
|
2
2
|
import type { DefaultStreamChatGenerics } from '../../types/types';
|
|
3
|
-
export declare enum MarkChannelReadOn {
|
|
4
|
-
'never' = 0,
|
|
5
|
-
'leave' = 1,
|
|
6
|
-
'reenter' = 2
|
|
7
|
-
}
|
|
8
3
|
/**
|
|
9
4
|
* Used as preview component for channel item in [ChannelList](#channellist) component.
|
|
10
5
|
* Its best suited for messenger type chat.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChannelPreviewMessenger.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreviewMessenger.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ChannelPreviewMessenger.d.ts","sourceRoot":"","sources":["../../../src/components/ChannelPreview/ChannelPreviewMessenger.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAEvE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAwEnE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,8JAES,CAAC"}
|
|
@@ -1,82 +1,22 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useRef } from 'react';
|
|
2
2
|
import clsx from 'clsx';
|
|
3
3
|
import { Avatar as DefaultAvatar } from '../Avatar';
|
|
4
|
-
import { useChatContext } from '../../context';
|
|
5
|
-
export var MarkChannelReadOn;
|
|
6
|
-
(function (MarkChannelReadOn) {
|
|
7
|
-
MarkChannelReadOn[MarkChannelReadOn["never"] = 0] = "never";
|
|
8
|
-
MarkChannelReadOn[MarkChannelReadOn["leave"] = 1] = "leave";
|
|
9
|
-
MarkChannelReadOn[MarkChannelReadOn["reenter"] = 2] = "reenter";
|
|
10
|
-
})(MarkChannelReadOn || (MarkChannelReadOn = {}));
|
|
11
4
|
var UnMemoizedChannelPreviewMessenger = function (props) {
|
|
12
5
|
var _a, _b;
|
|
13
|
-
var active = props.active,
|
|
14
|
-
var client = useChatContext('ChannelPreviewMessenger').client;
|
|
6
|
+
var active = props.active, _c = props.Avatar, Avatar = _c === void 0 ? DefaultAvatar : _c, channel = props.channel, _d = props.className, customClassName = _d === void 0 ? '' : _d, displayImage = props.displayImage, displayTitle = props.displayTitle, latestMessage = props.latestMessage, customOnSelectChannel = props.onSelect, setActiveChannel = props.setActiveChannel, unread = props.unread, watchers = props.watchers;
|
|
15
7
|
var channelPreviewButton = useRef(null);
|
|
16
8
|
var avatarName = displayTitle || ((_b = (_a = channel.state.messages[channel.state.messages.length - 1]) === null || _a === void 0 ? void 0 : _a.user) === null || _b === void 0 ? void 0 : _b.id);
|
|
17
|
-
var previouslyClicked = useRef(active);
|
|
18
|
-
var handleMarkReadOnReenter = function () {
|
|
19
|
-
if (!client.user)
|
|
20
|
-
return;
|
|
21
|
-
var ownReadState = channel.state.read[client.user.id];
|
|
22
|
-
if (!previouslyClicked.current) {
|
|
23
|
-
previouslyClicked.current = true;
|
|
24
|
-
}
|
|
25
|
-
else if (!active &&
|
|
26
|
-
((ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.first_unread_message_id) || (ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.unread_messages) > 0) &&
|
|
27
|
-
previouslyClicked.current) {
|
|
28
|
-
channel.markRead();
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
var handleMarkReadOnLeave = function () {
|
|
32
|
-
if (!(client.user && activeChannel))
|
|
33
|
-
return;
|
|
34
|
-
var ownReadState = activeChannel.state.read[client.user.id];
|
|
35
|
-
if ((ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.first_unread_message_id) || (ownReadState === null || ownReadState === void 0 ? void 0 : ownReadState.unread_messages) > 0) {
|
|
36
|
-
activeChannel.markRead();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
9
|
var onSelectChannel = function (e) {
|
|
40
10
|
if (customOnSelectChannel) {
|
|
41
11
|
customOnSelectChannel(e);
|
|
42
12
|
}
|
|
43
13
|
else if (setActiveChannel) {
|
|
44
|
-
// eslint-disable-next-line default-case
|
|
45
|
-
switch (markActiveChannelReadOn) {
|
|
46
|
-
case MarkChannelReadOn.never:
|
|
47
|
-
break;
|
|
48
|
-
case MarkChannelReadOn.leave:
|
|
49
|
-
handleMarkReadOnLeave();
|
|
50
|
-
break;
|
|
51
|
-
case MarkChannelReadOn.reenter:
|
|
52
|
-
handleMarkReadOnReenter();
|
|
53
|
-
}
|
|
54
14
|
setActiveChannel(channel, watchers);
|
|
55
15
|
}
|
|
56
16
|
if (channelPreviewButton === null || channelPreviewButton === void 0 ? void 0 : channelPreviewButton.current) {
|
|
57
17
|
channelPreviewButton.current.blur();
|
|
58
18
|
}
|
|
59
19
|
};
|
|
60
|
-
useEffect(function () {
|
|
61
|
-
if (markActiveChannelReadOn !== MarkChannelReadOn.reenter)
|
|
62
|
-
return;
|
|
63
|
-
var handleEvent = function (event) {
|
|
64
|
-
var _a, _b;
|
|
65
|
-
if (active)
|
|
66
|
-
return;
|
|
67
|
-
if (channel.cid !== event.cid)
|
|
68
|
-
return;
|
|
69
|
-
if (event.type === 'notification.mark_unread' && ((_a = event.user) === null || _a === void 0 ? void 0 : _a.id) !== ((_b = client.user) === null || _b === void 0 ? void 0 : _b.id))
|
|
70
|
-
return;
|
|
71
|
-
previouslyClicked.current = false;
|
|
72
|
-
};
|
|
73
|
-
channel.on('notification.mark_unread', handleEvent);
|
|
74
|
-
channel.on('message.new', handleEvent);
|
|
75
|
-
return function () {
|
|
76
|
-
channel.off('notification.mark_unread', handleEvent);
|
|
77
|
-
channel.off('message.new', handleEvent);
|
|
78
|
-
};
|
|
79
|
-
}, [active, channel, client, markActiveChannelReadOn, previouslyClicked]);
|
|
80
20
|
return (React.createElement("button", { "aria-label": "Select Channel: ".concat(displayTitle || ''), "aria-selected": active, className: clsx("str-chat__channel-preview-messenger str-chat__channel-preview", active && 'str-chat__channel-preview-messenger--active', unread && unread >= 1 && 'str-chat__channel-preview-messenger--unread', customClassName), "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton, role: 'option' },
|
|
81
21
|
React.createElement("div", { className: 'str-chat__channel-preview-messenger--left' },
|
|
82
22
|
React.createElement(Avatar, { image: displayImage, name: avatarName, size: 40 })),
|