stream-chat-react-native-core 6.0.2-beta.1 → 6.1.0-beta.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.
- package/README.md +1 -1
- package/lib/commonjs/components/Channel/Channel.js +371 -279
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useChannelDataState.js +8 -0
- package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +10 -1
- package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +4 -0
- package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +161 -69
- package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useTargetedMessage.js +10 -0
- package/lib/commonjs/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +81 -54
- package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +6 -0
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js +117 -79
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/commonjs/components/Message/hooks/useMessageActions.js +32 -14
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js +4 -0
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js +19 -55
- package/lib/commonjs/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +249 -211
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/UnreadMessagesNotification.js +148 -0
- package/lib/commonjs/components/MessageList/UnreadMessagesNotification.js.map +1 -0
- package/lib/commonjs/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +7 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/i18n/en.json +2 -0
- package/lib/commonjs/i18n/es.json +2 -0
- package/lib/commonjs/i18n/fr.json +2 -0
- package/lib/commonjs/i18n/he.json +2 -0
- package/lib/commonjs/i18n/hi.json +2 -0
- package/lib/commonjs/i18n/it.json +2 -0
- package/lib/commonjs/i18n/ja.json +2 -0
- package/lib/commonjs/i18n/ko.json +2 -0
- package/lib/commonjs/i18n/nl.json +2 -0
- package/lib/commonjs/i18n/pt-br.json +2 -0
- package/lib/commonjs/i18n/ru.json +2 -0
- package/lib/commonjs/i18n/tr.json +2 -0
- package/lib/commonjs/icons/UnreadIndicator.js +30 -0
- package/lib/commonjs/icons/UnreadIndicator.js.map +1 -0
- package/lib/commonjs/icons/index.js +11 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/store/SqliteClient.js +1 -1
- package/lib/commonjs/store/schema.js +1 -0
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/types/types.js.map +1 -1
- package/lib/commonjs/utils/utils.js +35 -1
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +371 -279
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useChannelDataState.js +8 -0
- package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js +10 -1
- package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +4 -0
- package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useMessageListPagination.js +161 -69
- package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -1
- package/lib/module/components/Channel/hooks/useTargetedMessage.js +10 -0
- package/lib/module/components/Channel/hooks/useTargetedMessage.js.map +1 -1
- package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +81 -54
- package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
- package/lib/module/components/Message/Message.js +6 -0
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js +117 -79
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/module/components/Message/hooks/useMessageActions.js +32 -14
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/module/components/Message/utils/messageActions.js +4 -0
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/components/MessageList/InlineUnreadIndicator.js +19 -55
- package/lib/module/components/MessageList/InlineUnreadIndicator.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +249 -211
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/UnreadMessagesNotification.js +148 -0
- package/lib/module/components/MessageList/UnreadMessagesNotification.js.map +1 -0
- package/lib/module/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
- package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +7 -1
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/i18n/en.json +2 -0
- package/lib/module/i18n/es.json +2 -0
- package/lib/module/i18n/fr.json +2 -0
- package/lib/module/i18n/he.json +2 -0
- package/lib/module/i18n/hi.json +2 -0
- package/lib/module/i18n/it.json +2 -0
- package/lib/module/i18n/ja.json +2 -0
- package/lib/module/i18n/ko.json +2 -0
- package/lib/module/i18n/nl.json +2 -0
- package/lib/module/i18n/pt-br.json +2 -0
- package/lib/module/i18n/ru.json +2 -0
- package/lib/module/i18n/tr.json +2 -0
- package/lib/module/icons/UnreadIndicator.js +30 -0
- package/lib/module/icons/UnreadIndicator.js.map +1 -0
- package/lib/module/icons/index.js +11 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/store/SqliteClient.js +1 -1
- package/lib/module/store/schema.js +1 -0
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/types/types.js.map +1 -1
- package/lib/module/utils/utils.js +35 -1
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts +15 -3
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +1 -0
- package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +4 -2
- package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +4 -1
- package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -1
- package/lib/typescript/components/Channel/hooks/useTargetedMessage.d.ts +2 -1
- package/lib/typescript/components/Channel/hooks/useTargetedMessage.d.ts.map +1 -1
- package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts.map +1 -1
- package/lib/typescript/components/Message/Message.d.ts +2 -1
- package/lib/typescript/components/Message/Message.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +2 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +3 -2
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
- package/lib/typescript/components/Message/hooks/useMessageData.d.ts +1 -1
- package/lib/typescript/components/Message/utils/messageActions.d.ts +2 -1
- package/lib/typescript/components/Message/utils/messageActions.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/InlineUnreadIndicator.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/UnreadMessagesNotification.d.ts +13 -0
- package/lib/typescript/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -0
- package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts +2 -2
- package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts.map +1 -1
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +25 -8
- package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +5 -0
- package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +6 -0
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
- package/lib/typescript/i18n/en.json +2 -0
- package/lib/typescript/i18n/es.json +2 -0
- package/lib/typescript/i18n/fr.json +2 -0
- package/lib/typescript/i18n/he.json +2 -0
- package/lib/typescript/i18n/hi.json +2 -0
- package/lib/typescript/i18n/it.json +2 -0
- package/lib/typescript/i18n/ja.json +2 -0
- package/lib/typescript/i18n/ko.json +2 -0
- package/lib/typescript/i18n/nl.json +2 -0
- package/lib/typescript/i18n/pt-br.json +2 -0
- package/lib/typescript/i18n/ru.json +2 -0
- package/lib/typescript/i18n/tr.json +2 -0
- package/lib/typescript/icons/UnreadIndicator.d.ts +8 -0
- package/lib/typescript/icons/UnreadIndicator.d.ts.map +1 -0
- package/lib/typescript/icons/index.d.ts +1 -0
- package/lib/typescript/icons/index.d.ts.map +1 -1
- package/lib/typescript/store/mappers/mapStorableToChannel.d.ts +1 -1
- package/lib/typescript/store/schema.d.ts +1 -0
- package/lib/typescript/store/schema.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +2 -1
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/utils/i18n/Streami18n.d.ts +2 -0
- package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
- package/lib/typescript/utils/utils.d.ts +21 -1
- package/lib/typescript/utils/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +101 -24
- package/src/components/Channel/__tests__/Channel.test.js +109 -58
- package/src/components/Channel/__tests__/ownCapabilities.test.js +26 -0
- package/src/components/Channel/__tests__/useMessageListPagination.test.js +234 -37
- package/src/components/Channel/hooks/useChannelDataState.ts +8 -0
- package/src/components/Channel/hooks/useCreateChannelContext.ts +11 -0
- package/src/components/Channel/hooks/useCreateMessagesContext.ts +4 -0
- package/src/components/Channel/hooks/useMessageListPagination.tsx +134 -64
- package/src/components/Channel/hooks/useTargetedMessage.ts +9 -2
- package/src/components/Chat/hooks/handleEventToSyncDB.ts +23 -1
- package/src/components/Message/Message.tsx +8 -0
- package/src/components/Message/hooks/useMessageActionHandlers.ts +54 -40
- package/src/components/Message/hooks/useMessageActions.tsx +31 -14
- package/src/components/Message/utils/messageActions.ts +6 -0
- package/src/components/MessageList/InlineUnreadIndicator.tsx +17 -26
- package/src/components/MessageList/MessageList.tsx +197 -231
- package/src/components/MessageList/UnreadMessagesNotification.tsx +107 -0
- package/src/components/MessageList/__tests__/MessageList.test.js +213 -0
- package/src/components/MessageMenu/MessageActionListItem.tsx +2 -1
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +669 -679
- package/src/contexts/channelContext/ChannelContext.tsx +35 -9
- package/src/contexts/messagesContext/MessagesContext.tsx +7 -2
- package/src/contexts/themeContext/utils/theme.ts +12 -0
- package/src/i18n/en.json +2 -0
- package/src/i18n/es.json +2 -0
- package/src/i18n/fr.json +2 -0
- package/src/i18n/he.json +2 -0
- package/src/i18n/hi.json +2 -0
- package/src/i18n/it.json +2 -0
- package/src/i18n/ja.json +2 -0
- package/src/i18n/ko.json +2 -0
- package/src/i18n/nl.json +2 -0
- package/src/i18n/pt-br.json +2 -0
- package/src/i18n/ru.json +2 -0
- package/src/i18n/tr.json +2 -0
- package/src/icons/UnreadIndicator.tsx +18 -0
- package/src/icons/index.ts +1 -0
- package/src/store/SqliteClient.ts +1 -1
- package/src/store/schema.ts +2 -0
- package/src/types/types.ts +5 -2
- package/src/utils/utils.ts +61 -1
- package/src/version.json +1 -1
|
@@ -33,7 +33,7 @@ var _this = this,
|
|
|
33
33
|
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageList/MessageList.tsx";
|
|
34
34
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
35
35
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
|
|
36
|
-
var
|
|
36
|
+
var WAIT_FOR_SCROLL_TIMEOUT = 0;
|
|
37
37
|
var MAX_RETRIES_AFTER_SCROLL_FAILURE = 10;
|
|
38
38
|
var styles = _reactNative.StyleSheet.create({
|
|
39
39
|
container: {
|
|
@@ -42,7 +42,6 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
42
42
|
width: '100%'
|
|
43
43
|
},
|
|
44
44
|
contentContainer: {
|
|
45
|
-
flexGrow: 1,
|
|
46
45
|
paddingBottom: 4
|
|
47
46
|
},
|
|
48
47
|
flex: {
|
|
@@ -77,6 +76,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
77
76
|
var LoadingMoreRecentIndicator = props.threadList ? _InlineLoadingMoreRecentThreadIndicator.InlineLoadingMoreRecentThreadIndicator : _InlineLoadingMoreRecentIndicator.InlineLoadingMoreRecentIndicator;
|
|
78
77
|
var additionalFlatListProps = props.additionalFlatListProps,
|
|
79
78
|
channel = props.channel,
|
|
79
|
+
channelUnreadState = props.channelUnreadState,
|
|
80
80
|
client = props.client,
|
|
81
81
|
closePicker = props.closePicker,
|
|
82
82
|
DateHeader = props.DateHeader,
|
|
@@ -89,7 +89,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
89
89
|
_props$HeaderComponen = props.HeaderComponent,
|
|
90
90
|
HeaderComponent = _props$HeaderComponen === void 0 ? LoadingMoreRecentIndicator : _props$HeaderComponen,
|
|
91
91
|
hideStickyDateHeader = props.hideStickyDateHeader,
|
|
92
|
-
|
|
92
|
+
highlightedMessageId = props.highlightedMessageId,
|
|
93
93
|
InlineDateSeparator = props.InlineDateSeparator,
|
|
94
94
|
InlineUnreadIndicator = props.InlineUnreadIndicator,
|
|
95
95
|
_props$inverted = props.inverted,
|
|
@@ -128,7 +128,12 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
128
128
|
_props$threadList = props.threadList,
|
|
129
129
|
threadList = _props$threadList === void 0 ? false : _props$threadList,
|
|
130
130
|
TypingIndicator = props.TypingIndicator,
|
|
131
|
-
TypingIndicatorContainer = props.TypingIndicatorContainer
|
|
131
|
+
TypingIndicatorContainer = props.TypingIndicatorContainer,
|
|
132
|
+
UnreadMessagesNotification = props.UnreadMessagesNotification;
|
|
133
|
+
var _useState = (0, _react.useState)(false),
|
|
134
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
135
|
+
isUnreadNotificationOpen = _useState2[0],
|
|
136
|
+
setIsUnreadNotificationOpen = _useState2[1];
|
|
132
137
|
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
133
138
|
theme = _useTheme.theme;
|
|
134
139
|
var white_snow = theme.colors.white_snow,
|
|
@@ -159,22 +164,17 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
159
164
|
var latestNonCurrentMessageBeforeUpdateRef = (0, _react.useRef)();
|
|
160
165
|
var topMessageAfterUpdate = rawMessageList[0];
|
|
161
166
|
var shouldScrollToRecentOnNewOwnMessageRef = (0, _useShouldScrollToRecentOnNewOwnMessage.useShouldScrollToRecentOnNewOwnMessage)(rawMessageList, client.userID);
|
|
162
|
-
var
|
|
163
|
-
|
|
164
|
-
autoscrollToRecent =
|
|
165
|
-
setAutoscrollToRecent =
|
|
167
|
+
var _useState3 = (0, _react.useState)(false),
|
|
168
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
169
|
+
autoscrollToRecent = _useState4[0],
|
|
170
|
+
setAutoscrollToRecent = _useState4[1];
|
|
166
171
|
var onStartReachedTracker = (0, _react.useRef)({});
|
|
167
172
|
var onEndReachedTracker = (0, _react.useRef)({});
|
|
168
173
|
var onStartReachedInPromise = (0, _react.useRef)(null);
|
|
169
174
|
var onEndReachedInPromise = (0, _react.useRef)(null);
|
|
170
175
|
var flatListRef = (0, _react.useRef)(null);
|
|
171
|
-
var _useState3 = (0, _react.useState)(!initialScrollToFirstUnreadMessage),
|
|
172
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
173
|
-
isInitialScrollDone = _useState4[0],
|
|
174
|
-
setInitialScrollDone = _useState4[1];
|
|
175
176
|
var channelResyncScrollSet = (0, _react.useRef)(true);
|
|
176
177
|
var scrollToDebounceTimeoutRef = (0, _react.useRef)();
|
|
177
|
-
var initialScrollSettingTimeoutRef = (0, _react.useRef)();
|
|
178
178
|
var onScrollEventTimeoutRef = (0, _react.useRef)();
|
|
179
179
|
var messageIdLastScrolledToRef = (0, _react.useRef)();
|
|
180
180
|
var _useState5 = (0, _react.useState)(false),
|
|
@@ -197,9 +197,14 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
197
197
|
var channelRef = (0, _react.useRef)(channel);
|
|
198
198
|
channelRef.current = channel;
|
|
199
199
|
var updateStickyHeaderDateIfNeeded = function updateStickyHeaderDateIfNeeded(viewableItems) {
|
|
200
|
-
if (viewableItems.length)
|
|
200
|
+
if (!viewableItems.length) return;
|
|
201
|
+
var lastItem = viewableItems[viewableItems.length - 1];
|
|
202
|
+
if (lastItem) {
|
|
201
203
|
var _lastItem$item, _stickyHeaderDateRef$;
|
|
202
|
-
|
|
204
|
+
if (!channel.state.messagePagination.hasPrev && processedMessageList[processedMessageList.length - 1].id === lastItem.item.id) {
|
|
205
|
+
setStickyHeaderDate(undefined);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
203
208
|
var isMessageTypeDeleted = lastItem.item.type === 'deleted';
|
|
204
209
|
if (lastItem != null && (_lastItem$item = lastItem.item) != null && _lastItem$item.created_at && !isMessageTypeDeleted && typeof lastItem.item.created_at !== 'string' && lastItem.item.created_at.toDateString() !== ((_stickyHeaderDateRef$ = stickyHeaderDateRef.current) == null ? void 0 : _stickyHeaderDateRef$.toDateString())) {
|
|
205
210
|
stickyHeaderDateRef.current = lastItem.item.created_at;
|
|
@@ -207,15 +212,41 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
207
212
|
}
|
|
208
213
|
}
|
|
209
214
|
};
|
|
210
|
-
var
|
|
215
|
+
var updateStickyUnreadIndicator = function updateStickyUnreadIndicator(viewableItems) {
|
|
216
|
+
if (!viewableItems.length) {
|
|
217
|
+
setIsUnreadNotificationOpen(false);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (selectedPicker === 'images') {
|
|
221
|
+
setIsUnreadNotificationOpen(false);
|
|
222
|
+
return;
|
|
223
|
+
}
|
|
224
|
+
var lastItem = viewableItems[viewableItems.length - 1];
|
|
225
|
+
if (lastItem) {
|
|
226
|
+
var lastItemCreatedAt = lastItem.item.created_at;
|
|
227
|
+
var unreadIndicatorDate = channelUnreadState == null ? void 0 : channelUnreadState.last_read.getTime();
|
|
228
|
+
var lastItemDate = lastItemCreatedAt.getTime();
|
|
229
|
+
if (!channel.state.messagePagination.hasPrev && processedMessageList[processedMessageList.length - 1].id === lastItem.item.id) {
|
|
230
|
+
setIsUnreadNotificationOpen(false);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
if (unreadIndicatorDate && lastItemDate > unreadIndicatorDate) {
|
|
234
|
+
setIsUnreadNotificationOpen(true);
|
|
235
|
+
} else {
|
|
236
|
+
setIsUnreadNotificationOpen(false);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
var onViewableItemsChanged = function onViewableItemsChanged(_ref) {
|
|
211
241
|
var viewableItems = _ref.viewableItems;
|
|
212
|
-
if (
|
|
213
|
-
|
|
242
|
+
if (!viewableItems) {
|
|
243
|
+
return;
|
|
214
244
|
}
|
|
215
|
-
if (
|
|
245
|
+
if (!hideStickyDateHeader) {
|
|
216
246
|
updateStickyHeaderDateIfNeeded(viewableItems);
|
|
217
247
|
}
|
|
218
|
-
|
|
248
|
+
updateStickyUnreadIndicator(viewableItems);
|
|
249
|
+
};
|
|
219
250
|
var resetPaginationTrackersRef = (0, _react.useRef)(function () {
|
|
220
251
|
onStartReachedTracker.current = {};
|
|
221
252
|
onEndReachedTracker.current = {};
|
|
@@ -226,23 +257,18 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
226
257
|
}
|
|
227
258
|
}, [disabled]);
|
|
228
259
|
(0, _react.useEffect)(function () {
|
|
229
|
-
var
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
} else {
|
|
236
|
-
if (scrollToBottomButtonVisible) return false;
|
|
237
|
-
return isInitialScrollDone;
|
|
238
|
-
}
|
|
260
|
+
var listener = channel.on('message.new', function (event) {
|
|
261
|
+
var _event$message, _event$message2;
|
|
262
|
+
var newMessageToCurrentChannel = event.cid === channel.cid;
|
|
263
|
+
var mainChannelUpdated = !((_event$message = event.message) != null && _event$message.parent_id) || ((_event$message2 = event.message) == null ? void 0 : _event$message2.show_in_channel);
|
|
264
|
+
if (newMessageToCurrentChannel && mainChannelUpdated && !scrollToBottomButtonVisible) {
|
|
265
|
+
markRead();
|
|
239
266
|
}
|
|
240
|
-
|
|
267
|
+
});
|
|
268
|
+
return function () {
|
|
269
|
+
listener == null ? void 0 : listener.unsubscribe();
|
|
241
270
|
};
|
|
242
|
-
|
|
243
|
-
markRead();
|
|
244
|
-
}
|
|
245
|
-
}, [loading, scrollToBottomButtonVisible, isInitialScrollDone]);
|
|
271
|
+
}, [channel, markRead, scrollToBottomButtonVisible]);
|
|
246
272
|
(0, _react.useEffect)(function () {
|
|
247
273
|
var lastReceivedMessage = (0, _getLastReceivedMessage.getLastReceivedMessage)(processedMessageList);
|
|
248
274
|
setLastReceivedId(lastReceivedMessage == null ? void 0 : lastReceivedMessage.id);
|
|
@@ -261,7 +287,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
261
287
|
(_flatListRef$current = flatListRef.current) == null ? void 0 : _flatListRef$current.scrollToOffset({
|
|
262
288
|
offset: 0
|
|
263
289
|
});
|
|
264
|
-
},
|
|
290
|
+
}, WAIT_FOR_SCROLL_TIMEOUT);
|
|
265
291
|
setTimeout(function () {
|
|
266
292
|
channelResyncScrollSet.current = true;
|
|
267
293
|
if (channel.countUnread() > 0) {
|
|
@@ -272,8 +298,6 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
272
298
|
};
|
|
273
299
|
if (threadList) {
|
|
274
300
|
scrollToBottomIfNeeded();
|
|
275
|
-
} else {
|
|
276
|
-
setScrollToBottomButtonVisible(false);
|
|
277
301
|
}
|
|
278
302
|
messageListLengthBeforeUpdate.current = messageListLengthAfterUpdate;
|
|
279
303
|
topMessageBeforeUpdate.current = topMessageAfterUpdate;
|
|
@@ -309,51 +333,121 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
309
333
|
animated: true,
|
|
310
334
|
offset: 0
|
|
311
335
|
});
|
|
312
|
-
},
|
|
336
|
+
}, WAIT_FOR_SCROLL_TIMEOUT);
|
|
313
337
|
}
|
|
314
338
|
}
|
|
315
339
|
}, [rawMessageList, threadList]);
|
|
340
|
+
var goToMessage = function () {
|
|
341
|
+
var _ref2 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(messageId) {
|
|
342
|
+
var indexOfParentInMessageList;
|
|
343
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
344
|
+
while (1) switch (_context.prev = _context.next) {
|
|
345
|
+
case 0:
|
|
346
|
+
indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
|
|
347
|
+
return (message == null ? void 0 : message.id) === messageId;
|
|
348
|
+
});
|
|
349
|
+
_context.prev = 1;
|
|
350
|
+
if (!(indexOfParentInMessageList === -1)) {
|
|
351
|
+
_context.next = 8;
|
|
352
|
+
break;
|
|
353
|
+
}
|
|
354
|
+
_context.next = 5;
|
|
355
|
+
return loadChannelAroundMessage({
|
|
356
|
+
messageId: messageId
|
|
357
|
+
});
|
|
358
|
+
case 5:
|
|
359
|
+
return _context.abrupt("return");
|
|
360
|
+
case 8:
|
|
361
|
+
if (flatListRef.current) {
|
|
362
|
+
_context.next = 10;
|
|
363
|
+
break;
|
|
364
|
+
}
|
|
365
|
+
return _context.abrupt("return");
|
|
366
|
+
case 10:
|
|
367
|
+
clearTimeout(failScrollTimeoutId.current);
|
|
368
|
+
scrollToIndexFailedRetryCountRef.current = 0;
|
|
369
|
+
messageIdLastScrolledToRef.current = messageId;
|
|
370
|
+
setTargetedMessage(messageId);
|
|
371
|
+
flatListRef.current.scrollToIndex({
|
|
372
|
+
animated: true,
|
|
373
|
+
index: indexOfParentInMessageList,
|
|
374
|
+
viewPosition: 0.5
|
|
375
|
+
});
|
|
376
|
+
return _context.abrupt("return");
|
|
377
|
+
case 16:
|
|
378
|
+
_context.next = 21;
|
|
379
|
+
break;
|
|
380
|
+
case 18:
|
|
381
|
+
_context.prev = 18;
|
|
382
|
+
_context.t0 = _context["catch"](1);
|
|
383
|
+
console.warn('Error while scrolling to message', _context.t0);
|
|
384
|
+
case 21:
|
|
385
|
+
case "end":
|
|
386
|
+
return _context.stop();
|
|
387
|
+
}
|
|
388
|
+
}, _callee, null, [[1, 18]]);
|
|
389
|
+
}));
|
|
390
|
+
return function goToMessage(_x) {
|
|
391
|
+
return _ref2.apply(this, arguments);
|
|
392
|
+
};
|
|
393
|
+
}();
|
|
394
|
+
(0, _react.useEffect)(function () {
|
|
395
|
+
if (!targetedMessage) return;
|
|
396
|
+
scrollToDebounceTimeoutRef.current = setTimeout((0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
|
|
397
|
+
var indexOfParentInMessageList;
|
|
398
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
399
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
400
|
+
case 0:
|
|
401
|
+
indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
|
|
402
|
+
return (message == null ? void 0 : message.id) === targetedMessage;
|
|
403
|
+
});
|
|
404
|
+
if (!(indexOfParentInMessageList === -1)) {
|
|
405
|
+
_context2.next = 6;
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
_context2.next = 4;
|
|
409
|
+
return loadChannelAroundMessage({
|
|
410
|
+
messageId: targetedMessage,
|
|
411
|
+
setTargetedMessage: setTargetedMessage
|
|
412
|
+
});
|
|
413
|
+
case 4:
|
|
414
|
+
_context2.next = 13;
|
|
415
|
+
break;
|
|
416
|
+
case 6:
|
|
417
|
+
if (flatListRef.current) {
|
|
418
|
+
_context2.next = 8;
|
|
419
|
+
break;
|
|
420
|
+
}
|
|
421
|
+
return _context2.abrupt("return");
|
|
422
|
+
case 8:
|
|
423
|
+
clearTimeout(scrollToDebounceTimeoutRef.current);
|
|
424
|
+
clearTimeout(failScrollTimeoutId.current);
|
|
425
|
+
scrollToIndexFailedRetryCountRef.current = 0;
|
|
426
|
+
flatListRef.current.scrollToIndex({
|
|
427
|
+
animated: true,
|
|
428
|
+
index: indexOfParentInMessageList,
|
|
429
|
+
viewPosition: 0.5
|
|
430
|
+
});
|
|
431
|
+
setTargetedMessage(undefined);
|
|
432
|
+
case 13:
|
|
433
|
+
case "end":
|
|
434
|
+
return _context2.stop();
|
|
435
|
+
}
|
|
436
|
+
}, _callee2);
|
|
437
|
+
})), WAIT_FOR_SCROLL_TIMEOUT);
|
|
438
|
+
}, [targetedMessage]);
|
|
316
439
|
var shouldApplyAndroidWorkaround = inverted && _reactNative.Platform.OS === 'android';
|
|
317
|
-
var renderItem = function renderItem(
|
|
440
|
+
var renderItem = function renderItem(_ref4) {
|
|
318
441
|
var _message$user;
|
|
319
|
-
var index =
|
|
320
|
-
message =
|
|
442
|
+
var index = _ref4.index,
|
|
443
|
+
message = _ref4.item;
|
|
321
444
|
if (!channel || channel.disconnected || !channel.initialized && !channel.offlineMode) return null;
|
|
322
|
-
var
|
|
323
|
-
var
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
if (!isLatestMessageSetShown) {
|
|
329
|
-
var msg = processedMessageList == null ? void 0 : processedMessageList[messageArrayIndex];
|
|
330
|
-
if (channel.state.latestMessages.length !== 0 && unreadCount > channel.state.latestMessages.length) {
|
|
331
|
-
return messageArrayIndex <= unreadCount - channel.state.latestMessages.length - 1;
|
|
332
|
-
} else if (lastRead && msg != null && msg.created_at) {
|
|
333
|
-
return lastRead < msg.created_at;
|
|
334
|
-
}
|
|
335
|
-
return false;
|
|
336
|
-
} else {
|
|
337
|
-
return messageArrayIndex <= unreadCount - 1;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
var isCurrentMessageUnread = isMessageUnread(index);
|
|
341
|
-
var showUnreadUnderlay = !!shouldShowUnreadUnderlay && !channel.muteStatus().muted && isCurrentMessageUnread && scrollToBottomButtonVisible;
|
|
342
|
-
var insertInlineUnreadIndicator = showUnreadUnderlay && !isMessageUnread(index + 1);
|
|
343
|
-
if (message.type === 'system') {
|
|
344
|
-
return (0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
345
|
-
style: [shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
|
|
346
|
-
children: [(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
347
|
-
testID: "message-list-item-".concat(index),
|
|
348
|
-
children: (0, _jsxRuntime.jsx)(MessageSystem, {
|
|
349
|
-
message: message,
|
|
350
|
-
style: [{
|
|
351
|
-
paddingHorizontal: screenPadding
|
|
352
|
-
}, messageContainer]
|
|
353
|
-
})
|
|
354
|
-
}), insertInlineUnreadIndicator && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})]
|
|
355
|
-
});
|
|
356
|
-
}
|
|
445
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
446
|
+
var lastReadTimestamp = channelUnreadState == null ? void 0 : channelUnreadState.last_read.getTime();
|
|
447
|
+
var isNewestMessage = index === 0;
|
|
448
|
+
var isLastReadMessage = (channelUnreadState == null ? void 0 : channelUnreadState.last_read_message_id) === message.id || !(channelUnreadState != null && channelUnreadState.unread_messages) && createdAtTimestamp === lastReadTimestamp;
|
|
449
|
+
var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (!!(channelUnreadState != null && channelUnreadState.first_unread_message_id) || !!(channelUnreadState != null && channelUnreadState.unread_messages));
|
|
450
|
+
var showUnreadUnderlay = !!shouldShowUnreadUnderlay && showUnreadSeparator;
|
|
357
451
|
var wrapMessageInTheme = client.userID === ((_message$user = message.user) == null ? void 0 : _message$user.id) && !!myMessageTheme;
|
|
358
452
|
var renderDateSeperator = (0, _useMessageList2.isMessageWithStylesReadByAndDateSeparator)(message) && message.dateSeparator && (0, _jsxRuntime.jsx)(InlineDateSeparator, {
|
|
359
453
|
date: message.dateSeparator
|
|
@@ -361,7 +455,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
361
455
|
var renderMessage = (0, _jsxRuntime.jsx)(Message, {
|
|
362
456
|
goToMessage: goToMessage,
|
|
363
457
|
groupStyles: (0, _useMessageList2.isMessageWithStylesReadByAndDateSeparator)(message) ? message.groupStyles : [],
|
|
364
|
-
isTargetedMessage:
|
|
458
|
+
isTargetedMessage: highlightedMessageId === message.id,
|
|
365
459
|
lastReceivedId: lastReceivedId === message.id || message.quoted_message_id ? lastReceivedId : undefined,
|
|
366
460
|
message: message,
|
|
367
461
|
onThreadSelect: onThreadSelect,
|
|
@@ -369,35 +463,37 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
369
463
|
style: [messageContainer],
|
|
370
464
|
threadList: threadList
|
|
371
465
|
});
|
|
372
|
-
return (0, _jsxRuntime.jsxs)(
|
|
373
|
-
|
|
466
|
+
return (0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
467
|
+
style: [shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
|
|
468
|
+
testID: "message-list-item-".concat(index),
|
|
469
|
+
children: [message.type === 'system' ? (0, _jsxRuntime.jsx)(MessageSystem, {
|
|
470
|
+
message: message,
|
|
471
|
+
style: [{
|
|
472
|
+
paddingHorizontal: screenPadding
|
|
473
|
+
}, messageContainer]
|
|
474
|
+
}) : wrapMessageInTheme ? (0, _jsxRuntime.jsx)(_ThemeContext.ThemeProvider, {
|
|
374
475
|
mergedStyle: modifiedTheme,
|
|
375
476
|
children: (0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
376
|
-
style: [shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
|
|
377
477
|
testID: "message-list-item-".concat(index),
|
|
378
|
-
children: [
|
|
478
|
+
children: [renderDateSeperator, renderMessage]
|
|
379
479
|
})
|
|
380
480
|
}) : (0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
381
|
-
style: [shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
|
|
382
481
|
testID: "message-list-item-".concat(index),
|
|
383
|
-
children: [
|
|
384
|
-
}),
|
|
385
|
-
style: [shouldApplyAndroidWorkaround ? styles.invertAndroid : undefined],
|
|
386
|
-
children: insertInlineUnreadIndicator && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})
|
|
387
|
-
})]
|
|
482
|
+
children: [renderDateSeperator, renderMessage]
|
|
483
|
+
}), showUnreadUnderlay && (0, _jsxRuntime.jsx)(InlineUnreadIndicator, {})]
|
|
388
484
|
});
|
|
389
485
|
};
|
|
390
486
|
var maybeCallOnStartReached = function () {
|
|
391
|
-
var
|
|
487
|
+
var _ref5 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
|
|
392
488
|
var callback, onError;
|
|
393
|
-
return _regenerator["default"].wrap(function
|
|
394
|
-
while (1) switch (
|
|
489
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
490
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
395
491
|
case 0:
|
|
396
492
|
if (!(processedMessageList != null && processedMessageList.length && onStartReachedTracker.current[processedMessageList.length])) {
|
|
397
|
-
|
|
493
|
+
_context3.next = 2;
|
|
398
494
|
break;
|
|
399
495
|
}
|
|
400
|
-
return
|
|
496
|
+
return _context3.abrupt("return");
|
|
401
497
|
case 2:
|
|
402
498
|
if (processedMessageList != null && processedMessageList.length) {
|
|
403
499
|
onStartReachedTracker.current[processedMessageList.length] = true;
|
|
@@ -412,34 +508,34 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
412
508
|
}, 2000);
|
|
413
509
|
};
|
|
414
510
|
if (!onEndReachedInPromise.current) {
|
|
415
|
-
|
|
511
|
+
_context3.next = 8;
|
|
416
512
|
break;
|
|
417
513
|
}
|
|
418
|
-
|
|
514
|
+
_context3.next = 8;
|
|
419
515
|
return onEndReachedInPromise.current;
|
|
420
516
|
case 8:
|
|
421
517
|
onStartReachedInPromise.current = (threadList && !!threadInstance && loadMoreRecentThread ? loadMoreRecentThread({}) : loadMoreRecent()).then(callback)["catch"](onError);
|
|
422
518
|
case 9:
|
|
423
519
|
case "end":
|
|
424
|
-
return
|
|
520
|
+
return _context3.stop();
|
|
425
521
|
}
|
|
426
|
-
},
|
|
522
|
+
}, _callee3);
|
|
427
523
|
}));
|
|
428
524
|
return function maybeCallOnStartReached() {
|
|
429
|
-
return
|
|
525
|
+
return _ref5.apply(this, arguments);
|
|
430
526
|
};
|
|
431
527
|
}();
|
|
432
528
|
var maybeCallOnEndReached = function () {
|
|
433
|
-
var
|
|
529
|
+
var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
|
|
434
530
|
var callback, onError;
|
|
435
|
-
return _regenerator["default"].wrap(function
|
|
436
|
-
while (1) switch (
|
|
531
|
+
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
532
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
437
533
|
case 0:
|
|
438
534
|
if (!(processedMessageList != null && processedMessageList.length && onEndReachedTracker.current[processedMessageList.length])) {
|
|
439
|
-
|
|
535
|
+
_context4.next = 2;
|
|
440
536
|
break;
|
|
441
537
|
}
|
|
442
|
-
return
|
|
538
|
+
return _context4.abrupt("return");
|
|
443
539
|
case 2:
|
|
444
540
|
if (processedMessageList != null && processedMessageList.length) {
|
|
445
541
|
onEndReachedTracker.current[processedMessageList.length] = true;
|
|
@@ -454,21 +550,21 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
454
550
|
}, 2000);
|
|
455
551
|
};
|
|
456
552
|
if (!onStartReachedInPromise.current) {
|
|
457
|
-
|
|
553
|
+
_context4.next = 8;
|
|
458
554
|
break;
|
|
459
555
|
}
|
|
460
|
-
|
|
556
|
+
_context4.next = 8;
|
|
461
557
|
return onStartReachedInPromise.current;
|
|
462
558
|
case 8:
|
|
463
559
|
onEndReachedInPromise.current = (threadList ? loadMoreThread() : loadMore()).then(callback)["catch"](onError);
|
|
464
560
|
case 9:
|
|
465
561
|
case "end":
|
|
466
|
-
return
|
|
562
|
+
return _context4.stop();
|
|
467
563
|
}
|
|
468
|
-
},
|
|
564
|
+
}, _callee4);
|
|
469
565
|
}));
|
|
470
566
|
return function maybeCallOnEndReached() {
|
|
471
|
-
return
|
|
567
|
+
return _ref6.apply(this, arguments);
|
|
472
568
|
};
|
|
473
569
|
}();
|
|
474
570
|
var onUserScrollEvent = function onUserScrollEvent(event) {
|
|
@@ -490,72 +586,61 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
490
586
|
}
|
|
491
587
|
};
|
|
492
588
|
var handleScroll = function handleScroll(event) {
|
|
493
|
-
var offset = event.nativeEvent.contentOffset.y;
|
|
494
589
|
var messageListHasMessages = processedMessageList.length > 0;
|
|
590
|
+
var offset = event.nativeEvent.contentOffset.y;
|
|
495
591
|
var isScrollAtBottom = offset <= 150;
|
|
496
592
|
var notLatestSet = channel.state.messages !== channel.state.latestMessages;
|
|
497
593
|
var showScrollToBottomButton = messageListHasMessages && (!threadList && notLatestSet || !isScrollAtBottom);
|
|
498
594
|
setScrollToBottomButtonVisible(showScrollToBottomButton);
|
|
499
|
-
var shouldMarkRead = !threadList && !notLatestSet && offset <= 0 && channel.countUnread() > 0;
|
|
500
|
-
if (shouldMarkRead) {
|
|
501
|
-
markRead();
|
|
502
|
-
}
|
|
503
|
-
setInitialScrollDone(false);
|
|
504
595
|
if (onListScroll) {
|
|
505
596
|
onListScroll(event);
|
|
506
597
|
}
|
|
507
598
|
};
|
|
508
599
|
var goToNewMessages = function () {
|
|
509
|
-
var
|
|
600
|
+
var _ref7 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5() {
|
|
510
601
|
var isNotLatestSet;
|
|
511
|
-
return _regenerator["default"].wrap(function
|
|
512
|
-
while (1) switch (
|
|
602
|
+
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
603
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
513
604
|
case 0:
|
|
514
605
|
isNotLatestSet = channel.state.messages !== channel.state.latestMessages;
|
|
515
606
|
if (!isNotLatestSet) {
|
|
516
|
-
|
|
607
|
+
_context5.next = 7;
|
|
517
608
|
break;
|
|
518
609
|
}
|
|
519
610
|
resetPaginationTrackersRef.current();
|
|
520
|
-
|
|
611
|
+
_context5.next = 5;
|
|
521
612
|
return reloadChannel();
|
|
522
613
|
case 5:
|
|
523
|
-
|
|
614
|
+
_context5.next = 8;
|
|
524
615
|
break;
|
|
525
616
|
case 7:
|
|
526
617
|
if (flatListRef.current) {
|
|
527
618
|
flatListRef.current.scrollToOffset({
|
|
619
|
+
animated: true,
|
|
528
620
|
offset: 0
|
|
529
621
|
});
|
|
530
622
|
}
|
|
531
623
|
case 8:
|
|
532
624
|
setScrollToBottomButtonVisible(false);
|
|
533
|
-
|
|
534
|
-
markRead();
|
|
535
|
-
}
|
|
536
|
-
case 10:
|
|
625
|
+
case 9:
|
|
537
626
|
case "end":
|
|
538
|
-
return
|
|
627
|
+
return _context5.stop();
|
|
539
628
|
}
|
|
540
|
-
},
|
|
629
|
+
}, _callee5);
|
|
541
630
|
}));
|
|
542
631
|
return function goToNewMessages() {
|
|
543
|
-
return
|
|
632
|
+
return _ref7.apply(this, arguments);
|
|
544
633
|
};
|
|
545
634
|
}();
|
|
546
635
|
var scrollToIndexFailedRetryCountRef = (0, _react.useRef)(0);
|
|
547
636
|
var failScrollTimeoutId = (0, _react.useRef)();
|
|
548
637
|
var onScrollToIndexFailedRef = (0, _react.useRef)(function (info) {
|
|
549
638
|
if (!flatListRef.current) return;
|
|
550
|
-
flatListRef.current.scrollToOffset({
|
|
551
|
-
animated: false,
|
|
552
|
-
offset: info.averageItemLength * info.index
|
|
553
|
-
});
|
|
554
639
|
failScrollTimeoutId.current = setTimeout(function () {
|
|
555
640
|
try {
|
|
556
641
|
var _flatListRef$current3;
|
|
557
642
|
(_flatListRef$current3 = flatListRef.current) == null ? void 0 : _flatListRef$current3.scrollToIndex({
|
|
558
|
-
animated:
|
|
643
|
+
animated: true,
|
|
559
644
|
index: info.index,
|
|
560
645
|
viewPosition: 0.5
|
|
561
646
|
});
|
|
@@ -571,80 +656,8 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
571
656
|
scrollToIndexFailedRetryCountRef.current += 1;
|
|
572
657
|
onScrollToIndexFailedRef.current(info);
|
|
573
658
|
}
|
|
574
|
-
},
|
|
659
|
+
}, WAIT_FOR_SCROLL_TIMEOUT);
|
|
575
660
|
});
|
|
576
|
-
var goToMessage = function () {
|
|
577
|
-
var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4(messageId) {
|
|
578
|
-
var indexOfParentInMessageList;
|
|
579
|
-
return _regenerator["default"].wrap(function _callee4$(_context4) {
|
|
580
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
581
|
-
case 0:
|
|
582
|
-
indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
|
|
583
|
-
return (message == null ? void 0 : message.id) === messageId;
|
|
584
|
-
});
|
|
585
|
-
if (!(indexOfParentInMessageList !== -1 && flatListRef.current)) {
|
|
586
|
-
_context4.next = 8;
|
|
587
|
-
break;
|
|
588
|
-
}
|
|
589
|
-
clearTimeout(failScrollTimeoutId.current);
|
|
590
|
-
scrollToIndexFailedRetryCountRef.current = 0;
|
|
591
|
-
messageIdLastScrolledToRef.current = messageId;
|
|
592
|
-
setTargetedMessage(messageId);
|
|
593
|
-
flatListRef.current.scrollToIndex({
|
|
594
|
-
animated: true,
|
|
595
|
-
index: indexOfParentInMessageList,
|
|
596
|
-
viewPosition: 0.5
|
|
597
|
-
});
|
|
598
|
-
return _context4.abrupt("return");
|
|
599
|
-
case 8:
|
|
600
|
-
_context4.next = 10;
|
|
601
|
-
return loadChannelAroundMessage({
|
|
602
|
-
messageId: messageId
|
|
603
|
-
});
|
|
604
|
-
case 10:
|
|
605
|
-
case "end":
|
|
606
|
-
return _context4.stop();
|
|
607
|
-
}
|
|
608
|
-
}, _callee4);
|
|
609
|
-
}));
|
|
610
|
-
return function goToMessage(_x) {
|
|
611
|
-
return _ref6.apply(this, arguments);
|
|
612
|
-
};
|
|
613
|
-
}();
|
|
614
|
-
(0, _react.useEffect)(function () {
|
|
615
|
-
scrollToDebounceTimeoutRef.current = setTimeout(function () {
|
|
616
|
-
if (initialScrollToFirstUnreadMessage) {
|
|
617
|
-
clearTimeout(initialScrollSettingTimeoutRef.current);
|
|
618
|
-
initialScrollSettingTimeoutRef.current = setTimeout(function () {
|
|
619
|
-
setInitialScrollDone(true);
|
|
620
|
-
}, 2000);
|
|
621
|
-
}
|
|
622
|
-
var messageIdToScroll;
|
|
623
|
-
if (targetedMessage && messageIdLastScrolledToRef.current !== targetedMessage) {
|
|
624
|
-
messageIdToScroll = targetedMessage;
|
|
625
|
-
}
|
|
626
|
-
if (!messageIdToScroll) return;
|
|
627
|
-
var indexOfParentInMessageList = processedMessageList.findIndex(function (message) {
|
|
628
|
-
return (message == null ? void 0 : message.id) === messageIdToScroll;
|
|
629
|
-
});
|
|
630
|
-
if (indexOfParentInMessageList !== -1 && flatListRef.current) {
|
|
631
|
-
clearTimeout(scrollToDebounceTimeoutRef.current);
|
|
632
|
-
clearTimeout(failScrollTimeoutId.current);
|
|
633
|
-
messageIdLastScrolledToRef.current = messageIdToScroll;
|
|
634
|
-
scrollToIndexFailedRetryCountRef.current = 0;
|
|
635
|
-
flatListRef.current.scrollToIndex({
|
|
636
|
-
animated: false,
|
|
637
|
-
index: indexOfParentInMessageList,
|
|
638
|
-
viewPosition: 0.5
|
|
639
|
-
});
|
|
640
|
-
}
|
|
641
|
-
if (indexOfParentInMessageList === -1) {
|
|
642
|
-
loadChannelAroundMessage({
|
|
643
|
-
messageId: messageIdToScroll
|
|
644
|
-
});
|
|
645
|
-
}
|
|
646
|
-
}, 50);
|
|
647
|
-
}, [targetedMessage, initialScrollToFirstUnreadMessage]);
|
|
648
661
|
var messagesWithImages = legacyImageViewerSwipeBehaviour && processedMessageList.filter(function (message) {
|
|
649
662
|
var isMessageTypeDeleted = message.type === 'deleted';
|
|
650
663
|
if (!isMessageTypeDeleted && message.attachments) {
|
|
@@ -687,6 +700,25 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
687
700
|
setFlatListRef(ref);
|
|
688
701
|
}
|
|
689
702
|
};
|
|
703
|
+
var onUnreadNotificationClose = function () {
|
|
704
|
+
var _ref8 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee6() {
|
|
705
|
+
return _regenerator["default"].wrap(function _callee6$(_context6) {
|
|
706
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
707
|
+
case 0:
|
|
708
|
+
_context6.next = 2;
|
|
709
|
+
return markRead();
|
|
710
|
+
case 2:
|
|
711
|
+
setIsUnreadNotificationOpen(false);
|
|
712
|
+
case 3:
|
|
713
|
+
case "end":
|
|
714
|
+
return _context6.stop();
|
|
715
|
+
}
|
|
716
|
+
}, _callee6);
|
|
717
|
+
}));
|
|
718
|
+
return function onUnreadNotificationClose() {
|
|
719
|
+
return _ref8.apply(this, arguments);
|
|
720
|
+
};
|
|
721
|
+
}();
|
|
690
722
|
var debugRef = (0, _DebugContext.useDebugContext)();
|
|
691
723
|
var isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;
|
|
692
724
|
if (isDebugModeEnabled) {
|
|
@@ -768,7 +800,7 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
768
800
|
onScrollEndDrag: onScrollEndDrag,
|
|
769
801
|
onScrollToIndexFailed: onScrollToIndexFailedRef.current,
|
|
770
802
|
onTouchEnd: dismissImagePicker,
|
|
771
|
-
onViewableItemsChanged: onViewableItemsChanged
|
|
803
|
+
onViewableItemsChanged: onViewableItemsChanged,
|
|
772
804
|
ref: refCallback,
|
|
773
805
|
renderItem: renderItem,
|
|
774
806
|
scrollEnabled: overlay === 'none',
|
|
@@ -788,7 +820,9 @@ var MessageListWithContext = function MessageListWithContext(props) {
|
|
|
788
820
|
onPress: goToNewMessages,
|
|
789
821
|
showNotification: scrollToBottomButtonVisible,
|
|
790
822
|
unreadCount: threadList ? 0 : channel == null ? void 0 : channel.countUnread()
|
|
791
|
-
}), (0, _jsxRuntime.jsx)(NetworkDownIndicator, {})
|
|
823
|
+
}), (0, _jsxRuntime.jsx)(NetworkDownIndicator, {}), isUnreadNotificationOpen && !threadList ? (0, _jsxRuntime.jsx)(UnreadMessagesNotification, {
|
|
824
|
+
onCloseHandler: onUnreadNotificationClose
|
|
825
|
+
}) : null]
|
|
792
826
|
});
|
|
793
827
|
};
|
|
794
828
|
var MessageList = function MessageList(props) {
|
|
@@ -798,11 +832,13 @@ var MessageList = function MessageList(props) {
|
|
|
798
832
|
setSelectedPicker = _useAttachmentPickerC.setSelectedPicker;
|
|
799
833
|
var _useChannelContext = (0, _ChannelContext.useChannelContext)(),
|
|
800
834
|
channel = _useChannelContext.channel,
|
|
835
|
+
channelUnreadState = _useChannelContext.channelUnreadState,
|
|
801
836
|
disabled = _useChannelContext.disabled,
|
|
802
837
|
EmptyStateIndicator = _useChannelContext.EmptyStateIndicator,
|
|
803
838
|
enableMessageGroupingByUser = _useChannelContext.enableMessageGroupingByUser,
|
|
804
839
|
error = _useChannelContext.error,
|
|
805
840
|
hideStickyDateHeader = _useChannelContext.hideStickyDateHeader,
|
|
841
|
+
highlightedMessageId = _useChannelContext.highlightedMessageId,
|
|
806
842
|
isChannelActive = _useChannelContext.isChannelActive,
|
|
807
843
|
loadChannelAroundMessage = _useChannelContext.loadChannelAroundMessage,
|
|
808
844
|
loading = _useChannelContext.loading,
|
|
@@ -823,7 +859,6 @@ var MessageList = function MessageList(props) {
|
|
|
823
859
|
DateHeader = _useMessagesContext.DateHeader,
|
|
824
860
|
disableTypingIndicator = _useMessagesContext.disableTypingIndicator,
|
|
825
861
|
FlatList = _useMessagesContext.FlatList,
|
|
826
|
-
initialScrollToFirstUnreadMessage = _useMessagesContext.initialScrollToFirstUnreadMessage,
|
|
827
862
|
InlineDateSeparator = _useMessagesContext.InlineDateSeparator,
|
|
828
863
|
InlineUnreadIndicator = _useMessagesContext.InlineUnreadIndicator,
|
|
829
864
|
legacyImageViewerSwipeBehaviour = _useMessagesContext.legacyImageViewerSwipeBehaviour,
|
|
@@ -833,7 +868,8 @@ var MessageList = function MessageList(props) {
|
|
|
833
868
|
ScrollToBottomButton = _useMessagesContext.ScrollToBottomButton,
|
|
834
869
|
shouldShowUnreadUnderlay = _useMessagesContext.shouldShowUnreadUnderlay,
|
|
835
870
|
TypingIndicator = _useMessagesContext.TypingIndicator,
|
|
836
|
-
TypingIndicatorContainer = _useMessagesContext.TypingIndicatorContainer
|
|
871
|
+
TypingIndicatorContainer = _useMessagesContext.TypingIndicatorContainer,
|
|
872
|
+
UnreadMessagesNotification = _useMessagesContext.UnreadMessagesNotification;
|
|
837
873
|
var _usePaginatedMessageL = (0, _PaginatedMessageListContext.usePaginatedMessageListContext)(),
|
|
838
874
|
loadMore = _usePaginatedMessageL.loadMore,
|
|
839
875
|
loadMoreRecent = _usePaginatedMessageL.loadMoreRecent;
|
|
@@ -846,6 +882,7 @@ var MessageList = function MessageList(props) {
|
|
|
846
882
|
threadInstance = _useThreadContext.threadInstance;
|
|
847
883
|
return (0, _jsxRuntime.jsx)(MessageListWithContext, Object.assign({
|
|
848
884
|
channel: channel,
|
|
885
|
+
channelUnreadState: channelUnreadState,
|
|
849
886
|
client: client,
|
|
850
887
|
closePicker: closePicker,
|
|
851
888
|
DateHeader: DateHeader,
|
|
@@ -856,7 +893,7 @@ var MessageList = function MessageList(props) {
|
|
|
856
893
|
error: error,
|
|
857
894
|
FlatList: FlatList,
|
|
858
895
|
hideStickyDateHeader: hideStickyDateHeader,
|
|
859
|
-
|
|
896
|
+
highlightedMessageId: highlightedMessageId,
|
|
860
897
|
InlineDateSeparator: InlineDateSeparator,
|
|
861
898
|
InlineUnreadIndicator: InlineUnreadIndicator,
|
|
862
899
|
isListActive: isChannelActive,
|
|
@@ -888,7 +925,8 @@ var MessageList = function MessageList(props) {
|
|
|
888
925
|
threadInstance: threadInstance,
|
|
889
926
|
threadList: threadList,
|
|
890
927
|
TypingIndicator: TypingIndicator,
|
|
891
|
-
TypingIndicatorContainer: TypingIndicatorContainer
|
|
928
|
+
TypingIndicatorContainer: TypingIndicatorContainer,
|
|
929
|
+
UnreadMessagesNotification: UnreadMessagesNotification
|
|
892
930
|
}, props, {
|
|
893
931
|
noGroupByUser: !enableMessageGroupingByUser || props.noGroupByUser
|
|
894
932
|
}));
|