stream-chat-react-native-core 5.1.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js +32 -15
  2. package/lib/commonjs/components/ChannelList/ChannelListMessenger.js.map +1 -1
  3. package/lib/commonjs/components/Chat/Chat.js +17 -5
  4. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  5. package/lib/commonjs/components/ImageGallery/ImageGallery.js +106 -100
  6. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  7. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +14 -16
  8. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  9. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +13 -16
  10. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  11. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +6 -6
  12. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  13. package/lib/commonjs/components/MessageList/MessageList.js +39 -26
  14. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  15. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +19 -19
  16. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +1 -1
  17. package/lib/commonjs/components/ProgressControl/ProgressControl.js +6 -6
  18. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
  19. package/lib/commonjs/contexts/debugContext/DebugContext.js +63 -0
  20. package/lib/commonjs/contexts/debugContext/DebugContext.js.map +1 -0
  21. package/lib/commonjs/contexts/index.js +13 -0
  22. package/lib/commonjs/contexts/index.js.map +1 -1
  23. package/lib/commonjs/native.js.map +1 -1
  24. package/lib/commonjs/version.json +1 -1
  25. package/lib/module/components/ChannelList/ChannelListMessenger.js +32 -15
  26. package/lib/module/components/ChannelList/ChannelListMessenger.js.map +1 -1
  27. package/lib/module/components/Chat/Chat.js +17 -5
  28. package/lib/module/components/Chat/Chat.js.map +1 -1
  29. package/lib/module/components/ImageGallery/ImageGallery.js +106 -100
  30. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  31. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +14 -16
  32. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  33. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +13 -16
  34. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  35. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +6 -6
  36. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  37. package/lib/module/components/MessageList/MessageList.js +39 -26
  38. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  39. package/lib/module/components/MessageOverlay/OverlayReactions.js +19 -19
  40. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +1 -1
  41. package/lib/module/components/ProgressControl/ProgressControl.js +6 -6
  42. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
  43. package/lib/module/contexts/debugContext/DebugContext.js +63 -0
  44. package/lib/module/contexts/debugContext/DebugContext.js.map +1 -0
  45. package/lib/module/contexts/index.js +13 -0
  46. package/lib/module/contexts/index.js.map +1 -1
  47. package/lib/module/native.js.map +1 -1
  48. package/lib/module/version.json +1 -1
  49. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +3 -0
  50. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +5 -3
  51. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +1 -3
  52. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +1 -0
  53. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +1 -1
  54. package/lib/typescript/contexts/debugContext/DebugContext.d.ts +27 -0
  55. package/lib/typescript/contexts/index.d.ts +1 -0
  56. package/lib/typescript/native.d.ts +3 -2
  57. package/package.json +2 -2
  58. package/src/components/ChannelList/ChannelListMessenger.tsx +17 -0
  59. package/src/components/Chat/Chat.tsx +13 -0
  60. package/src/components/ImageGallery/ImageGallery.tsx +87 -65
  61. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +2 -2
  62. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +40 -28
  63. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +16 -9
  64. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +1 -6
  65. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +5 -6
  66. package/src/components/MessageList/MessageList.tsx +15 -0
  67. package/src/components/MessageOverlay/OverlayReactions.tsx +1 -0
  68. package/src/components/ProgressControl/ProgressControl.tsx +8 -4
  69. package/src/contexts/debugContext/DebugContext.tsx +77 -0
  70. package/src/contexts/index.ts +1 -0
  71. package/src/native.ts +3 -2
  72. package/src/version.json +1 -1
@@ -19,6 +19,8 @@ var _ChannelsContext = require("../../contexts/channelsContext/ChannelsContext")
19
19
 
20
20
  var _ChatContext = require("../../contexts/chatContext/ChatContext");
21
21
 
22
+ var _DebugContext = require("../../contexts/debugContext/DebugContext");
23
+
22
24
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
23
25
 
24
26
  var _ChannelPreview = require("../ChannelPreview/ChannelPreview");
@@ -64,14 +66,14 @@ var StatusIndicator = function StatusIndicator() {
64
66
  __self: _this,
65
67
  __source: {
66
68
  fileName: _jsxFileName,
67
- lineNumber: 53,
69
+ lineNumber: 54,
68
70
  columnNumber: 7
69
71
  }
70
72
  }, _react["default"].createElement(HeaderNetworkDownIndicator, {
71
73
  __self: _this,
72
74
  __source: {
73
75
  fileName: _jsxFileName,
74
- lineNumber: 54,
76
+ lineNumber: 55,
75
77
  columnNumber: 9
76
78
  }
77
79
  }));
@@ -81,7 +83,7 @@ var StatusIndicator = function StatusIndicator() {
81
83
  __self: _this,
82
84
  __source: {
83
85
  fileName: _jsxFileName,
84
- lineNumber: 59,
86
+ lineNumber: 60,
85
87
  columnNumber: 7
86
88
  }
87
89
  }, _react["default"].createElement(HeaderErrorIndicator, {
@@ -89,7 +91,7 @@ var StatusIndicator = function StatusIndicator() {
89
91
  __self: _this,
90
92
  __source: {
91
93
  fileName: _jsxFileName,
92
- lineNumber: 60,
94
+ lineNumber: 61,
93
95
  columnNumber: 9
94
96
  }
95
97
  }));
@@ -105,7 +107,7 @@ var renderItem = function renderItem(_ref) {
105
107
  __self: _this,
106
108
  __source: {
107
109
  fileName: _jsxFileName,
108
- lineNumber: 73,
110
+ lineNumber: 74,
109
111
  columnNumber: 7
110
112
  }
111
113
  });
@@ -146,11 +148,26 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
146
148
  loading = _useState2[0],
147
149
  setLoading = _useState2[1];
148
150
 
151
+ var debugRef = (0, _DebugContext.useDebugContext)();
149
152
  (0, _react.useEffect)(function () {
150
153
  if (!!loadingChannels !== loading) {
151
154
  setLoading(!!loadingChannels);
152
155
  }
153
156
  }, [loading, loadingChannels]);
157
+ var isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;
158
+
159
+ if (isDebugModeEnabled) {
160
+ if (debugRef.current.setEventType) debugRef.current.setEventType('send');
161
+ if (debugRef.current.setSendEventParams) debugRef.current.setSendEventParams({
162
+ action: 'Channels',
163
+ data: channels.map(function (channel) {
164
+ return {
165
+ data: channel.data,
166
+ members: channel.state.members
167
+ };
168
+ })
169
+ });
170
+ }
154
171
 
155
172
  if (error && !refreshing && !loadingChannels && !(channels != null && channels.length)) {
156
173
  return _react["default"].createElement(LoadingErrorIndicator, {
@@ -161,7 +178,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
161
178
  __self: _this,
162
179
  __source: {
163
180
  fileName: _jsxFileName,
164
- lineNumber: 127,
181
+ lineNumber: 144,
165
182
  columnNumber: 7
166
183
  }
167
184
  });
@@ -178,7 +195,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
178
195
  __self: _this,
179
196
  __source: {
180
197
  fileName: _jsxFileName,
181
- lineNumber: 143,
198
+ lineNumber: 160,
182
199
  columnNumber: 46
183
200
  }
184
201
  }) : null;
@@ -190,7 +207,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
190
207
  __self: _this,
191
208
  __source: {
192
209
  fileName: _jsxFileName,
193
- lineNumber: 146,
210
+ lineNumber: 163,
194
211
  columnNumber: 12
195
212
  }
196
213
  });
@@ -208,7 +225,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
208
225
  __self: _this,
209
226
  __source: {
210
227
  fileName: _jsxFileName,
211
- lineNumber: 162,
228
+ lineNumber: 179,
212
229
  columnNumber: 13
213
230
  }
214
231
  }) : _react["default"].createElement(EmptyStateIndicator, {
@@ -216,7 +233,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
216
233
  __self: _this,
217
234
  __source: {
218
235
  fileName: _jsxFileName,
219
- lineNumber: 164,
236
+ lineNumber: 181,
220
237
  columnNumber: 13
221
238
  }
222
239
  }),
@@ -224,7 +241,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
224
241
  __self: _this,
225
242
  __source: {
226
243
  fileName: _jsxFileName,
227
- lineNumber: 167,
244
+ lineNumber: 184,
228
245
  columnNumber: 48
229
246
  }
230
247
  }) : undefined,
@@ -238,7 +255,7 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
238
255
  __self: _this,
239
256
  __source: {
240
257
  fileName: _jsxFileName,
241
- lineNumber: 172,
258
+ lineNumber: 189,
242
259
  columnNumber: 25
243
260
  }
244
261
  }),
@@ -251,14 +268,14 @@ var ChannelListMessengerWithContext = function ChannelListMessengerWithContext(p
251
268
  __self: _this,
252
269
  __source: {
253
270
  fileName: _jsxFileName,
254
- lineNumber: 151,
271
+ lineNumber: 168,
255
272
  columnNumber: 7
256
273
  }
257
274
  })), _react["default"].createElement(StatusIndicator, {
258
275
  __self: _this,
259
276
  __source: {
260
277
  fileName: _jsxFileName,
261
- lineNumber: 178,
278
+ lineNumber: 195,
262
279
  columnNumber: 7
263
280
  }
264
281
  }));
@@ -306,7 +323,7 @@ var ChannelListMessenger = function ChannelListMessenger(props) {
306
323
  __self: _this,
307
324
  __source: {
308
325
  fileName: _jsxFileName,
309
- lineNumber: 219,
326
+ lineNumber: 236,
310
327
  columnNumber: 5
311
328
  }
312
329
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["ChannelListMessenger.tsx"],"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","isOnline","error","HeaderErrorIndicator","HeaderNetworkDownIndicator","loadingChannels","refreshList","renderItem","item","keyExtractor","cid","ChannelListMessengerWithContext","props","additionalFlatListProps","channels","EmptyStateIndicator","FooterLoadingIndicator","forceUpdate","ListHeaderComponent","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","refreshing","reloadList","setFlatListRef","theme","channelListMessenger","flatListContent","white_snow","colors","loading","setLoading","length","onEndReached","ListFooterComponent","backgroundColor","undefined","ChannelListMessenger","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n// RNGR's FlatList ist currently breaking the pull-to-refresh behaviour on Android\n// See https://github.com/software-mansion/react-native-gesture-handler/issues/598\nimport { FlatList, RefreshControl, StyleSheet, View } from 'react-native';\n\nimport type { Channel } from 'stream-chat';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreview } from '../ChannelPreview/ChannelPreview';\n\nconst styles = StyleSheet.create({\n flatList: { flex: 1 },\n flatListContentContainer: { flexGrow: 1 },\n statusIndicator: { left: 0, position: 'absolute', right: 0, top: 0 },\n});\n\nexport type ChannelListMessengerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n ChannelsContextValue<StreamChatGenerics>,\n | 'hasNextPage'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n | 'onSelect'\n | 'Preview'\n | 'PreviewTitle'\n | 'PreviewStatus'\n | 'PreviewAvatar'\n | 'previewMessage'\n | 'Skeleton'\n>;\n\nconst StatusIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const { isOnline } = useChatContext<StreamChatGenerics>();\n const { error, HeaderErrorIndicator, HeaderNetworkDownIndicator, loadingChannels, refreshList } =\n useChannelsContext<StreamChatGenerics>();\n\n if (loadingChannels) return null;\n\n if (!isOnline) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderNetworkDownIndicator />\n </View>\n );\n } else if (error) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderErrorIndicator onPress={refreshList} />\n </View>\n );\n }\n return null;\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: Channel<StreamChatGenerics>;\n}) => <ChannelPreview<StreamChatGenerics> channel={item} />;\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: Channel<StreamChatGenerics>,\n) => item.cid;\n\nconst ChannelListMessengerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = props;\n\n const {\n theme: {\n channelListMessenger: { flatList, flatListContent },\n colors: { white_snow },\n },\n } = useTheme();\n\n /**\n * In order to prevent the EmptyStateIndicator component from showing up briefly on mount,\n * we set the loading state one cycle behind to ensure the channels are set before the\n * change to loadingChannels is registered.\n */\n const [loading, setLoading] = useState(true);\n useEffect(() => {\n if (!!loadingChannels !== loading) {\n setLoading(!!loadingChannels);\n }\n }, [loading, loadingChannels]);\n\n if (error && !refreshing && !loadingChannels && !channels?.length) {\n return (\n <LoadingErrorIndicator\n error={error}\n listType='channel'\n loadNextPage={loadNextPage}\n retry={reloadList}\n />\n );\n }\n\n const onEndReached = () => {\n if (loadNextPage) {\n loadNextPage();\n }\n };\n\n const ListFooterComponent = () =>\n channels.length && ListHeaderComponent ? <ListHeaderComponent /> : null;\n\n if (loadingChannels) {\n return <LoadingIndicator listType='channel' />;\n }\n\n return (\n <>\n <FlatList\n contentContainerStyle={[\n styles.flatListContentContainer,\n { backgroundColor: white_snow },\n flatListContent,\n ]}\n data={channels}\n extraData={forceUpdate}\n keyExtractor={keyExtractor}\n ListEmptyComponent={\n loading ? (\n <LoadingIndicator listType='channel' />\n ) : (\n <EmptyStateIndicator listType='channel' />\n )\n }\n ListFooterComponent={loadingNextPage ? <FooterLoadingIndicator /> : undefined}\n ListHeaderComponent={ListFooterComponent}\n onEndReached={onEndReached}\n onEndReachedThreshold={loadMoreThreshold}\n ref={setFlatListRef}\n refreshControl={<RefreshControl onRefresh={refreshList} refreshing={refreshing} />}\n renderItem={renderItem}\n style={[styles.flatList, { backgroundColor: white_snow }, flatList]}\n testID='channel-list-messenger'\n {...additionalFlatListProps}\n />\n <StatusIndicator<StreamChatGenerics> />\n </>\n );\n};\n\nexport type ChannelListMessengerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ChannelListMessengerPropsWithContext<StreamChatGenerics>>;\n\n/**\n * This UI component displays the preview list of channels and handles Channel navigation. It\n * receives all props from the ChannelList component.\n *\n * @example ./ChannelListMessenger.md\n */\nexport const ChannelListMessenger = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = useChannelsContext<StreamChatGenerics>();\n\n return (\n <ChannelListMessengerWithContext\n {...{\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n }}\n {...props}\n />\n );\n};\n\nChannelListMessenger.displayName = 'ChannelListMessenger{channelListMessenger}';\n"]}
1
+ {"version":3,"sources":["ChannelListMessenger.tsx"],"names":["styles","StyleSheet","create","flatList","flex","flatListContentContainer","flexGrow","statusIndicator","left","position","right","top","StatusIndicator","isOnline","error","HeaderErrorIndicator","HeaderNetworkDownIndicator","loadingChannels","refreshList","renderItem","item","keyExtractor","cid","ChannelListMessengerWithContext","props","additionalFlatListProps","channels","EmptyStateIndicator","FooterLoadingIndicator","forceUpdate","ListHeaderComponent","LoadingErrorIndicator","LoadingIndicator","loadingNextPage","loadMoreThreshold","loadNextPage","refreshing","reloadList","setFlatListRef","theme","channelListMessenger","flatListContent","white_snow","colors","loading","setLoading","debugRef","isDebugModeEnabled","__DEV__","current","setEventType","setSendEventParams","action","data","map","channel","members","state","length","onEndReached","ListFooterComponent","backgroundColor","undefined","ChannelListMessenger","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react';\n// RNGR's FlatList ist currently breaking the pull-to-refresh behaviour on Android\n// See https://github.com/software-mansion/react-native-gesture-handler/issues/598\nimport { FlatList, RefreshControl, StyleSheet, View } from 'react-native';\n\nimport type { Channel } from 'stream-chat';\n\nimport {\n ChannelsContextValue,\n useChannelsContext,\n} from '../../contexts/channelsContext/ChannelsContext';\nimport { useChatContext } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { ChannelPreview } from '../ChannelPreview/ChannelPreview';\n\nconst styles = StyleSheet.create({\n flatList: { flex: 1 },\n flatListContentContainer: { flexGrow: 1 },\n statusIndicator: { left: 0, position: 'absolute', right: 0, top: 0 },\n});\n\nexport type ChannelListMessengerPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Omit<\n ChannelsContextValue<StreamChatGenerics>,\n | 'hasNextPage'\n | 'HeaderErrorIndicator'\n | 'HeaderNetworkDownIndicator'\n | 'maxUnreadCount'\n | 'numberOfSkeletons'\n | 'onSelect'\n | 'Preview'\n | 'PreviewTitle'\n | 'PreviewStatus'\n | 'PreviewAvatar'\n | 'previewMessage'\n | 'Skeleton'\n>;\n\nconst StatusIndicator = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const { isOnline } = useChatContext<StreamChatGenerics>();\n const { error, HeaderErrorIndicator, HeaderNetworkDownIndicator, loadingChannels, refreshList } =\n useChannelsContext<StreamChatGenerics>();\n\n if (loadingChannels) return null;\n\n if (!isOnline) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderNetworkDownIndicator />\n </View>\n );\n } else if (error) {\n return (\n <View style={styles.statusIndicator}>\n <HeaderErrorIndicator onPress={refreshList} />\n </View>\n );\n }\n return null;\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: Channel<StreamChatGenerics>;\n}) => <ChannelPreview<StreamChatGenerics> channel={item} />;\n\nconst keyExtractor = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n item: Channel<StreamChatGenerics>,\n) => item.cid;\n\nconst ChannelListMessengerWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = props;\n\n const {\n theme: {\n channelListMessenger: { flatList, flatListContent },\n colors: { white_snow },\n },\n } = useTheme();\n\n /**\n * In order to prevent the EmptyStateIndicator component from showing up briefly on mount,\n * we set the loading state one cycle behind to ensure the channels are set before the\n * change to loadingChannels is registered.\n */\n const [loading, setLoading] = useState(true);\n const debugRef = useDebugContext();\n\n useEffect(() => {\n if (!!loadingChannels !== loading) {\n setLoading(!!loadingChannels);\n }\n }, [loading, loadingChannels]);\n\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Channels',\n data: channels.map((channel) => ({\n data: channel.data,\n members: channel.state.members,\n })),\n });\n }\n\n if (error && !refreshing && !loadingChannels && !channels?.length) {\n return (\n <LoadingErrorIndicator\n error={error}\n listType='channel'\n loadNextPage={loadNextPage}\n retry={reloadList}\n />\n );\n }\n\n const onEndReached = () => {\n if (loadNextPage) {\n loadNextPage();\n }\n };\n\n const ListFooterComponent = () =>\n channels.length && ListHeaderComponent ? <ListHeaderComponent /> : null;\n\n if (loadingChannels) {\n return <LoadingIndicator listType='channel' />;\n }\n\n return (\n <>\n <FlatList\n contentContainerStyle={[\n styles.flatListContentContainer,\n { backgroundColor: white_snow },\n flatListContent,\n ]}\n data={channels}\n extraData={forceUpdate}\n keyExtractor={keyExtractor}\n ListEmptyComponent={\n loading ? (\n <LoadingIndicator listType='channel' />\n ) : (\n <EmptyStateIndicator listType='channel' />\n )\n }\n ListFooterComponent={loadingNextPage ? <FooterLoadingIndicator /> : undefined}\n ListHeaderComponent={ListFooterComponent}\n onEndReached={onEndReached}\n onEndReachedThreshold={loadMoreThreshold}\n ref={setFlatListRef}\n refreshControl={<RefreshControl onRefresh={refreshList} refreshing={refreshing} />}\n renderItem={renderItem}\n style={[styles.flatList, { backgroundColor: white_snow }, flatList]}\n testID='channel-list-messenger'\n {...additionalFlatListProps}\n />\n <StatusIndicator<StreamChatGenerics> />\n </>\n );\n};\n\nexport type ChannelListMessengerProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ChannelListMessengerPropsWithContext<StreamChatGenerics>>;\n\n/**\n * This UI component displays the preview list of channels and handles Channel navigation. It\n * receives all props from the ChannelList component.\n *\n * @example ./ChannelListMessenger.md\n */\nexport const ChannelListMessenger = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ChannelListMessengerProps<StreamChatGenerics>,\n) => {\n const {\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n } = useChannelsContext<StreamChatGenerics>();\n\n return (\n <ChannelListMessengerWithContext\n {...{\n additionalFlatListProps,\n channels,\n EmptyStateIndicator,\n error,\n FooterLoadingIndicator,\n forceUpdate,\n ListHeaderComponent,\n loadingChannels,\n LoadingErrorIndicator,\n LoadingIndicator,\n loadingNextPage,\n loadMoreThreshold,\n loadNextPage,\n refreshing,\n refreshList,\n reloadList,\n setFlatListRef,\n }}\n {...props}\n />\n );\n};\n\nChannelListMessenger.displayName = 'ChannelListMessenger{channelListMessenger}';\n"]}
@@ -33,6 +33,8 @@ var _ChannelsStateContext = require("../../contexts/channelsStateContext/Channel
33
33
 
34
34
  var _ChatContext = require("../../contexts/chatContext/ChatContext");
35
35
 
36
+ var _DebugContext = require("../../contexts/debugContext/DebugContext");
37
+
36
38
  var _OverlayContext = require("../../contexts/overlayContext/OverlayContext");
37
39
 
38
40
  var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
@@ -97,12 +99,22 @@ var ChatWithContext = function ChatWithContext(props) {
97
99
  isOnline = _useIsOnline.isOnline;
98
100
 
99
101
  var mutedUsers = (0, _useMutedUsers.useMutedUsers)(client);
102
+ var debugRef = (0, _DebugContext.useDebugContext)();
103
+ var isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;
100
104
  (0, _react.useEffect)(function () {
101
105
  if (client) {
102
106
  client.setUserAgent(_native.SDK + "-" + _reactNative.Platform.OS + "-" + _version.version);
103
107
  client.recoverStateOnReconnect = false;
104
108
  client.persistUserOnConnectionFailure = enableOfflineSupport;
105
109
  }
110
+
111
+ if (isDebugModeEnabled) {
112
+ if (debugRef.current.setEventType) debugRef.current.setEventType('send');
113
+ if (debugRef.current.setSendEventParams) debugRef.current.setSendEventParams({
114
+ action: 'Client',
115
+ data: client.user
116
+ });
117
+ }
106
118
  }, [client]);
107
119
 
108
120
  var setActiveChannel = function setActiveChannel(newChannel) {
@@ -143,7 +155,7 @@ var ChatWithContext = function ChatWithContext(props) {
143
155
  __self: _this,
144
156
  __source: {
145
157
  fileName: _jsxFileName,
146
- lineNumber: 216,
158
+ lineNumber: 229,
147
159
  columnNumber: 5
148
160
  }
149
161
  }, _react["default"].createElement(_TranslationContext.TranslationProvider, {
@@ -153,7 +165,7 @@ var ChatWithContext = function ChatWithContext(props) {
153
165
  __self: _this,
154
166
  __source: {
155
167
  fileName: _jsxFileName,
156
- lineNumber: 217,
168
+ lineNumber: 230,
157
169
  columnNumber: 7
158
170
  }
159
171
  }, _react["default"].createElement(_ThemeContext.ThemeProvider, {
@@ -161,14 +173,14 @@ var ChatWithContext = function ChatWithContext(props) {
161
173
  __self: _this,
162
174
  __source: {
163
175
  fileName: _jsxFileName,
164
- lineNumber: 220,
176
+ lineNumber: 233,
165
177
  columnNumber: 9
166
178
  }
167
179
  }, _react["default"].createElement(_ChannelsStateContext.ChannelsStateProvider, {
168
180
  __self: _this,
169
181
  __source: {
170
182
  fileName: _jsxFileName,
171
- lineNumber: 221,
183
+ lineNumber: 234,
172
184
  columnNumber: 11
173
185
  }
174
186
  }, children))));
@@ -184,7 +196,7 @@ var Chat = function Chat(props) {
184
196
  __self: _this,
185
197
  __source: {
186
198
  fileName: _jsxFileName,
187
- lineNumber: 256,
199
+ lineNumber: 269,
188
200
  columnNumber: 10
189
201
  }
190
202
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","enableOfflineSupport","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setActiveChannel","newChannel","appSettings","subscribeConnectionRecoveredCallback","chatContext","QuickSqliteClient","initializeDatabase","userLanguage","user","language","DEFAULT_USER_LANGUAGE","Chat"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useConnectionRecovered } from './hooks/useConnectionRecovered';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n }, [client]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const appSettings = useAppSettings(client, isOnline);\n const { subscribeConnectionRecoveredCallback } = useConnectionRecovered<StreamChatGenerics>({\n client,\n enableOfflineSupport,\n });\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n isOnline,\n mutedUsers,\n setActiveChannel,\n subscribeConnectionRecoveredCallback,\n });\n\n useEffect(() => {\n if (enableOfflineSupport) {\n QuickSqliteClient.initializeDatabase();\n }\n }, []);\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","enableOfflineSupport","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","debugRef","isDebugModeEnabled","__DEV__","current","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","appSettings","subscribeConnectionRecoveredCallback","chatContext","QuickSqliteClient","initializeDatabase","userLanguage","language","DEFAULT_USER_LANGUAGE","Chat"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useConnectionRecovered } from './hooks/useConnectionRecovered';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n};\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n const debugRef = useDebugContext();\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Client',\n data: client.user,\n });\n }\n }, [client]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const appSettings = useAppSettings(client, isOnline);\n const { subscribeConnectionRecoveredCallback } = useConnectionRecovered<StreamChatGenerics>({\n client,\n enableOfflineSupport,\n });\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n isOnline,\n mutedUsers,\n setActiveChannel,\n subscribeConnectionRecoveredCallback,\n });\n\n useEffect(() => {\n if (enableOfflineSupport) {\n QuickSqliteClient.initializeDatabase();\n }\n }, []);\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}