stream-chat-react-native-core 5.12.1-beta.2 → 5.13.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
- package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +1 -4
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +1 -4
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/hooks/useStreami18n.js +17 -8
- package/lib/commonjs/hooks/useStreami18n.js.map +1 -1
- package/lib/commonjs/utils/Streami18n.js +78 -27
- package/lib/commonjs/utils/Streami18n.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +1 -1
- package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +1 -4
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +1 -4
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/hooks/useStreami18n.js +17 -8
- package/lib/module/hooks/useStreami18n.js.map +1 -1
- package/lib/module/utils/Streami18n.js +78 -27
- package/lib/module/utils/Streami18n.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/hooks/useStreami18n.d.ts +1 -4
- package/lib/typescript/utils/Streami18n.d.ts +13 -6
- package/package.json +1 -1
- package/src/__tests__/optimistic-update.test.js +2 -1
- package/src/components/ChannelList/__tests__/ChannelList.test.js +4 -2
- package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
- package/src/components/Chat/Chat.tsx +1 -1
- package/src/contexts/overlayContext/OverlayProvider.tsx +1 -1
- package/src/hooks/useStreami18n.ts +21 -12
- package/src/utils/Streami18n.ts +66 -18
- package/src/version.json +1 -1
|
@@ -123,7 +123,7 @@ var usePaginatedChannels = function usePaginatedChannels(_ref) {
|
|
|
123
123
|
}
|
|
124
124
|
_context.next = 22;
|
|
125
125
|
return client.queryChannels(filters, sort, newOptions, {
|
|
126
|
-
skipInitialization:
|
|
126
|
+
skipInitialization: activeChannels.current
|
|
127
127
|
});
|
|
128
128
|
case 22:
|
|
129
129
|
channelQueryResponse = _context.sent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_ActiveChannelsRefContext","_ChatContext","_useIsMountedRef","_getChannelsForFilterSort","_date","_DBSyncManager","_utils","waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","_ref","enableOfflineSupport","_ref$filters","filters","_ref$options","options","setForceUpdate","_ref$sort","sort","_useState","useState","_useState2","_slicedToArray2","channels","setChannels","_useState3","undefined","_useState4","error","setError","_useState5","_useState6","staticChannelsActive","setStaticChannelsActive","_useState7","_useState8","activeQueryType","setActiveQueryType","_useState9","_useState10","hasNextPage","setHasNextPage","activeChannels","useActiveChannelsRefContext","isMountedRef","useIsMountedRef","_useChatContext","useChatContext","client","filtersRef","useRef","sortRef","activeRequestId","isQueryingRef","lastRefresh","Date","now","queryChannels","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","_options$limit","queryType","retryCount","hasUpdatedData","isQueryStale","currentRequestId","newOptions","activeChannelIds","cid","channelQueryResponse","newChannels","_args","arguments","wrap","_callee$","_context","prev","next","length","current","abrupt","JSON","stringify","some","Boolean","_extends2","limit","MAX_QUERY_CHANNELS_LIMIT","offset","id","push","skipInitialization","sent","concat","_toConsumableArray2","map","c","existingChannel","t0","console","warn","Error","stop","apply","refreshList","_ref3","_callee2","_callee2$","_context2","reloadList","filterStr","useMemo","sortStr","useEffect","loadOfflineChannels","_client$user","user","channelsFromDB","getChannelsForFilterSort","currentUserId","hydrateActiveChannels","offlineMode","e","listener","DBSyncManager","onSyncStatusChange","syncStatus","dbSyncStatus","getSyncStatus","on","_ref4","_callee3","event","_callee3$","_context3","online","u","_x","_listener","unsubscribe","loadingChannels","loadingNextPage","loadNextPage","refreshing","exports"],"sources":["usePaginatedChannels.ts"],"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';\n\nimport { useChatContext } from '../../../contexts/chatContext/ChatContext';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\n\nimport { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { DBSyncManager } from '../../../utils/DBSyncManager';\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 enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n setForceUpdate: React.Dispatch<React.SetStateAction<number>>;\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 = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n setForceUpdate,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const [hasNextPage, setHasNextPage] = useState<boolean>(false);\n\n const activeChannels = useActiveChannelsRefContext();\n const isMountedRef = useIsMountedRef();\n const { client } = useChatContext<StreamChatGenerics>();\n\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n const isQueryingRef = useRef(false);\n const lastRefresh = useRef(Date.now());\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 queryType === 'refresh' ||\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:\n queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0,\n ...options,\n };\n\n try {\n const activeChannelIds: string[] = [];\n for (const cid in client.activeChannels) {\n if (client.activeChannels[cid].id) {\n // @ts-ignore\n activeChannelIds.push(client.activeChannels[cid].id);\n }\n }\n\n // TODO: Think about the implications of this.\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: enableOfflineSupport ? activeChannelIds : activeChannels.current,\n });\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive && channels\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse.map((c) => {\n const existingChannel = client.activeChannels[c.cid];\n if (existingChannel) {\n return existingChannel;\n }\n\n return c;\n });\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\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\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 refreshList = async () => {\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 await 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 const loadOfflineChannels = () => {\n if (!client?.user?.id) return;\n\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n setStaticChannelsActive(true);\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n\n setActiveQueryType(null);\n };\n\n let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;\n if (enableOfflineSupport) {\n // Any time DB is synced, we need to update the UI with local DB channels first,\n // and then call queryChannels to ensure any new channels are added to UI.\n listener = DBSyncManager.onSyncStatusChange((syncStatus) => {\n if (syncStatus) {\n loadOfflineChannels();\n reloadList();\n }\n });\n // On start, load the channels from local db.\n loadOfflineChannels();\n\n // If db is already synced (sync api and pending api calls), then\n // right away call queryChannels.\n const dbSyncStatus = DBSyncManager.getSyncStatus();\n if (dbSyncStatus) {\n reloadList();\n }\n } else {\n listener = client.on('connection.changed', async (event) => {\n if (event.online) {\n await refreshList();\n setForceUpdate((u) => u + 1);\n }\n });\n\n reloadList();\n }\n\n return () => listener?.unsubscribe?.();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : (activeQueryType === 'reload' || activeQueryType === null) && channels === null,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage: queryChannels,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n // Although channels can be null, there is no practical case where channels will be null\n // when setChannels is used. setChannels is only recommended to be used for overriding\n // event handler. Thus instead of adding if check for channels === null, its better to\n // simply reassign types here.\n setChannels,\n staticChannelsActive,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","require","_ActiveChannelsRefContext","_ChatContext","_useIsMountedRef","_getChannelsForFilterSort","_date","_DBSyncManager","_utils","waitSeconds","seconds","Promise","resolve","setTimeout","ONE_SECOND_IN_MS","DEFAULT_OPTIONS","message_limit","MAX_NUMBER_OF_RETRIES","RETRY_INTERVAL_IN_MS","usePaginatedChannels","_ref","enableOfflineSupport","_ref$filters","filters","_ref$options","options","setForceUpdate","_ref$sort","sort","_useState","useState","_useState2","_slicedToArray2","channels","setChannels","_useState3","undefined","_useState4","error","setError","_useState5","_useState6","staticChannelsActive","setStaticChannelsActive","_useState7","_useState8","activeQueryType","setActiveQueryType","_useState9","_useState10","hasNextPage","setHasNextPage","activeChannels","useActiveChannelsRefContext","isMountedRef","useIsMountedRef","_useChatContext","useChatContext","client","filtersRef","useRef","sortRef","activeRequestId","isQueryingRef","lastRefresh","Date","now","queryChannels","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","_options$limit","queryType","retryCount","hasUpdatedData","isQueryStale","currentRequestId","newOptions","activeChannelIds","cid","channelQueryResponse","newChannels","_args","arguments","wrap","_callee$","_context","prev","next","length","current","abrupt","JSON","stringify","some","Boolean","_extends2","limit","MAX_QUERY_CHANNELS_LIMIT","offset","id","push","skipInitialization","sent","concat","_toConsumableArray2","map","c","existingChannel","t0","console","warn","Error","stop","apply","refreshList","_ref3","_callee2","_callee2$","_context2","reloadList","filterStr","useMemo","sortStr","useEffect","loadOfflineChannels","_client$user","user","channelsFromDB","getChannelsForFilterSort","currentUserId","hydrateActiveChannels","offlineMode","e","listener","DBSyncManager","onSyncStatusChange","syncStatus","dbSyncStatus","getSyncStatus","on","_ref4","_callee3","event","_callee3$","_context3","online","u","_x","_listener","unsubscribe","loadingChannels","loadingNextPage","loadNextPage","refreshing","exports"],"sources":["usePaginatedChannels.ts"],"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 { getChannelsForFilterSort } from '../../../store/apis/getChannelsForFilterSort';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { ONE_SECOND_IN_MS } from '../../../utils/date';\nimport { DBSyncManager } from '../../../utils/DBSyncManager';\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 enableOfflineSupport: boolean;\n filters: ChannelFilters<StreamChatGenerics>;\n options: ChannelOptions;\n setForceUpdate: React.Dispatch<React.SetStateAction<number>>;\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 = 'queryLocalDB' | 'reload' | 'refresh' | 'loadChannels';\n\nexport type QueryChannels = (queryType?: QueryType, retryCount?: number) => Promise<void>;\n\nexport const usePaginatedChannels = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n enableOfflineSupport,\n filters = {},\n options = DEFAULT_OPTIONS,\n setForceUpdate,\n sort = {},\n}: Parameters<StreamChatGenerics>) => {\n const [channels, setChannels] = useState<Channel<StreamChatGenerics>[] | null>(null);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [staticChannelsActive, setStaticChannelsActive] = useState<boolean>(false);\n const [activeQueryType, setActiveQueryType] = useState<QueryType | null>('queryLocalDB');\n const [hasNextPage, setHasNextPage] = useState<boolean>(false);\n const activeChannels = useActiveChannelsRefContext();\n const isMountedRef = useIsMountedRef();\n const { client } = useChatContext<StreamChatGenerics>();\n\n const filtersRef = useRef<typeof filters | null>(null);\n const sortRef = useRef<typeof sort | null>(null);\n const activeRequestId = useRef<number>(0);\n const isQueryingRef = useRef(false);\n const lastRefresh = useRef(Date.now());\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 queryType === 'refresh' ||\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:\n queryType === 'loadChannels' && !staticChannelsActive && channels ? channels.length : 0,\n ...options,\n };\n\n try {\n const activeChannelIds: string[] = [];\n for (const cid in client.activeChannels) {\n if (client.activeChannels[cid].id) {\n // @ts-ignore\n activeChannelIds.push(client.activeChannels[cid].id);\n }\n }\n\n /**\n * We skipInitialization here for handling race condition between ChannelList, Channel (and Thread)\n * when they all (may) update the channel state at the same time (when connection state recovers)\n * TODO: if we move the channel state to a single context and share it between ChannelList, Channel and Thread we can remove this\n */\n const channelQueryResponse = await client.queryChannels(filters, sort, newOptions, {\n skipInitialization: activeChannels.current,\n });\n if (isQueryStale() || !isMountedRef.current) {\n return;\n }\n\n const newChannels =\n queryType === 'loadChannels' && !staticChannelsActive && channels\n ? [...channels, ...channelQueryResponse]\n : channelQueryResponse.map((c) => {\n const existingChannel = client.activeChannels[c.cid];\n if (existingChannel) {\n return existingChannel;\n }\n\n return c;\n });\n\n setChannels(newChannels);\n setStaticChannelsActive(false);\n setHasNextPage(channelQueryResponse.length >= newOptions.limit);\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\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 refreshList = async () => {\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 await 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 const loadOfflineChannels = () => {\n if (!client?.user?.id) return;\n\n try {\n const channelsFromDB = getChannelsForFilterSort({\n currentUserId: client.user.id,\n filters,\n sort,\n });\n\n if (channelsFromDB) {\n setChannels(\n client.hydrateActiveChannels(channelsFromDB, {\n offlineMode: true,\n }),\n );\n setStaticChannelsActive(true);\n }\n } catch (e) {\n console.warn('Failed to get channels from database: ', e);\n }\n\n setActiveQueryType(null);\n };\n\n let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;\n if (enableOfflineSupport) {\n // Any time DB is synced, we need to update the UI with local DB channels first,\n // and then call queryChannels to ensure any new channels are added to UI.\n listener = DBSyncManager.onSyncStatusChange((syncStatus) => {\n if (syncStatus) {\n loadOfflineChannels();\n reloadList();\n }\n });\n // On start, load the channels from local db.\n loadOfflineChannels();\n\n // If db is already synced (sync api and pending api calls), then\n // right away call queryChannels.\n const dbSyncStatus = DBSyncManager.getSyncStatus();\n if (dbSyncStatus) {\n reloadList();\n }\n } else {\n listener = client.on('connection.changed', async (event) => {\n if (event.online) {\n await refreshList();\n setForceUpdate((u) => u + 1);\n }\n });\n\n reloadList();\n }\n\n return () => listener?.unsubscribe?.();\n }, [filterStr, sortStr]);\n\n return {\n channels,\n error,\n hasNextPage,\n loadingChannels:\n activeQueryType === 'queryLocalDB'\n ? true\n : (activeQueryType === 'reload' || activeQueryType === null) && channels === null,\n loadingNextPage: activeQueryType === 'loadChannels',\n loadNextPage: queryChannels,\n refreshing: activeQueryType === 'refresh',\n refreshList,\n reloadList,\n // Although channels can be null, there is no practical case where channels will be null\n // when setChannels is used. setChannels is only recommended to be used for overriding\n // event handler. Thus instead of adding if check for channels === null, its better to\n // simply reassign types here.\n setChannels,\n staticChannelsActive,\n };\n};\n"],"mappings":"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"}
|
|
@@ -58,10 +58,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
58
58
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
59
59
|
translators = _useState4[0],
|
|
60
60
|
setTranslators = _useState4[1];
|
|
61
|
-
var loadingTranslators = (0, _useStreami18n.useStreami18n)(
|
|
62
|
-
i18nInstance: i18nInstance,
|
|
63
|
-
setTranslators: setTranslators
|
|
64
|
-
});
|
|
61
|
+
var loadingTranslators = (0, _useStreami18n.useStreami18n)(setTranslators, i18nInstance);
|
|
65
62
|
var _useIsOnline = (0, _useIsOnline2.useIsOnline)(client, closeConnectionOnBackground),
|
|
66
63
|
connectionRecovering = _useIsOnline.connectionRecovering,
|
|
67
64
|
isOnline = _useIsOnline.isOnline;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_dayjs","_interopRequireDefault","_useAppSettings","_useCreateChatContext","_useIsOnline2","_useMutedUsers","_useSyncDatabase","_ChannelsStateContext","_ChatContext","_DebugContext","_OverlayContext","_ThemeContext","_TranslationContext","_useStreami18n","_init","_native","_QuickSqliteClient","_DBSyncManager","_version","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","init","ChatWithContext","props","_client$user2","_client$user3","children","client","_props$closeConnectio","closeConnectionOnBackground","_props$enableOfflineS","enableOfflineSupport","i18nInstance","_props$ImageComponent","ImageComponent","Image","style","_useState","useState","_useState2","_slicedToArray2","channel","setChannel","_useState3","t","tDateTimeParser","input","Dayjs","_useState4","translators","setTranslators","loadingTranslators","useStreami18n","_useIsOnline","useIsOnline","connectionRecovering","isOnline","_useState5","_useState6","initialisedDatabase","setInitialisedDatabase","mutedUsers","useMutedUsers","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","current","useEffect","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","_client$user","id","QuickSqliteClient","initializeDatabase","DBSyncManager","appSettings","useAppSettings","chatContext","useCreateChatContext","useSyncDatabase","createElement","ChatProvider","value","__self","__source","fileName","lineNumber","columnNumber","TranslationProvider","_extends2","userLanguage","language","DEFAULT_USER_LANGUAGE","ThemeProvider","ChannelsStateProvider","Chat","_useOverlayContext","useOverlayContext","exports"],"sources":["Chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\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 { DBSyncManager } from '../../utils/DBSyncManager';\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 Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\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 ImageComponent = Image,\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 const [initialisedDatabase, setInitialisedDatabase] = useState(false);\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, enableOfflineSupport]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n setInitialisedDatabase(false);\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n setInitialisedDatabase(true);\n }\n }, [client?.user?.id, enableOfflineSupport]);\n\n const appSettings = useAppSettings(client, isOnline, enableOfflineSupport, initialisedDatabase);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\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"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_dayjs","_interopRequireDefault","_useAppSettings","_useCreateChatContext","_useIsOnline2","_useMutedUsers","_useSyncDatabase","_ChannelsStateContext","_ChatContext","_DebugContext","_OverlayContext","_ThemeContext","_TranslationContext","_useStreami18n","_init","_native","_QuickSqliteClient","_DBSyncManager","_version","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","init","ChatWithContext","props","_client$user2","_client$user3","children","client","_props$closeConnectio","closeConnectionOnBackground","_props$enableOfflineS","enableOfflineSupport","i18nInstance","_props$ImageComponent","ImageComponent","Image","style","_useState","useState","_useState2","_slicedToArray2","channel","setChannel","_useState3","t","tDateTimeParser","input","Dayjs","_useState4","translators","setTranslators","loadingTranslators","useStreami18n","_useIsOnline","useIsOnline","connectionRecovering","isOnline","_useState5","_useState6","initialisedDatabase","setInitialisedDatabase","mutedUsers","useMutedUsers","debugRef","useDebugContext","isDebugModeEnabled","__DEV__","current","useEffect","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","_client$user","id","QuickSqliteClient","initializeDatabase","DBSyncManager","appSettings","useAppSettings","chatContext","useCreateChatContext","useSyncDatabase","createElement","ChatProvider","value","__self","__source","fileName","lineNumber","columnNumber","TranslationProvider","_extends2","userLanguage","language","DEFAULT_USER_LANGUAGE","ThemeProvider","ChannelsStateProvider","Chat","_useOverlayContext","useOverlayContext","exports"],"sources":["Chat.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\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 { DBSyncManager } from '../../utils/DBSyncManager';\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 Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\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 ImageComponent = Image,\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(setTranslators, i18nInstance);\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n const [initialisedDatabase, setInitialisedDatabase] = useState(false);\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, enableOfflineSupport]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n setInitialisedDatabase(false);\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n setInitialisedDatabase(true);\n }\n }, [client?.user?.id, enableOfflineSupport]);\n\n const appSettings = useAppSettings(client, isOnline, enableOfflineSupport, initialisedDatabase);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\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"],"mappings":"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"}
|
|
@@ -132,10 +132,7 @@ var OverlayProvider = function OverlayProvider(props) {
|
|
|
132
132
|
var _Dimensions$get = _reactNative.Dimensions.get('screen'),
|
|
133
133
|
height = _Dimensions$get.height,
|
|
134
134
|
width = _Dimensions$get.width;
|
|
135
|
-
var loadingTranslators = (0, _useStreami18n.useStreami18n)(
|
|
136
|
-
i18nInstance: i18nInstance,
|
|
137
|
-
setTranslators: setTranslators
|
|
138
|
-
});
|
|
135
|
+
var loadingTranslators = (0, _useStreami18n.useStreami18n)(setTranslators, i18nInstance);
|
|
139
136
|
(0, _react.useEffect)(function () {
|
|
140
137
|
var backAction = function backAction() {
|
|
141
138
|
if (overlay !== 'none') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_dayjs","_interopRequireDefault","_OverlayContext","_AttachmentPicker","_AttachmentPickerBottomSheetHandle","_AttachmentPickerError","_AttachmentPickerErrorImage","_CameraSelectorIcon","_FileSelectorIcon","_ImageOverlaySelectedComponent","_ImageSelectorIcon","_ImageGallery","_MessageOverlay","_OverlayBackdrop","_useStreami18n","_AttachmentPickerContext","_ImageGalleryContext","_MessageOverlayContext","_ThemeContext","_TranslationContext","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OverlayProvider","props","bottomSheetCloseTimeoutRef","useRef","_props$AttachmentPick","AttachmentPickerBottomSheetHandle","DefaultAttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","_props$AttachmentPick2","AttachmentPickerError","DefaultAttachmentPickerError","attachmentPickerErrorButtonText","_props$AttachmentPick3","AttachmentPickerErrorImage","DefaultAttachmentPickerErrorImage","attachmentPickerErrorText","attachmentSelectionBarHeight","bottomInset","_props$CameraSelector","CameraSelectorIcon","DefaultCameraSelectorIcon","children","_props$closePicker","closePicker","ref","_ref$current","current","close","clearTimeout","setTimeout","_ref$current2","_props$FileSelectorIc","FileSelectorIcon","DefaultFileSelectorIcon","giphyVersion","i18nInstance","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","_props$ImageOverlaySe","ImageOverlaySelectedComponent","DefaultImageOverlaySelectedComponent","_props$ImageSelectorI","ImageSelectorIcon","DefaultImageSelectorIcon","MessageActionList","MessageActionListItem","messageTextNumberOfLines","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","numberOfImageGalleryGridColumns","_props$openPicker","openPicker","_ref$current3","snapToIndex","console","warn","topInset","translucentStatusBar","OverlayReactionList","OverlayReactions","OverlayReactionsAvatar","value","attachmentPickerProps","bottomSheetRef","_useState","useState","t","tDateTimeParser","input","Dayjs","_useState2","_slicedToArray2","translators","setTranslators","_useState3","overlay","_useState4","setOverlay","overlayOpacity","useSharedValue","_Dimensions$get","Dimensions","height","width","loadingTranslators","useStreami18n","useEffect","backAction","backHandler","BackHandler","addEventListener","remove","cancelAnimation","withTiming","attachmentPickerContext","overlayStyle","useAnimatedStyle","opacity","overlayContext","style","createElement","TranslationProvider","_extends2","userLanguage","DEFAULT_USER_LANGUAGE","__self","__source","fileName","lineNumber","columnNumber","OverlayContext","Provider","MessageOverlayProvider","AttachmentPickerProvider","ImageGalleryProvider","ThemeProvider","View","pointerEvents","StyleSheet","absoluteFill","OverlayBackdrop","MessageOverlay","ImageGallery","AttachmentPicker","exports"],"sources":["OverlayProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport { BackHandler, Dimensions, StyleSheet, ViewStyle } from 'react-native';\n\nimport Animated, {\n cancelAnimation,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport type BottomSheet from '@gorhom/bottom-sheet';\nimport Dayjs from 'dayjs';\n\nimport { OverlayContext, OverlayProviderProps } from './OverlayContext';\n\nimport { AttachmentPicker } from '../../components/AttachmentPicker/AttachmentPicker';\n\nimport { AttachmentPickerBottomSheetHandle as DefaultAttachmentPickerBottomSheetHandle } from '../../components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle';\nimport { AttachmentPickerError as DefaultAttachmentPickerError } from '../../components/AttachmentPicker/components/AttachmentPickerError';\nimport { AttachmentPickerErrorImage as DefaultAttachmentPickerErrorImage } from '../../components/AttachmentPicker/components/AttachmentPickerErrorImage';\nimport { CameraSelectorIcon as DefaultCameraSelectorIcon } from '../../components/AttachmentPicker/components/CameraSelectorIcon';\nimport { FileSelectorIcon as DefaultFileSelectorIcon } from '../../components/AttachmentPicker/components/FileSelectorIcon';\nimport { ImageOverlaySelectedComponent as DefaultImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent';\nimport { ImageSelectorIcon as DefaultImageSelectorIcon } from '../../components/AttachmentPicker/components/ImageSelectorIcon';\nimport { ImageGallery } from '../../components/ImageGallery/ImageGallery';\nimport { MessageOverlay } from '../../components/MessageOverlay/MessageOverlay';\nimport { OverlayBackdrop } from '../../components/MessageOverlay/OverlayBackdrop';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentPickerProvider } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ImageGalleryProvider } from '../imageGalleryContext/ImageGalleryContext';\nimport { MessageOverlayProvider } from '../messageOverlayContext/MessageOverlayContext';\nimport { ThemeProvider } from '../themeContext/ThemeContext';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../translationContext/TranslationContext';\n\n/**\n * - The highest level of these components is the `OverlayProvider`. The `OverlayProvider` allows users to interact with messages on long press above the underlying views, use the full screen image viewer, and use the `AttachmentPicker` as a keyboard-esk view.\n * Because these views must exist above all others `OverlayProvider` should wrap your navigation stack as well. Assuming [`React Navigation`](https://reactnavigation.org/) is being used, your highest level navigation stack should be wrapped in the provider:\n *\n * ```js\n * <NavigationContainer>\n * <OverlayProvider>\n * <Stack.Navigator>\n * <Stack.Screen />\n * </Stack.Navigator>\n * </OverlayProvider>\n * </NavigationContainer>\n * ```\n *\n * - Don't forget to check our cookbook section of [OverlayProvider](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#overlayprovider)\n *\n * - Also check the [visual component guide](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#custom-components), to learn about component customizations.\n *\n * @example ./OverlayProvider.md\n */\nexport const OverlayProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<OverlayProviderProps<StreamChatGenerics>>,\n) => {\n const bottomSheetCloseTimeoutRef = useRef<NodeJS.Timeout>();\n const {\n AttachmentPickerBottomSheetHandle = DefaultAttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError = DefaultAttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage = DefaultAttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon = DefaultCameraSelectorIcon,\n children,\n closePicker = (ref) => {\n if (ref.current?.close) {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n ref.current.close();\n // Attempt to close the bottomsheet again to circumvent accidental opening on Android.\n // Details: This to prevent a race condition where the close function is called during the point when a internal container layout happens within the bottomsheet due to keyboard affecting the layout\n // If the container layout measures a shorter height than previous but if the close snapped to the previous height's position, the bottom sheet will show up\n // this short delay ensures that close function is always called after a container layout due to keyboard change\n // NOTE: this timeout has to be above 500 as the keyboardAnimationDuration is 500 in the bottomsheet library - see src/hooks/useKeyboard.ts there for more details\n bottomSheetCloseTimeoutRef.current = setTimeout(() => {\n ref.current?.close();\n }, 600);\n }\n },\n FileSelectorIcon = DefaultFileSelectorIcon,\n giphyVersion,\n i18nInstance,\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n ImageOverlaySelectedComponent = DefaultImageOverlaySelectedComponent,\n ImageSelectorIcon = DefaultImageSelectorIcon,\n MessageActionList,\n MessageActionListItem,\n messageTextNumberOfLines,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n numberOfImageGalleryGridColumns,\n openPicker = (ref) => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n if (ref.current?.snapToIndex) {\n ref.current.snapToIndex(0);\n } else {\n console.warn('bottom and top insets must be set for the image picker to work correctly');\n }\n },\n topInset,\n translucentStatusBar,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n value,\n } = props;\n\n const attachmentPickerProps = {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n };\n\n const bottomSheetRef = useRef<BottomSheet>(null);\n\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n const [overlay, setOverlay] = useState(value?.overlay || 'none');\n\n const overlayOpacity = useSharedValue(0);\n const { height, width } = Dimensions.get('screen');\n\n // Setup translators\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n useEffect(() => {\n const backAction = () => {\n if (overlay !== 'none') {\n setOverlay('none');\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [overlay]);\n\n useEffect(\n () =>\n // cleanup the timeout if the component unmounts\n () => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n },\n [],\n );\n\n useEffect(() => {\n closePicker(bottomSheetRef);\n cancelAnimation(overlayOpacity);\n if (overlay !== 'none') {\n overlayOpacity.value = withTiming(1);\n } else {\n overlayOpacity.value = withTiming(0);\n }\n }, [overlay]);\n\n const attachmentPickerContext = {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon,\n closePicker: () => closePicker(bottomSheetRef),\n FileSelectorIcon,\n ImageSelectorIcon,\n openPicker: () => openPicker(bottomSheetRef),\n topInset,\n };\n\n const overlayStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: overlayOpacity.value,\n }),\n [],\n );\n\n const overlayContext = {\n overlay,\n setOverlay,\n style: value?.style,\n translucentStatusBar,\n };\n\n if (loadingTranslators) return null;\n\n return (\n <TranslationProvider value={{ ...translators, userLanguage: DEFAULT_USER_LANGUAGE }}>\n <OverlayContext.Provider value={overlayContext}>\n <MessageOverlayProvider<StreamChatGenerics>>\n <AttachmentPickerProvider value={attachmentPickerContext}>\n <ImageGalleryProvider>\n {children}\n <ThemeProvider style={overlayContext.style}>\n <Animated.View\n pointerEvents={overlay === 'none' ? 'none' : 'auto'}\n style={[StyleSheet.absoluteFill, overlayStyle]}\n >\n <OverlayBackdrop style={[StyleSheet.absoluteFill, { height, width }]} />\n </Animated.View>\n {overlay === 'message' && (\n <MessageOverlay<StreamChatGenerics>\n MessageActionList={MessageActionList}\n MessageActionListItem={MessageActionListItem}\n messageTextNumberOfLines={messageTextNumberOfLines}\n overlayOpacity={overlayOpacity}\n OverlayReactionList={OverlayReactionList}\n OverlayReactions={OverlayReactions}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n />\n )}\n {overlay === 'gallery' && (\n <ImageGallery<StreamChatGenerics>\n giphyVersion={giphyVersion}\n imageGalleryCustomComponents={imageGalleryCustomComponents}\n imageGalleryGridHandleHeight={imageGalleryGridHandleHeight}\n imageGalleryGridSnapPoints={imageGalleryGridSnapPoints}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n overlayOpacity={overlayOpacity}\n />\n )}\n <AttachmentPicker ref={bottomSheetRef} {...attachmentPickerProps} />\n </ThemeProvider>\n </ImageGalleryProvider>\n </AttachmentPickerProvider>\n </MessageOverlayProvider>\n </OverlayContext.Provider>\n </TranslationProvider>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_dayjs","_interopRequireDefault","_OverlayContext","_AttachmentPicker","_AttachmentPickerBottomSheetHandle","_AttachmentPickerError","_AttachmentPickerErrorImage","_CameraSelectorIcon","_FileSelectorIcon","_ImageOverlaySelectedComponent","_ImageSelectorIcon","_ImageGallery","_MessageOverlay","_OverlayBackdrop","_useStreami18n","_AttachmentPickerContext","_ImageGalleryContext","_MessageOverlayContext","_ThemeContext","_TranslationContext","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","OverlayProvider","props","bottomSheetCloseTimeoutRef","useRef","_props$AttachmentPick","AttachmentPickerBottomSheetHandle","DefaultAttachmentPickerBottomSheetHandle","attachmentPickerBottomSheetHandleHeight","attachmentPickerBottomSheetHeight","_props$AttachmentPick2","AttachmentPickerError","DefaultAttachmentPickerError","attachmentPickerErrorButtonText","_props$AttachmentPick3","AttachmentPickerErrorImage","DefaultAttachmentPickerErrorImage","attachmentPickerErrorText","attachmentSelectionBarHeight","bottomInset","_props$CameraSelector","CameraSelectorIcon","DefaultCameraSelectorIcon","children","_props$closePicker","closePicker","ref","_ref$current","current","close","clearTimeout","setTimeout","_ref$current2","_props$FileSelectorIc","FileSelectorIcon","DefaultFileSelectorIcon","giphyVersion","i18nInstance","imageGalleryCustomComponents","imageGalleryGridHandleHeight","imageGalleryGridSnapPoints","_props$ImageOverlaySe","ImageOverlaySelectedComponent","DefaultImageOverlaySelectedComponent","_props$ImageSelectorI","ImageSelectorIcon","DefaultImageSelectorIcon","MessageActionList","MessageActionListItem","messageTextNumberOfLines","numberOfAttachmentImagesToLoadPerCall","numberOfAttachmentPickerImageColumns","numberOfImageGalleryGridColumns","_props$openPicker","openPicker","_ref$current3","snapToIndex","console","warn","topInset","translucentStatusBar","OverlayReactionList","OverlayReactions","OverlayReactionsAvatar","value","attachmentPickerProps","bottomSheetRef","_useState","useState","t","tDateTimeParser","input","Dayjs","_useState2","_slicedToArray2","translators","setTranslators","_useState3","overlay","_useState4","setOverlay","overlayOpacity","useSharedValue","_Dimensions$get","Dimensions","height","width","loadingTranslators","useStreami18n","useEffect","backAction","backHandler","BackHandler","addEventListener","remove","cancelAnimation","withTiming","attachmentPickerContext","overlayStyle","useAnimatedStyle","opacity","overlayContext","style","createElement","TranslationProvider","_extends2","userLanguage","DEFAULT_USER_LANGUAGE","__self","__source","fileName","lineNumber","columnNumber","OverlayContext","Provider","MessageOverlayProvider","AttachmentPickerProvider","ImageGalleryProvider","ThemeProvider","View","pointerEvents","StyleSheet","absoluteFill","OverlayBackdrop","MessageOverlay","ImageGallery","AttachmentPicker","exports"],"sources":["OverlayProvider.tsx"],"sourcesContent":["import React, { PropsWithChildren, useEffect, useRef, useState } from 'react';\n\nimport { BackHandler, Dimensions, StyleSheet, ViewStyle } from 'react-native';\n\nimport Animated, {\n cancelAnimation,\n useAnimatedStyle,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\n\nimport type BottomSheet from '@gorhom/bottom-sheet';\nimport Dayjs from 'dayjs';\n\nimport { OverlayContext, OverlayProviderProps } from './OverlayContext';\n\nimport { AttachmentPicker } from '../../components/AttachmentPicker/AttachmentPicker';\n\nimport { AttachmentPickerBottomSheetHandle as DefaultAttachmentPickerBottomSheetHandle } from '../../components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle';\nimport { AttachmentPickerError as DefaultAttachmentPickerError } from '../../components/AttachmentPicker/components/AttachmentPickerError';\nimport { AttachmentPickerErrorImage as DefaultAttachmentPickerErrorImage } from '../../components/AttachmentPicker/components/AttachmentPickerErrorImage';\nimport { CameraSelectorIcon as DefaultCameraSelectorIcon } from '../../components/AttachmentPicker/components/CameraSelectorIcon';\nimport { FileSelectorIcon as DefaultFileSelectorIcon } from '../../components/AttachmentPicker/components/FileSelectorIcon';\nimport { ImageOverlaySelectedComponent as DefaultImageOverlaySelectedComponent } from '../../components/AttachmentPicker/components/ImageOverlaySelectedComponent';\nimport { ImageSelectorIcon as DefaultImageSelectorIcon } from '../../components/AttachmentPicker/components/ImageSelectorIcon';\nimport { ImageGallery } from '../../components/ImageGallery/ImageGallery';\nimport { MessageOverlay } from '../../components/MessageOverlay/MessageOverlay';\nimport { OverlayBackdrop } from '../../components/MessageOverlay/OverlayBackdrop';\nimport { useStreami18n } from '../../hooks/useStreami18n';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { AttachmentPickerProvider } from '../attachmentPickerContext/AttachmentPickerContext';\nimport { ImageGalleryProvider } from '../imageGalleryContext/ImageGalleryContext';\nimport { MessageOverlayProvider } from '../messageOverlayContext/MessageOverlayContext';\nimport { ThemeProvider } from '../themeContext/ThemeContext';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../translationContext/TranslationContext';\n\n/**\n * - The highest level of these components is the `OverlayProvider`. The `OverlayProvider` allows users to interact with messages on long press above the underlying views, use the full screen image viewer, and use the `AttachmentPicker` as a keyboard-esk view.\n * Because these views must exist above all others `OverlayProvider` should wrap your navigation stack as well. Assuming [`React Navigation`](https://reactnavigation.org/) is being used, your highest level navigation stack should be wrapped in the provider:\n *\n * ```js\n * <NavigationContainer>\n * <OverlayProvider>\n * <Stack.Navigator>\n * <Stack.Screen />\n * </Stack.Navigator>\n * </OverlayProvider>\n * </NavigationContainer>\n * ```\n *\n * - Don't forget to check our cookbook section of [OverlayProvider](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#overlayprovider)\n *\n * - Also check the [visual component guide](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#custom-components), to learn about component customizations.\n *\n * @example ./OverlayProvider.md\n */\nexport const OverlayProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<OverlayProviderProps<StreamChatGenerics>>,\n) => {\n const bottomSheetCloseTimeoutRef = useRef<NodeJS.Timeout>();\n const {\n AttachmentPickerBottomSheetHandle = DefaultAttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError = DefaultAttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage = DefaultAttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon = DefaultCameraSelectorIcon,\n children,\n closePicker = (ref) => {\n if (ref.current?.close) {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n ref.current.close();\n // Attempt to close the bottomsheet again to circumvent accidental opening on Android.\n // Details: This to prevent a race condition where the close function is called during the point when a internal container layout happens within the bottomsheet due to keyboard affecting the layout\n // If the container layout measures a shorter height than previous but if the close snapped to the previous height's position, the bottom sheet will show up\n // this short delay ensures that close function is always called after a container layout due to keyboard change\n // NOTE: this timeout has to be above 500 as the keyboardAnimationDuration is 500 in the bottomsheet library - see src/hooks/useKeyboard.ts there for more details\n bottomSheetCloseTimeoutRef.current = setTimeout(() => {\n ref.current?.close();\n }, 600);\n }\n },\n FileSelectorIcon = DefaultFileSelectorIcon,\n giphyVersion,\n i18nInstance,\n imageGalleryCustomComponents,\n imageGalleryGridHandleHeight,\n imageGalleryGridSnapPoints,\n ImageOverlaySelectedComponent = DefaultImageOverlaySelectedComponent,\n ImageSelectorIcon = DefaultImageSelectorIcon,\n MessageActionList,\n MessageActionListItem,\n messageTextNumberOfLines,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n numberOfImageGalleryGridColumns,\n openPicker = (ref) => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n if (ref.current?.snapToIndex) {\n ref.current.snapToIndex(0);\n } else {\n console.warn('bottom and top insets must be set for the image picker to work correctly');\n }\n },\n topInset,\n translucentStatusBar,\n OverlayReactionList,\n OverlayReactions,\n OverlayReactionsAvatar,\n value,\n } = props;\n\n const attachmentPickerProps = {\n AttachmentPickerBottomSheetHandle,\n attachmentPickerBottomSheetHandleHeight,\n attachmentPickerBottomSheetHeight,\n AttachmentPickerError,\n attachmentPickerErrorButtonText,\n AttachmentPickerErrorImage,\n attachmentPickerErrorText,\n attachmentSelectionBarHeight,\n ImageOverlaySelectedComponent,\n numberOfAttachmentImagesToLoadPerCall,\n numberOfAttachmentPickerImageColumns,\n translucentStatusBar,\n };\n\n const bottomSheetRef = useRef<BottomSheet>(null);\n\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n const [overlay, setOverlay] = useState(value?.overlay || 'none');\n\n const overlayOpacity = useSharedValue(0);\n const { height, width } = Dimensions.get('screen');\n\n // Setup translators\n const loadingTranslators = useStreami18n(setTranslators, i18nInstance);\n\n useEffect(() => {\n const backAction = () => {\n if (overlay !== 'none') {\n setOverlay('none');\n return true;\n }\n\n return false;\n };\n\n const backHandler = BackHandler.addEventListener('hardwareBackPress', backAction);\n\n return () => backHandler.remove();\n }, [overlay]);\n\n useEffect(\n () =>\n // cleanup the timeout if the component unmounts\n () => {\n if (bottomSheetCloseTimeoutRef.current) {\n clearTimeout(bottomSheetCloseTimeoutRef.current);\n }\n },\n [],\n );\n\n useEffect(() => {\n closePicker(bottomSheetRef);\n cancelAnimation(overlayOpacity);\n if (overlay !== 'none') {\n overlayOpacity.value = withTiming(1);\n } else {\n overlayOpacity.value = withTiming(0);\n }\n }, [overlay]);\n\n const attachmentPickerContext = {\n attachmentPickerBottomSheetHeight,\n attachmentSelectionBarHeight,\n bottomInset,\n CameraSelectorIcon,\n closePicker: () => closePicker(bottomSheetRef),\n FileSelectorIcon,\n ImageSelectorIcon,\n openPicker: () => openPicker(bottomSheetRef),\n topInset,\n };\n\n const overlayStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: overlayOpacity.value,\n }),\n [],\n );\n\n const overlayContext = {\n overlay,\n setOverlay,\n style: value?.style,\n translucentStatusBar,\n };\n\n if (loadingTranslators) return null;\n\n return (\n <TranslationProvider value={{ ...translators, userLanguage: DEFAULT_USER_LANGUAGE }}>\n <OverlayContext.Provider value={overlayContext}>\n <MessageOverlayProvider<StreamChatGenerics>>\n <AttachmentPickerProvider value={attachmentPickerContext}>\n <ImageGalleryProvider>\n {children}\n <ThemeProvider style={overlayContext.style}>\n <Animated.View\n pointerEvents={overlay === 'none' ? 'none' : 'auto'}\n style={[StyleSheet.absoluteFill, overlayStyle]}\n >\n <OverlayBackdrop style={[StyleSheet.absoluteFill, { height, width }]} />\n </Animated.View>\n {overlay === 'message' && (\n <MessageOverlay<StreamChatGenerics>\n MessageActionList={MessageActionList}\n MessageActionListItem={MessageActionListItem}\n messageTextNumberOfLines={messageTextNumberOfLines}\n overlayOpacity={overlayOpacity}\n OverlayReactionList={OverlayReactionList}\n OverlayReactions={OverlayReactions}\n OverlayReactionsAvatar={OverlayReactionsAvatar}\n />\n )}\n {overlay === 'gallery' && (\n <ImageGallery<StreamChatGenerics>\n giphyVersion={giphyVersion}\n imageGalleryCustomComponents={imageGalleryCustomComponents}\n imageGalleryGridHandleHeight={imageGalleryGridHandleHeight}\n imageGalleryGridSnapPoints={imageGalleryGridSnapPoints}\n numberOfImageGalleryGridColumns={numberOfImageGalleryGridColumns}\n overlayOpacity={overlayOpacity}\n />\n )}\n <AttachmentPicker ref={bottomSheetRef} {...attachmentPickerProps} />\n </ThemeProvider>\n </ImageGalleryProvider>\n </AttachmentPickerProvider>\n </MessageOverlayProvider>\n </OverlayContext.Provider>\n </TranslationProvider>\n );\n};\n"],"mappings":"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"}
|
|
@@ -8,15 +8,12 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _useIsMountedRef = require("./useIsMountedRef");
|
|
10
10
|
var _Streami18n = require("../utils/Streami18n");
|
|
11
|
-
var useStreami18n = function useStreami18n(
|
|
12
|
-
var i18nInstance = _ref.i18nInstance,
|
|
13
|
-
setTranslators = _ref.setTranslators;
|
|
11
|
+
var useStreami18n = function useStreami18n(setTranslators, i18nInstance) {
|
|
14
12
|
var _useState = (0, _react.useState)(true),
|
|
15
13
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
16
14
|
loadingTranslators = _useState2[0],
|
|
17
15
|
setLoadingTranslators = _useState2[1];
|
|
18
16
|
var isMounted = (0, _useIsMountedRef.useIsMountedRef)();
|
|
19
|
-
var i18nInstanceExists = !!i18nInstance;
|
|
20
17
|
(0, _react.useEffect)(function () {
|
|
21
18
|
var streami18n;
|
|
22
19
|
if (i18nInstance instanceof _Streami18n.Streami18n) {
|
|
@@ -26,18 +23,30 @@ var useStreami18n = function useStreami18n(_ref) {
|
|
|
26
23
|
language: 'en'
|
|
27
24
|
});
|
|
28
25
|
}
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
var updateTFunction = function updateTFunction(t) {
|
|
27
|
+
setTranslators(function (prevTranslator) {
|
|
31
28
|
return (0, _extends2["default"])({}, prevTranslator, {
|
|
32
29
|
t: t
|
|
33
30
|
});
|
|
34
31
|
});
|
|
35
|
-
}
|
|
32
|
+
};
|
|
33
|
+
var _streami18n$addOnLang = streami18n.addOnLanguageChangeListener(function (t) {
|
|
34
|
+
updateTFunction(t);
|
|
35
|
+
}),
|
|
36
|
+
unsubscribeOnLanguageChangeListener = _streami18n$addOnLang.unsubscribe;
|
|
37
|
+
var _streami18n$addOnTFun = streami18n.addOnTFunctionOverrideListener(function (t) {
|
|
38
|
+
updateTFunction(t);
|
|
39
|
+
}),
|
|
40
|
+
unsubscribeOnTFuncOverrideListener = _streami18n$addOnTFun.unsubscribe;
|
|
36
41
|
streami18n.getTranslators().then(function (translator) {
|
|
37
42
|
if (translator && isMounted.current) setTranslators(translator);
|
|
38
43
|
});
|
|
39
44
|
setLoadingTranslators(false);
|
|
40
|
-
|
|
45
|
+
return function () {
|
|
46
|
+
unsubscribeOnTFuncOverrideListener();
|
|
47
|
+
unsubscribeOnLanguageChangeListener();
|
|
48
|
+
};
|
|
49
|
+
}, [i18nInstance]);
|
|
41
50
|
return loadingTranslators;
|
|
42
51
|
};
|
|
43
52
|
exports.useStreami18n = useStreami18n;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_useIsMountedRef","_Streami18n","useStreami18n","
|
|
1
|
+
{"version":3,"names":["_react","require","_useIsMountedRef","_Streami18n","useStreami18n","setTranslators","i18nInstance","_useState","useState","_useState2","_slicedToArray2","loadingTranslators","setLoadingTranslators","isMounted","useIsMountedRef","useEffect","streami18n","Streami18n","language","updateTFunction","t","prevTranslator","_extends2","_streami18n$addOnLang","addOnLanguageChangeListener","unsubscribeOnLanguageChangeListener","unsubscribe","_streami18n$addOnTFun","addOnTFunctionOverrideListener","unsubscribeOnTFuncOverrideListener","getTranslators","then","translator","current","exports"],"sources":["useStreami18n.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useIsMountedRef } from './useIsMountedRef';\n\nimport type { TranslatorFunctions } from '../contexts/translationContext/TranslationContext';\nimport { Streami18n } from '../utils/Streami18n';\n\nexport const useStreami18n = (\n setTranslators: React.Dispatch<React.SetStateAction<TranslatorFunctions>>,\n i18nInstance?: Streami18n,\n) => {\n const [loadingTranslators, setLoadingTranslators] = useState(true);\n const isMounted = useIsMountedRef();\n useEffect(() => {\n let streami18n: Streami18n;\n\n if (i18nInstance instanceof Streami18n) {\n streami18n = i18nInstance;\n } else {\n streami18n = new Streami18n({ language: 'en' });\n }\n\n const updateTFunction = (t: TranslatorFunctions['t']) => {\n setTranslators((prevTranslator) => ({ ...prevTranslator, t }));\n };\n\n const { unsubscribe: unsubscribeOnLanguageChangeListener } =\n streami18n.addOnLanguageChangeListener((t) => {\n updateTFunction(t);\n });\n const { unsubscribe: unsubscribeOnTFuncOverrideListener } =\n streami18n.addOnTFunctionOverrideListener((t) => {\n updateTFunction(t);\n });\n streami18n.getTranslators().then((translator) => {\n if (translator && isMounted.current) setTranslators(translator);\n });\n\n setLoadingTranslators(false);\n return () => {\n unsubscribeOnTFuncOverrideListener();\n unsubscribeOnLanguageChangeListener();\n };\n }, [i18nInstance]);\n\n return loadingTranslators;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AAGA,IAAAE,WAAA,GAAAF,OAAA;AAEO,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CACxBC,cAAyE,EACzEC,YAAyB,EACtB;EACH,IAAAC,SAAA,GAAoD,IAAAC,eAAQ,EAAC,IAAI,CAAC;IAAAC,UAAA,OAAAC,eAAA,aAAAH,SAAA;IAA3DI,kBAAkB,GAAAF,UAAA;IAAEG,qBAAqB,GAAAH,UAAA;EAChD,IAAMI,SAAS,GAAG,IAAAC,gCAAe,GAAE;EACnC,IAAAC,gBAAS,EAAC,YAAM;IACd,IAAIC,UAAsB;IAE1B,IAAIV,YAAY,YAAYW,sBAAU,EAAE;MACtCD,UAAU,GAAGV,YAAY;IAC3B,CAAC,MAAM;MACLU,UAAU,GAAG,IAAIC,sBAAU,CAAC;QAAEC,QAAQ,EAAE;MAAK,CAAC,CAAC;IACjD;IAEA,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,CAA2B,EAAK;MACvDf,cAAc,CAAC,UAACgB,cAAc;QAAA,WAAAC,SAAA,iBAAWD,cAAc;UAAED,CAAC,EAADA;QAAC;MAAA,CAAG,CAAC;IAChE,CAAC;IAED,IAAAG,qBAAA,GACEP,UAAU,CAACQ,2BAA2B,CAAC,UAACJ,CAAC,EAAK;QAC5CD,eAAe,CAACC,CAAC,CAAC;MACpB,CAAC,CAAC;MAHiBK,mCAAmC,GAAAF,qBAAA,CAAhDG,WAAW;IAInB,IAAAC,qBAAA,GACEX,UAAU,CAACY,8BAA8B,CAAC,UAACR,CAAC,EAAK;QAC/CD,eAAe,CAACC,CAAC,CAAC;MACpB,CAAC,CAAC;MAHiBS,kCAAkC,GAAAF,qBAAA,CAA/CD,WAAW;IAInBV,UAAU,CAACc,cAAc,EAAE,CAACC,IAAI,CAAC,UAACC,UAAU,EAAK;MAC/C,IAAIA,UAAU,IAAInB,SAAS,CAACoB,OAAO,EAAE5B,cAAc,CAAC2B,UAAU,CAAC;IACjE,CAAC,CAAC;IAEFpB,qBAAqB,CAAC,KAAK,CAAC;IAC5B,OAAO,YAAM;MACXiB,kCAAkC,EAAE;MACpCJ,mCAAmC,EAAE;IACvC,CAAC;EACH,CAAC,EAAE,CAACnB,YAAY,CAAC,CAAC;EAElB,OAAOK,kBAAkB;AAC3B,CAAC;AAACuB,OAAA,CAAA9B,aAAA,GAAAA,aAAA"}
|
|
@@ -151,10 +151,9 @@ var Streami18n = function () {
|
|
|
151
151
|
(0, _classCallCheck2["default"])(this, Streami18n);
|
|
152
152
|
this.i18nInstance = _i18next["default"].createInstance();
|
|
153
153
|
this.Dayjs = null;
|
|
154
|
-
this.setLanguageCallback = function () {
|
|
155
|
-
return null;
|
|
156
|
-
};
|
|
157
154
|
this.initialized = false;
|
|
155
|
+
this.onLanguageChangeListeners = [];
|
|
156
|
+
this.onTFunctionOverrideListeners = [];
|
|
158
157
|
this.t = function (key) {
|
|
159
158
|
return key;
|
|
160
159
|
};
|
|
@@ -251,6 +250,7 @@ var Streami18n = function () {
|
|
|
251
250
|
key: "init",
|
|
252
251
|
value: function () {
|
|
253
252
|
var _init = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
253
|
+
var _this2 = this;
|
|
254
254
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
255
255
|
while (1) switch (_context.prev = _context.next) {
|
|
256
256
|
case 0:
|
|
@@ -263,23 +263,27 @@ var Streami18n = function () {
|
|
|
263
263
|
}));
|
|
264
264
|
case 4:
|
|
265
265
|
this.t = _context.sent;
|
|
266
|
+
if (this.queuedTFunctionOverride) {
|
|
267
|
+
this.t = this.queuedTFunctionOverride;
|
|
268
|
+
this.queuedTFunctionOverride = undefined;
|
|
269
|
+
this.onTFunctionOverrideListeners.forEach(function (listener) {
|
|
270
|
+
return listener(_this2.t);
|
|
271
|
+
});
|
|
272
|
+
}
|
|
266
273
|
this.initialized = true;
|
|
267
|
-
_context.next =
|
|
274
|
+
_context.next = 12;
|
|
268
275
|
break;
|
|
269
|
-
case
|
|
270
|
-
_context.prev =
|
|
276
|
+
case 9:
|
|
277
|
+
_context.prev = 9;
|
|
271
278
|
_context.t0 = _context["catch"](1);
|
|
272
279
|
this.logger("Something went wrong with init: " + JSON.stringify(_context.t0));
|
|
273
|
-
case 11:
|
|
274
|
-
return _context.abrupt("return", {
|
|
275
|
-
t: this.t,
|
|
276
|
-
tDateTimeParser: this.tDateTimeParser
|
|
277
|
-
});
|
|
278
280
|
case 12:
|
|
281
|
+
this.waitForInitializing = undefined;
|
|
282
|
+
case 13:
|
|
279
283
|
case "end":
|
|
280
284
|
return _context.stop();
|
|
281
285
|
}
|
|
282
|
-
}, _callee, this, [[1,
|
|
286
|
+
}, _callee, this, [[1, 9]]);
|
|
283
287
|
}));
|
|
284
288
|
function init() {
|
|
285
289
|
return _init.apply(this, arguments);
|
|
@@ -290,26 +294,37 @@ var Streami18n = function () {
|
|
|
290
294
|
key: "getTranslators",
|
|
291
295
|
value: function () {
|
|
292
296
|
var _getTranslators = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee2() {
|
|
297
|
+
var initPromise;
|
|
293
298
|
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
294
299
|
while (1) switch (_context2.prev = _context2.next) {
|
|
295
300
|
case 0:
|
|
296
301
|
if (this.initialized) {
|
|
297
|
-
_context2.next =
|
|
302
|
+
_context2.next = 11;
|
|
298
303
|
break;
|
|
299
304
|
}
|
|
300
|
-
if (this.
|
|
301
|
-
|
|
305
|
+
if (!this.waitForInitializing) {
|
|
306
|
+
_context2.next = 6;
|
|
307
|
+
break;
|
|
302
308
|
}
|
|
303
309
|
_context2.next = 4;
|
|
304
|
-
return this.
|
|
310
|
+
return this.waitForInitializing;
|
|
305
311
|
case 4:
|
|
306
|
-
|
|
307
|
-
|
|
312
|
+
_context2.next = 11;
|
|
313
|
+
break;
|
|
314
|
+
case 6:
|
|
315
|
+
if (this.dayjsLocales[this.currentLanguage]) {
|
|
316
|
+
this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
|
|
317
|
+
}
|
|
318
|
+
initPromise = this.init();
|
|
319
|
+
this.waitForInitializing = initPromise;
|
|
320
|
+
_context2.next = 11;
|
|
321
|
+
return initPromise;
|
|
322
|
+
case 11:
|
|
308
323
|
return _context2.abrupt("return", {
|
|
309
324
|
t: this.t,
|
|
310
325
|
tDateTimeParser: this.tDateTimeParser
|
|
311
326
|
});
|
|
312
|
-
case
|
|
327
|
+
case 12:
|
|
313
328
|
case "end":
|
|
314
329
|
return _context2.stop();
|
|
315
330
|
}
|
|
@@ -375,18 +390,21 @@ var Streami18n = function () {
|
|
|
375
390
|
if (this.dayjsLocales[language]) {
|
|
376
391
|
this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
|
|
377
392
|
}
|
|
378
|
-
this.
|
|
393
|
+
this.t = _t;
|
|
394
|
+
this.onLanguageChangeListeners.forEach(function (listener) {
|
|
395
|
+
return listener(_t);
|
|
396
|
+
});
|
|
379
397
|
return _context3.abrupt("return", _t);
|
|
380
|
-
case
|
|
381
|
-
_context3.prev =
|
|
398
|
+
case 13:
|
|
399
|
+
_context3.prev = 13;
|
|
382
400
|
_context3.t0 = _context3["catch"](3);
|
|
383
401
|
this.logger("Failed to set language: " + JSON.stringify(_context3.t0));
|
|
384
402
|
return _context3.abrupt("return", this.t);
|
|
385
|
-
case
|
|
403
|
+
case 17:
|
|
386
404
|
case "end":
|
|
387
405
|
return _context3.stop();
|
|
388
406
|
}
|
|
389
|
-
}, _callee3, this, [[3,
|
|
407
|
+
}, _callee3, this, [[3, 13]]);
|
|
390
408
|
}));
|
|
391
409
|
function setLanguage(_x) {
|
|
392
410
|
return _setLanguage.apply(this, arguments);
|
|
@@ -394,9 +412,42 @@ var Streami18n = function () {
|
|
|
394
412
|
return setLanguage;
|
|
395
413
|
}()
|
|
396
414
|
}, {
|
|
397
|
-
key: "
|
|
398
|
-
value: function
|
|
399
|
-
|
|
415
|
+
key: "addOnLanguageChangeListener",
|
|
416
|
+
value: function addOnLanguageChangeListener(callback) {
|
|
417
|
+
var _this3 = this;
|
|
418
|
+
this.onLanguageChangeListeners.push(callback);
|
|
419
|
+
return {
|
|
420
|
+
unsubscribe: function unsubscribe() {
|
|
421
|
+
_this3.onLanguageChangeListeners = _this3.onLanguageChangeListeners.filter(function (listener) {
|
|
422
|
+
return listener !== callback;
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
};
|
|
426
|
+
}
|
|
427
|
+
}, {
|
|
428
|
+
key: "addOnTFunctionOverrideListener",
|
|
429
|
+
value: function addOnTFunctionOverrideListener(callback) {
|
|
430
|
+
var _this4 = this;
|
|
431
|
+
this.onTFunctionOverrideListeners.push(callback);
|
|
432
|
+
return {
|
|
433
|
+
unsubscribe: function unsubscribe() {
|
|
434
|
+
_this4.onTFunctionOverrideListeners = _this4.onTFunctionOverrideListeners.filter(function (listener) {
|
|
435
|
+
return listener !== callback;
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
}, {
|
|
441
|
+
key: "overrideTFunction",
|
|
442
|
+
value: function overrideTFunction(tFunction) {
|
|
443
|
+
if (!this.initialized) {
|
|
444
|
+
this.queuedTFunctionOverride = tFunction;
|
|
445
|
+
} else {
|
|
446
|
+
this.t = tFunction;
|
|
447
|
+
this.onTFunctionOverrideListeners.forEach(function (listener) {
|
|
448
|
+
return listener(tFunction);
|
|
449
|
+
});
|
|
450
|
+
}
|
|
400
451
|
}
|
|
401
452
|
}]);
|
|
402
453
|
return Streami18n;
|