@@ -94,6 +94,7 @@ notifee.onBackgroundEvent(async ({ detail, type }) => {
9494const Drawer = createDrawerNavigator ( ) ;
9595const Stack = createNativeStackNavigator < StackNavigatorParamList > ( ) ;
9696const UserSelectorStack = createNativeStackNavigator < UserSelectorParamList > ( ) ;
97+
9798const App = ( ) => {
9899 const { chatClient, isConnecting, loginUser, logout, switchUser } = useChatClient ( ) ;
99100 const [ messageListImplementation , setMessageListImplementation ] = useState <
@@ -107,6 +108,7 @@ const App = () => {
107108 > ( undefined ) ;
108109 const colorScheme = useColorScheme ( ) ;
109110 const streamChatTheme = useStreamChatTheme ( ) ;
111+ const streami18n = new Streami18n ( ) ;
110112
111113 useEffect ( ( ) => {
112114 const messaging = getMessaging ( ) ;
@@ -209,39 +211,43 @@ const App = () => {
209211 backgroundColor : streamChatTheme . colors ?. white_snow || '#FCFCFC' ,
210212 } }
211213 >
212- < ThemeProvider style = { streamChatTheme } >
213- < NavigationContainer
214- ref = { RootNavigationRef }
215- theme = { {
216- colors : {
217- ...( colorScheme === 'dark' ? DarkTheme : DefaultTheme ) . colors ,
218- background : streamChatTheme . colors ?. white_snow || '#FCFCFC' ,
219- } ,
220- fonts : ( colorScheme === 'dark' ? DarkTheme : DefaultTheme ) . fonts ,
221- dark : colorScheme === 'dark' ,
222- } }
223- >
224- < AppContext . Provider
225- value = { {
226- chatClient,
227- loginUser,
228- logout,
229- switchUser,
230- messageListImplementation,
231- messageListMode,
232- messageListPruning,
233- } }
234- >
235- { isConnecting && ! chatClient ? (
236- < LoadingScreen />
237- ) : chatClient ? (
238- < DrawerNavigatorWrapper chatClient = { chatClient } />
239- ) : (
240- < UserSelector />
241- ) }
242- </ AppContext . Provider >
243- </ NavigationContainer >
244- </ ThemeProvider >
214+ < GestureHandlerRootView style = { { flex : 1 } } >
215+ < OverlayProvider value = { { style : streamChatTheme } } i18nInstance = { streami18n } >
216+ < ThemeProvider style = { streamChatTheme } >
217+ < NavigationContainer
218+ ref = { RootNavigationRef }
219+ theme = { {
220+ colors : {
221+ ...( colorScheme === 'dark' ? DarkTheme : DefaultTheme ) . colors ,
222+ background : streamChatTheme . colors ?. white_snow || '#FCFCFC' ,
223+ } ,
224+ fonts : ( colorScheme === 'dark' ? DarkTheme : DefaultTheme ) . fonts ,
225+ dark : colorScheme === 'dark' ,
226+ } }
227+ >
228+ < AppContext . Provider
229+ value = { {
230+ chatClient,
231+ loginUser,
232+ logout,
233+ switchUser,
234+ messageListImplementation,
235+ messageListMode,
236+ messageListPruning,
237+ } }
238+ >
239+ { isConnecting && ! chatClient ? (
240+ < LoadingScreen />
241+ ) : chatClient ? (
242+ < DrawerNavigatorWrapper chatClient = { chatClient } i18nInstance = { streami18n } />
243+ ) : (
244+ < UserSelector />
245+ ) }
246+ </ AppContext . Provider >
247+ </ NavigationContainer >
248+ </ ThemeProvider >
249+ </ OverlayProvider >
250+ </ GestureHandlerRootView >
245251 </ SafeAreaProvider >
246252 ) ;
247253} ;
@@ -265,32 +271,26 @@ const isMessageAIGenerated = (message: LocalMessage) => !!message.ai_generated;
265271
266272const DrawerNavigatorWrapper : React . FC < {
267273 chatClient : StreamChat ;
268- } > = ( { chatClient } ) => {
269- const streamChatTheme = useStreamChatTheme ( ) ;
270- const streami18n = new Streami18n ( ) ;
271-
274+ i18nInstance : Streami18n ;
275+ } > = ( { chatClient, i18nInstance } ) => {
272276 return (
273- < GestureHandlerRootView style = { { flex : 1 } } >
274- < OverlayProvider value = { { style : streamChatTheme } } i18nInstance = { streami18n } >
275- < Chat
276- client = { chatClient }
277- enableOfflineSupport
278- // @ts -expect-error - the `ImageComponent` prop is generic, meaning we can expect an error
279- ImageComponent = { FastImage }
280- isMessageAIGenerated = { isMessageAIGenerated }
281- i18nInstance = { streami18n }
282- >
283- < StreamChatProvider >
284- < AppOverlayProvider >
285- < UserSearchProvider >
286- < DrawerNavigator />
287- < Toast />
288- </ UserSearchProvider >
289- </ AppOverlayProvider >
290- </ StreamChatProvider >
291- </ Chat >
292- </ OverlayProvider >
293- </ GestureHandlerRootView >
277+ < Chat
278+ client = { chatClient }
279+ enableOfflineSupport
280+ // @ts -expect-error - the `ImageComponent` prop is generic, meaning we can expect an error
281+ ImageComponent = { FastImage }
282+ isMessageAIGenerated = { isMessageAIGenerated }
283+ i18nInstance = { i18nInstance }
284+ >
285+ < StreamChatProvider >
286+ < AppOverlayProvider >
287+ < UserSearchProvider >
288+ < DrawerNavigator />
289+ < Toast />
290+ </ UserSearchProvider >
291+ </ AppOverlayProvider >
292+ </ StreamChatProvider >
293+ </ Chat >
294294 ) ;
295295} ;
296296
0 commit comments