stream-chat-react-native-core 4.0.0-beta.6 → 4.0.0-beta.9
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/ChannelList/hooks/usePaginatedChannels.js +24 -25
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +8 -4
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +23 -28
- package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +8 -10
- package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +2 -4
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/init.js +13 -0
- package/lib/commonjs/init.js.map +1 -0
- package/lib/commonjs/utils/getResizedImageUrl.js +21 -10
- package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +24 -25
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +8 -4
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/MessageOverlay/MessageOverlay.js +23 -28
- package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
- package/lib/module/components/MessageOverlay/OverlayReactionList.js +8 -10
- package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +2 -4
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/init.js +13 -0
- package/lib/module/init.js.map +1 -0
- package/lib/module/utils/getResizedImageUrl.js +21 -10
- package/lib/module/utils/getResizedImageUrl.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +0 -1
- package/lib/typescript/init.d.ts +2 -0
- package/lib/typescript/utils/getResizedImageUrl.d.ts +2 -1
- package/package.json +2 -4
- package/src/components/Attachment/__tests__/buildGallery.test.js +4 -4
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +8 -7
- package/src/components/Chat/Chat.tsx +3 -0
- package/src/components/MessageOverlay/MessageOverlay.tsx +0 -2
- package/src/components/MessageOverlay/OverlayReactionList.tsx +0 -3
- package/src/contexts/messageInputContext/MessageInputContext.tsx +0 -2
- package/src/init.ts +5 -0
- package/src/utils/__tests__/getResizedImageUrl.test.js +57 -0
- package/src/utils/getResizedImageUrl.ts +33 -17
- package/src/version.json +1 -1
- package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js +0 -100
- package/lib/commonjs/styleguideComponents/ArgumentsRenderer.js.map +0 -1
- package/lib/commonjs/styleguideComponents/BottomSheet.js +0 -25
- package/lib/commonjs/styleguideComponents/BottomSheet.js.map +0 -1
- package/lib/commonjs/styleguideComponents/JsDoc.js +0 -87
- package/lib/commonjs/styleguideComponents/JsDoc.js.map +0 -1
- package/lib/commonjs/styleguideComponents/Markdown.js +0 -12
- package/lib/commonjs/styleguideComponents/Markdown.js.map +0 -1
- package/lib/commonjs/styleguideComponents/PathlineRenderer.js +0 -92
- package/lib/commonjs/styleguideComponents/PathlineRenderer.js.map +0 -1
- package/lib/commonjs/styleguideComponents/PropsRenderer.js +0 -267
- package/lib/commonjs/styleguideComponents/PropsRenderer.js.map +0 -1
- package/lib/commonjs/styleguideComponents/Reanimated.js +0 -2
- package/lib/commonjs/styleguideComponents/Reanimated.js.map +0 -1
- package/lib/commonjs/styleguideComponents/Wrapper.js +0 -29
- package/lib/commonjs/styleguideComponents/Wrapper.js.map +0 -1
- package/lib/commonjs/styleguideComponents/register-react-native-web.js +0 -44
- package/lib/commonjs/styleguideComponents/register-react-native-web.js.map +0 -1
- package/lib/commonjs/styleguideComponents/resolveAssetSource.js +0 -11
- package/lib/commonjs/styleguideComponents/resolveAssetSource.js.map +0 -1
- package/lib/module/styleguideComponents/ArgumentsRenderer.js +0 -100
- package/lib/module/styleguideComponents/ArgumentsRenderer.js.map +0 -1
- package/lib/module/styleguideComponents/BottomSheet.js +0 -25
- package/lib/module/styleguideComponents/BottomSheet.js.map +0 -1
- package/lib/module/styleguideComponents/JsDoc.js +0 -87
- package/lib/module/styleguideComponents/JsDoc.js.map +0 -1
- package/lib/module/styleguideComponents/Markdown.js +0 -12
- package/lib/module/styleguideComponents/Markdown.js.map +0 -1
- package/lib/module/styleguideComponents/PathlineRenderer.js +0 -92
- package/lib/module/styleguideComponents/PathlineRenderer.js.map +0 -1
- package/lib/module/styleguideComponents/PropsRenderer.js +0 -267
- package/lib/module/styleguideComponents/PropsRenderer.js.map +0 -1
- package/lib/module/styleguideComponents/Reanimated.js +0 -2
- package/lib/module/styleguideComponents/Reanimated.js.map +0 -1
- package/lib/module/styleguideComponents/Wrapper.js +0 -29
- package/lib/module/styleguideComponents/Wrapper.js.map +0 -1
- package/lib/module/styleguideComponents/register-react-native-web.js +0 -44
- package/lib/module/styleguideComponents/register-react-native-web.js.map +0 -1
- package/lib/module/styleguideComponents/resolveAssetSource.js +0 -11
- package/lib/module/styleguideComponents/resolveAssetSource.js.map +0 -1
- package/src/styleguideComponents/ArgumentsRenderer.tsx +0 -60
- package/src/styleguideComponents/BottomSheet.tsx +0 -3
- package/src/styleguideComponents/JsDoc.tsx +0 -45
- package/src/styleguideComponents/Markdown.tsx +0 -1
- package/src/styleguideComponents/PathlineRenderer.tsx +0 -45
- package/src/styleguideComponents/PropsRenderer.tsx +0 -141
- package/src/styleguideComponents/Reanimated.tsx +0 -0
- package/src/styleguideComponents/Wrapper.tsx +0 -7
- package/src/styleguideComponents/register-react-native-web.js +0 -13
- package/src/styleguideComponents/resolveAssetSource.js +0 -2
package/README.md
CHANGED
|
@@ -46,7 +46,7 @@ This repo includes 4 example apps. One made with Expo, one Native JavaScript cod
|
|
|
46
46
|
|
|
47
47
|
- [Expo example](./examples/ExpoMessaging)
|
|
48
48
|
- [Native example](./examples/NativeMessaging)
|
|
49
|
-
- [Typescript example](./examples/
|
|
49
|
+
- [Typescript example](./examples/TypeScriptMessaging)
|
|
50
50
|
- [Fully featured messaging application](./examples/SampleApp)
|
|
51
51
|
|
|
52
52
|
Besides, our team maintains a dedicated repository for fully-fledged sample applications and demos at [GetStream/react-native-samples](https://github.com/GetStream/react-native-samples). Please consider checking following sample applications:
|
|
@@ -87,7 +87,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
87
87
|
var queryType,
|
|
88
88
|
retryCount,
|
|
89
89
|
hasUpdatedData,
|
|
90
|
-
|
|
90
|
+
isQueryStale,
|
|
91
91
|
currentRequestId,
|
|
92
92
|
newOptions,
|
|
93
93
|
channelQueryResponse,
|
|
@@ -108,11 +108,9 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
108
108
|
return _context.abrupt("return");
|
|
109
109
|
|
|
110
110
|
case 4:
|
|
111
|
-
hasUpdatedData =
|
|
112
|
-
return [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort), activeRequestId.current !== currentRequestId].some(Boolean);
|
|
113
|
-
};
|
|
111
|
+
hasUpdatedData = queryType === 'loadChannels' || [JSON.stringify(filtersRef.current) !== JSON.stringify(filters), JSON.stringify(sortRef.current) !== JSON.stringify(sort)].some(Boolean);
|
|
114
112
|
|
|
115
|
-
|
|
113
|
+
isQueryStale = function isQueryStale() {
|
|
116
114
|
return !isMountedRef || activeRequestId.current !== currentRequestId;
|
|
117
115
|
};
|
|
118
116
|
|
|
@@ -130,6 +128,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
130
128
|
|
|
131
129
|
case 9:
|
|
132
130
|
filtersRef.current = filters;
|
|
131
|
+
sortRef.current = sort;
|
|
133
132
|
isQueryingRef.current = true;
|
|
134
133
|
setError(undefined);
|
|
135
134
|
activeRequestId.current++;
|
|
@@ -139,23 +138,23 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
139
138
|
limit: (_options$limit = options == null ? void 0 : options.limit) != null ? _options$limit : _utils.MAX_QUERY_CHANNELS_LIMIT,
|
|
140
139
|
offset: queryType === 'loadChannels' ? channels.length : 0
|
|
141
140
|
}, options);
|
|
142
|
-
_context.prev =
|
|
143
|
-
_context.next =
|
|
141
|
+
_context.prev = 17;
|
|
142
|
+
_context.next = 20;
|
|
144
143
|
return client.queryChannels(filters, sort, newOptions, {
|
|
145
144
|
skipInitialization: activeChannels.current
|
|
146
145
|
});
|
|
147
146
|
|
|
148
|
-
case
|
|
147
|
+
case 20:
|
|
149
148
|
channelQueryResponse = _context.sent;
|
|
150
149
|
|
|
151
|
-
if (!(
|
|
152
|
-
_context.next =
|
|
150
|
+
if (!(isQueryStale() || !isMountedRef.current)) {
|
|
151
|
+
_context.next = 23;
|
|
153
152
|
break;
|
|
154
153
|
}
|
|
155
154
|
|
|
156
155
|
return _context.abrupt("return");
|
|
157
156
|
|
|
158
|
-
case
|
|
157
|
+
case 23:
|
|
159
158
|
channelQueryResponse.forEach(function (channel) {
|
|
160
159
|
return channel.state.setIsUpToDate(true);
|
|
161
160
|
});
|
|
@@ -164,27 +163,27 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
164
163
|
setHasNextPage(channelQueryResponse.length >= newOptions.limit);
|
|
165
164
|
setError(undefined);
|
|
166
165
|
isQueryingRef.current = false;
|
|
167
|
-
_context.next =
|
|
166
|
+
_context.next = 44;
|
|
168
167
|
break;
|
|
169
168
|
|
|
170
|
-
case
|
|
171
|
-
_context.prev =
|
|
172
|
-
_context.t0 = _context["catch"](
|
|
169
|
+
case 31:
|
|
170
|
+
_context.prev = 31;
|
|
171
|
+
_context.t0 = _context["catch"](17);
|
|
173
172
|
isQueryingRef.current = false;
|
|
174
|
-
_context.next =
|
|
173
|
+
_context.next = 36;
|
|
175
174
|
return waitSeconds(2);
|
|
176
175
|
|
|
177
|
-
case
|
|
178
|
-
if (!
|
|
179
|
-
_context.next =
|
|
176
|
+
case 36:
|
|
177
|
+
if (!isQueryStale()) {
|
|
178
|
+
_context.next = 38;
|
|
180
179
|
break;
|
|
181
180
|
}
|
|
182
181
|
|
|
183
182
|
return _context.abrupt("return");
|
|
184
183
|
|
|
185
|
-
case
|
|
184
|
+
case 38:
|
|
186
185
|
if (!(retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current)) {
|
|
187
|
-
_context.next =
|
|
186
|
+
_context.next = 43;
|
|
188
187
|
break;
|
|
189
188
|
}
|
|
190
189
|
|
|
@@ -193,18 +192,18 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
193
192
|
setError(new Error("Maximum number of retries reached in queryChannels. Last error message is: " + _context.t0));
|
|
194
193
|
return _context.abrupt("return");
|
|
195
194
|
|
|
196
|
-
case
|
|
195
|
+
case 43:
|
|
197
196
|
return _context.abrupt("return", queryChannels(queryType, retryCount + 1));
|
|
198
197
|
|
|
199
|
-
case
|
|
198
|
+
case 44:
|
|
200
199
|
setActiveQueryType(null);
|
|
201
200
|
|
|
202
|
-
case
|
|
201
|
+
case 45:
|
|
203
202
|
case "end":
|
|
204
203
|
return _context.stop();
|
|
205
204
|
}
|
|
206
205
|
}
|
|
207
|
-
}, _callee, null, [[
|
|
206
|
+
}, _callee, null, [[17, 31]]);
|
|
208
207
|
}));
|
|
209
208
|
|
|
210
209
|
return function queryChannels() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","currentRequestId","some","Boolean","queryIsStale","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof filters | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData = () =>\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n activeRequestId.current !== currentRequestId,\n ].some(Boolean); // will return true if any element is truthy\n\n const queryIsStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (queryIsStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (queryIsStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["usePaginatedChannels.ts"],"names":["waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","filters","options","sort","client","channels","setChannels","activeChannels","error","setError","hasNextPage","setHasNextPage","lastRefresh","Date","now","isQueryingRef","activeQueryType","setActiveQueryType","isMountedRef","filtersRef","sortRef","activeRequestId","queryChannels","queryType","retryCount","current","hasUpdatedData","JSON","stringify","some","Boolean","isQueryStale","currentRequestId","undefined","newOptions","limit","MAX_QUERY_CHANNELS_LIMIT","offset","length","skipInitialization","channelQueryResponse","forEach","channel","state","setIsUpToDate","newChannels","console","warn","Error","loadNextPage","refreshList","reloadList","filterStr","sortStr","loadingChannels","loadingNextPage","refreshing"],"mappings":"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","sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport type { Channel, ChannelFilters, ChannelOptions, ChannelSort } from 'stream-chat';\n\nimport { useActiveChannelsRefContext } from '../../../contexts/activeChannelsRefContext/ActiveChannelsRefContext';\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { MAX_QUERY_CHANNELS_LIMIT } from '../utils';\n\nconst waitSeconds = (seconds: number) =>\n new Promise((resolve) => {\n setTimeout(resolve, seconds * ONE_SECOND_IN_MS);\n });\n\ntype Parameters<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n {\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n sort: ChannelSort<StreamChatGenerics>;\n };\n\nconst DEFAULT_OPTIONS = {\n message_limit: 10,\n};\n\nconst MAX_NUMBER_OF_RETRIES = 3;\nconst RETRY_INTERVAL_IN_MS = 5000;\n\ntype QueryType = 'reload' | 'refresh' | 'loadChannels';\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n filters = {},\n options = DEFAULT_OPTIONS,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const { client } = useChatContext<StreamChatGenerics>();\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[]>([]);\n const activeChannels = useActiveChannelsRefContext();\n\n const [error, setError] = useState<Error>();\n const [hasNextPage, setHasNextPage] = useState(true);\n const lastRefresh = useRef(Date.now());\n const isQueryingRef = useRef(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>();\n const isMountedRef = useIsMountedRef();\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n\n const queryChannels: QueryChannels = async (\n queryType: QueryType = 'loadChannels',\n retryCount = 0,\n ): Promise<void> => {\n if (!client || !isMountedRef.current) return;\n\n const hasUpdatedData =\n queryType === 'loadChannels' ||\n [\n JSON.stringify(filtersRef.current) !== JSON.stringify(filters),\n JSON.stringify(sortRef.current) !== JSON.stringify(sort),\n ].some(Boolean);\n\n const isQueryStale = () => !isMountedRef || activeRequestId.current !== currentRequestId;\n\n /**\n * We don't need to make another call to query channels if we don't\n * have new data for the query to include\n * */\n if (!hasUpdatedData) {\n if (activeQueryType === null) return;\n }\n\n filtersRef.current = filters;\n sortRef.current = sort;\n isQueryingRef.current = true;\n setError(undefined);\n activeRequestId.current++;\n const currentRequestId = activeRequestId.current;\n setActiveQueryType(queryType);\n\n const newOptions = {\n limit: options?.limit ?? MAX_QUERY_CHANNELS_LIMIT,\n offset: queryType === 'loadChannels' ? channels.length : 0,\n ...options,\n };\n\n try {\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n channelQueryResponse.forEach((channel) => channel.state.setIsUpToDate(true));\n\n const newChannels =\n queryType === 'loadChannels'\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse;\n\n setChannels(newChannels);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\n setError(undefined);\n isQueryingRef.current = false;\n } catch (err: unknown) {\n isQueryingRef.current = false;\n await waitSeconds(2);\n\n if (isQueryStale()) {\n return;\n }\n\n // querying.current check is needed in order to make sure the next query call doesnt flick an error\n // state and then succeed (reconnect case)\n if (retryCount === MAX_NUMBER_OF_RETRIES && !isQueryingRef.current) {\n setActiveQueryType(null);\n console.warn(err);\n setError(\n new Error(\n `Maximum number of retries reached in queryChannels. Last error message is: ${err}`,\n ),\n );\n return;\n }\n\n return queryChannels(queryType, retryCount + 1);\n }\n\n setActiveQueryType(null);\n };\n\n const loadNextPage = hasNextPage ? queryChannels : undefined;\n\n const refreshList = () => {\n const now = Date.now();\n // Only allow pull-to-refresh 5 seconds after last successful refresh.\n if (now - lastRefresh.current < RETRY_INTERVAL_IN_MS && error === undefined) {\n return;\n }\n\n lastRefresh.current = Date.now();\n return queryChannels('refresh');\n };\n\n const reloadList = () => queryChannels('reload');\n\n /**\n * Equality check using stringified filters/sort ensure that we don't make un-necessary queryChannels api calls\n * for the scenario:\n *\n * <ChannelList\n * filters={{\n * members: { $in: ['vishal'] }\n * }}\n * ...\n * />\n *\n * Here we have passed filters as inline object, which means on every re-render of\n * parent component, ChannelList will receive new object reference (even though value is same), which\n * in return will trigger useEffect. To avoid this, we can add a value check.\n */\n const filterStr = useMemo(() => JSON.stringify(filters), [filters]);\n const sortStr = useMemo(() => JSON.stringify(sort), [sort]);\n\n useEffect(() => {\n reloadList();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels: activeQueryType === 'reload',\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n setChannels,\n };\n};\n"]}
|
|
@@ -33,6 +33,8 @@ var _TranslationContext = require("../../contexts/translationContext/Translation
|
|
|
33
33
|
|
|
34
34
|
var _useStreami18n = require("../../hooks/useStreami18n");
|
|
35
35
|
|
|
36
|
+
var _init = _interopRequireDefault(require("../../init"));
|
|
37
|
+
|
|
36
38
|
var _native = require("../../native");
|
|
37
39
|
|
|
38
40
|
var _version = require("../../version.json");
|
|
@@ -44,6 +46,8 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
44
46
|
|
|
45
47
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
46
48
|
|
|
49
|
+
(0, _init["default"])();
|
|
50
|
+
|
|
47
51
|
var ChatWithContext = function ChatWithContext(props) {
|
|
48
52
|
var children = props.children,
|
|
49
53
|
client = props.client,
|
|
@@ -104,7 +108,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
104
108
|
__self: _this,
|
|
105
109
|
__source: {
|
|
106
110
|
fileName: _jsxFileName,
|
|
107
|
-
lineNumber:
|
|
111
|
+
lineNumber: 176,
|
|
108
112
|
columnNumber: 5
|
|
109
113
|
}
|
|
110
114
|
}, _react["default"].createElement(_TranslationContext.TranslationProvider, {
|
|
@@ -112,7 +116,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
112
116
|
__self: _this,
|
|
113
117
|
__source: {
|
|
114
118
|
fileName: _jsxFileName,
|
|
115
|
-
lineNumber:
|
|
119
|
+
lineNumber: 177,
|
|
116
120
|
columnNumber: 7
|
|
117
121
|
}
|
|
118
122
|
}, _react["default"].createElement(_ThemeContext.ThemeProvider, {
|
|
@@ -120,7 +124,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
120
124
|
__self: _this,
|
|
121
125
|
__source: {
|
|
122
126
|
fileName: _jsxFileName,
|
|
123
|
-
lineNumber:
|
|
127
|
+
lineNumber: 178,
|
|
124
128
|
columnNumber: 9
|
|
125
129
|
}
|
|
126
130
|
}, children)));
|
|
@@ -136,7 +140,7 @@ var Chat = function Chat(props) {
|
|
|
136
140
|
__self: _this,
|
|
137
141
|
__source: {
|
|
138
142
|
fileName: _jsxFileName,
|
|
139
|
-
lineNumber:
|
|
143
|
+
lineNumber: 212,
|
|
140
144
|
columnNumber: 10
|
|
141
145
|
}
|
|
142
146
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","chatContext","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAIA;;AAEA;;AAGA;;;;;;;;;AA+FA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MAAQC,QAAR,GAAsFD,KAAtF,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAsFF,KAAtF,CAAkBE,MAAlB;AAAA,8BAAsFF,KAAtF,CAA0BG,2BAA1B;AAAA,MAA0BA,2BAA1B,sCAAwD,IAAxD;AAAA,MAA8DC,YAA9D,GAAsFJ,KAAtF,CAA8DI,YAA9D;AAAA,MAA4EC,KAA5E,GAAsFL,KAAtF,CAA4EK,KAA5E;;AAEA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAAkC;AACtEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KADmE;AAEtEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFqD,GAAlC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEV,IAAAA,YAAY,EAAZA,YAAF;AAAgBS,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCX,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQY,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AAQA,MAAMC,UAAU,GAAG,kCAAkCf,MAAlC,CAAnB;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,CAACgB,YAAX,EAAyB;AACvBhB,MAAAA,MAAM,CAACgB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEApB,MAAAA,MAAM,CAACqB,uBAAP,GAAiC,KAAjC;AACD;AACF,GAND,EAMG,EANH;;AAQA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8ClB,UAAU,CAACkB,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,gDAAqB;AACvCpB,IAAAA,OAAO,EAAPA,OADuC;AAEvCJ,IAAAA,MAAM,EAANA,MAFuC;AAGvCa,IAAAA,oBAAoB,EAApBA,oBAHuC;AAIvCC,IAAAA,QAAQ,EAARA,QAJuC;AAKvCC,IAAAA,UAAU,EAAVA,UALuC;AAMvCO,IAAAA,gBAAgB,EAAhBA;AANuC,GAArB,CAApB;AASA,MAAIV,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEY,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAAqB,IAAA,KAAK,EAAEd,WAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAEP,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA8BJ,QAA9B,CADF,CADF,CADF;AAOD,CA3DD;;AAkFO,IAAM0B,IAAI,GAAG,SAAPA,IAAO,CAGlB3B,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQK,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCL,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","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 { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\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 TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport { SDK } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\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 * 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/master/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 { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\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 */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\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 }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const chatContext = useCreateChatContext({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</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","i18nInstance","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","setActiveChannel","newChannel","chatContext","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AAIA;;AACA;;AAEA;;AAGA;;;;;;;;;AAEA;;AA+FA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AACH,MAAQC,QAAR,GAAsFD,KAAtF,CAAQC,QAAR;AAAA,MAAkBC,MAAlB,GAAsFF,KAAtF,CAAkBE,MAAlB;AAAA,8BAAsFF,KAAtF,CAA0BG,2BAA1B;AAAA,MAA0BA,2BAA1B,sCAAwD,IAAxD;AAAA,MAA8DC,YAA9D,GAAsFJ,KAAtF,CAA8DI,YAA9D;AAAA,MAA4EC,KAA5E,GAAsFL,KAAtF,CAA4EK,KAA5E;;AAEA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAAkC;AACtEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KADmE;AAEtEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFqD,GAAlC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEV,IAAAA,YAAY,EAAZA,YAAF;AAAgBS,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCX,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQY,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AAQA,MAAMC,UAAU,GAAG,kCAAkCf,MAAlC,CAAnB;AAEA,wBAAU,YAAM;AACd,QAAIA,MAAM,CAACgB,YAAX,EAAyB;AACvBhB,MAAAA,MAAM,CAACgB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEApB,MAAAA,MAAM,CAACqB,uBAAP,GAAiC,KAAjC;AACD;AACF,GAND,EAMG,EANH;;AAQA,MAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8ClB,UAAU,CAACkB,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,gDAAqB;AACvCpB,IAAAA,OAAO,EAAPA,OADuC;AAEvCJ,IAAAA,MAAM,EAANA,MAFuC;AAGvCa,IAAAA,oBAAoB,EAApBA,oBAHuC;AAIvCC,IAAAA,QAAQ,EAARA,QAJuC;AAKvCC,IAAAA,UAAU,EAAVA,UALuC;AAMvCO,IAAAA,gBAAgB,EAAhBA;AANuC,GAArB,CAApB;AASA,MAAIV,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEY,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AAAqB,IAAA,KAAK,EAAEd,WAA5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAEP,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA8BJ,QAA9B,CADF,CADF,CADF;AAOD,CA3DD;;AAkFO,IAAM0B,IAAI,GAAG,SAAPA,IAAO,CAGlB3B,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQK,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCL,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","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 { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\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 TranslationContextValue,\n TranslationProvider,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\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 * 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/master/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 { children, client, closeConnectionOnBackground = true, i18nInstance, style } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslationContextValue>({\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 */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n useEffect(() => {\n if (client.setUserAgent) {\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 }\n }, []);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const chatContext = useCreateChatContext({\n channel,\n client,\n connectionRecovering,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider value={translators}>\n <ThemeProvider style={style}>{children}</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"]}
|
|
@@ -145,10 +145,6 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
145
145
|
myMessageThemeString = _useState2[0],
|
|
146
146
|
setMyMessageThemeString = _useState2[1];
|
|
147
147
|
|
|
148
|
-
var _useState3 = (0, _react.useState)(0),
|
|
149
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
150
|
-
setReactionListHeight = _useState4[1];
|
|
151
|
-
|
|
152
148
|
(0, _react.useEffect)(function () {
|
|
153
149
|
if (myMessageTheme) {
|
|
154
150
|
setMyMessageThemeString(JSON.stringify(myMessageTheme));
|
|
@@ -291,7 +287,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
291
287
|
__self: _this,
|
|
292
288
|
__source: {
|
|
293
289
|
fileName: _jsxFileName,
|
|
294
|
-
lineNumber:
|
|
290
|
+
lineNumber: 323,
|
|
295
291
|
columnNumber: 5
|
|
296
292
|
}
|
|
297
293
|
}, _react["default"].createElement(_MessageContext.MessageProvider, {
|
|
@@ -299,7 +295,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
299
295
|
__self: _this,
|
|
300
296
|
__source: {
|
|
301
297
|
fileName: _jsxFileName,
|
|
302
|
-
lineNumber:
|
|
298
|
+
lineNumber: 324,
|
|
303
299
|
columnNumber: 7
|
|
304
300
|
}
|
|
305
301
|
}, _react["default"].createElement(_ThemeContext.ThemeProvider, {
|
|
@@ -307,7 +303,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
307
303
|
__self: _this,
|
|
308
304
|
__source: {
|
|
309
305
|
fileName: _jsxFileName,
|
|
310
|
-
lineNumber:
|
|
306
|
+
lineNumber: 325,
|
|
311
307
|
columnNumber: 9
|
|
312
308
|
}
|
|
313
309
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -316,7 +312,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
316
312
|
__self: _this,
|
|
317
313
|
__source: {
|
|
318
314
|
fileName: _jsxFileName,
|
|
319
|
-
lineNumber:
|
|
315
|
+
lineNumber: 326,
|
|
320
316
|
columnNumber: 11
|
|
321
317
|
}
|
|
322
318
|
}, _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
|
|
@@ -327,7 +323,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
327
323
|
__self: _this,
|
|
328
324
|
__source: {
|
|
329
325
|
fileName: _jsxFileName,
|
|
330
|
-
lineNumber:
|
|
326
|
+
lineNumber: 330,
|
|
331
327
|
columnNumber: 13
|
|
332
328
|
}
|
|
333
329
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -335,7 +331,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
335
331
|
__self: _this,
|
|
336
332
|
__source: {
|
|
337
333
|
fileName: _jsxFileName,
|
|
338
|
-
lineNumber:
|
|
334
|
+
lineNumber: 336,
|
|
339
335
|
columnNumber: 15
|
|
340
336
|
}
|
|
341
337
|
}, _react["default"].createElement(_reactNative.SafeAreaView, {
|
|
@@ -343,7 +339,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
343
339
|
__self: _this,
|
|
344
340
|
__source: {
|
|
345
341
|
fileName: _jsxFileName,
|
|
346
|
-
lineNumber:
|
|
342
|
+
lineNumber: 337,
|
|
347
343
|
columnNumber: 17
|
|
348
344
|
}
|
|
349
345
|
}, _react["default"].createElement(_reactNativeGestureHandler.TapGestureHandler, {
|
|
@@ -358,7 +354,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
358
354
|
__self: _this,
|
|
359
355
|
__source: {
|
|
360
356
|
fileName: _jsxFileName,
|
|
361
|
-
lineNumber:
|
|
357
|
+
lineNumber: 338,
|
|
362
358
|
columnNumber: 19
|
|
363
359
|
}
|
|
364
360
|
}, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -366,7 +362,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
366
362
|
__self: _this,
|
|
367
363
|
__source: {
|
|
368
364
|
fileName: _jsxFileName,
|
|
369
|
-
lineNumber:
|
|
365
|
+
lineNumber: 346,
|
|
370
366
|
columnNumber: 21
|
|
371
367
|
}
|
|
372
368
|
}, message && _react["default"].createElement(_reactNative.View, {
|
|
@@ -376,7 +372,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
376
372
|
__self: _this,
|
|
377
373
|
__source: {
|
|
378
374
|
fileName: _jsxFileName,
|
|
379
|
-
lineNumber:
|
|
375
|
+
lineNumber: 348,
|
|
380
376
|
columnNumber: 25
|
|
381
377
|
}
|
|
382
378
|
}, handleReaction && ownCapabilities != null && ownCapabilities.sendReaction ? _react["default"].createElement(OverlayReactionList, {
|
|
@@ -384,12 +380,11 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
384
380
|
ownReactionTypes: (message == null ? void 0 : (_message$own_reaction = message.own_reactions) == null ? void 0 : _message$own_reaction.map(function (reaction) {
|
|
385
381
|
return reaction.type;
|
|
386
382
|
})) || [],
|
|
387
|
-
setReactionListHeight: setReactionListHeight,
|
|
388
383
|
showScreen: showScreen,
|
|
389
384
|
__self: _this,
|
|
390
385
|
__source: {
|
|
391
386
|
fileName: _jsxFileName,
|
|
392
|
-
lineNumber:
|
|
387
|
+
lineNumber: 357,
|
|
393
388
|
columnNumber: 29
|
|
394
389
|
}
|
|
395
390
|
}) : null, _react["default"].createElement(_reactNativeReanimated["default"].View, {
|
|
@@ -410,7 +405,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
410
405
|
__self: _this,
|
|
411
406
|
__source: {
|
|
412
407
|
fileName: _jsxFileName,
|
|
413
|
-
lineNumber:
|
|
408
|
+
lineNumber: 365,
|
|
414
409
|
columnNumber: 27
|
|
415
410
|
}
|
|
416
411
|
}, alignment === 'left' && MessageAvatar && _react["default"].createElement(MessageAvatar, {
|
|
@@ -420,7 +415,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
420
415
|
__self: _this,
|
|
421
416
|
__source: {
|
|
422
417
|
fileName: _jsxFileName,
|
|
423
|
-
lineNumber:
|
|
418
|
+
lineNumber: 381,
|
|
424
419
|
columnNumber: 31
|
|
425
420
|
}
|
|
426
421
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -435,7 +430,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
435
430
|
__self: _this,
|
|
436
431
|
__source: {
|
|
437
432
|
fileName: _jsxFileName,
|
|
438
|
-
lineNumber:
|
|
433
|
+
lineNumber: 383,
|
|
439
434
|
columnNumber: 29
|
|
440
435
|
}
|
|
441
436
|
}, messagesContext == null ? void 0 : (_messagesContext$mess = messagesContext.messageContentOrder) == null ? void 0 : _messagesContext$mess.map(function (messageContentType, messageContentOrderIndex) {
|
|
@@ -447,7 +442,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
447
442
|
__self: _this,
|
|
448
443
|
__source: {
|
|
449
444
|
fileName: _jsxFileName,
|
|
450
|
-
lineNumber:
|
|
445
|
+
lineNumber: 426,
|
|
451
446
|
columnNumber: 43
|
|
452
447
|
}
|
|
453
448
|
}, _react["default"].createElement(Reply, {
|
|
@@ -460,7 +455,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
460
455
|
__self: _this,
|
|
461
456
|
__source: {
|
|
462
457
|
fileName: _jsxFileName,
|
|
463
|
-
lineNumber:
|
|
458
|
+
lineNumber: 430,
|
|
464
459
|
columnNumber: 45
|
|
465
460
|
}
|
|
466
461
|
}));
|
|
@@ -473,7 +468,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
473
468
|
__self: _this,
|
|
474
469
|
__source: {
|
|
475
470
|
fileName: _jsxFileName,
|
|
476
|
-
lineNumber:
|
|
471
|
+
lineNumber: 447,
|
|
477
472
|
columnNumber: 45
|
|
478
473
|
}
|
|
479
474
|
});
|
|
@@ -487,7 +482,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
487
482
|
__self: _this,
|
|
488
483
|
__source: {
|
|
489
484
|
fileName: _jsxFileName,
|
|
490
|
-
lineNumber:
|
|
485
|
+
lineNumber: 456,
|
|
491
486
|
columnNumber: 43
|
|
492
487
|
}
|
|
493
488
|
});
|
|
@@ -504,7 +499,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
504
499
|
__self: _this,
|
|
505
500
|
__source: {
|
|
506
501
|
fileName: _jsxFileName,
|
|
507
|
-
lineNumber:
|
|
502
|
+
lineNumber: 466,
|
|
508
503
|
columnNumber: 43
|
|
509
504
|
}
|
|
510
505
|
});
|
|
@@ -520,7 +515,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
520
515
|
__self: _this,
|
|
521
516
|
__source: {
|
|
522
517
|
fileName: _jsxFileName,
|
|
523
|
-
lineNumber:
|
|
518
|
+
lineNumber: 481,
|
|
524
519
|
columnNumber: 41
|
|
525
520
|
}
|
|
526
521
|
});
|
|
@@ -533,7 +528,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
533
528
|
__self: _this,
|
|
534
529
|
__source: {
|
|
535
530
|
fileName: _jsxFileName,
|
|
536
|
-
lineNumber:
|
|
531
|
+
lineNumber: 495,
|
|
537
532
|
columnNumber: 29
|
|
538
533
|
}
|
|
539
534
|
})), !!messageReactionTitle && message.latest_reactions && message.latest_reactions.length > 0 ? _react["default"].createElement(OverlayReactions, {
|
|
@@ -556,7 +551,7 @@ var MessageOverlayWithContext = function MessageOverlayWithContext(props) {
|
|
|
556
551
|
__self: _this,
|
|
557
552
|
__source: {
|
|
558
553
|
fileName: _jsxFileName,
|
|
559
|
-
lineNumber:
|
|
554
|
+
lineNumber: 505,
|
|
560
555
|
columnNumber: 29
|
|
561
556
|
}
|
|
562
557
|
}) : null))))))))));
|
|
@@ -618,7 +613,7 @@ var MessageOverlay = function MessageOverlay(props) {
|
|
|
618
613
|
__self: _this,
|
|
619
614
|
__source: {
|
|
620
615
|
fileName: _jsxFileName,
|
|
621
|
-
lineNumber:
|
|
616
|
+
lineNumber: 618,
|
|
622
617
|
columnNumber: 5
|
|
623
618
|
}
|
|
624
619
|
}));
|