@@ -3,10 +3,12 @@ import { DevSettings, LogBox, Platform, useColorScheme } from 'react-native';
33import { createDrawerNavigator } from '@react-navigation/drawer' ;
44import { DarkTheme , DefaultTheme , NavigationContainer } from '@react-navigation/native' ;
55import { createStackNavigator } from '@react-navigation/stack' ;
6- import { SafeAreaProvider , useSafeAreaInsets } from 'react-native-safe-area-context' ;
6+ import { SafeAreaProvider } from 'react-native-safe-area-context' ;
77import {
88 Chat ,
9+ createTextComposerEmojiMiddleware ,
910 OverlayProvider ,
11+ setupCommandUIMiddlewares ,
1012 SqliteClient ,
1113 ThemeProvider ,
1214 useOverlayContext ,
@@ -34,8 +36,12 @@ import { OneOnOneChannelDetailScreen } from './src/screens/OneOnOneChannelDetail
3436import { SharedGroupsScreen } from './src/screens/SharedGroupsScreen' ;
3537import { ThreadScreen } from './src/screens/ThreadScreen' ;
3638import { UserSelectorScreen } from './src/screens/UserSelectorScreen' ;
39+ import { init , SearchIndex } from 'emoji-mart' ;
40+ import data from '@emoji-mart/data' ;
3741
38- import type { LocalMessage , StreamChat } from 'stream-chat' ;
42+ import type { LocalMessage , StreamChat , TextComposerMiddleware } from 'stream-chat' ;
43+
44+ init ( { data } ) ;
3945
4046if ( __DEV__ ) {
4147 DevSettings . addMenuItem ( 'Reset local DB (offline storage)' , ( ) => {
@@ -118,6 +124,31 @@ const App = () => {
118124 } ;
119125 } , [ ] ) ;
120126
127+ useEffect ( ( ) => {
128+ if ( ! chatClient ) {
129+ return ;
130+ }
131+ chatClient . setMessageComposerSetupFunction ( ( { composer } ) => {
132+ composer . updateConfig ( {
133+ drafts : {
134+ enabled : true ,
135+ } ,
136+ } ) ;
137+
138+ setupCommandUIMiddlewares ( composer ) ;
139+
140+ composer . textComposer . middlewareExecutor . insert ( {
141+ middleware : [
142+ createTextComposerEmojiMiddleware ( {
143+ emojiSearchIndex : SearchIndex ,
144+ } ) as TextComposerMiddleware ,
145+ ] ,
146+ position : { after : 'stream-io/text-composer/mentions-middleware' } ,
147+ unique : true ,
148+ } ) ;
149+ } ) ;
150+ } , [ chatClient ] ) ;
151+
121152 return (
122153 < SafeAreaProvider
123154 style = { {
@@ -169,12 +200,11 @@ const isMessageAIGenerated = (message: LocalMessage) => !!message.ai_generated;
169200const DrawerNavigatorWrapper : React . FC < {
170201 chatClient : StreamChat ;
171202} > = ( { chatClient } ) => {
172- const { bottom } = useSafeAreaInsets ( ) ;
173203 const streamChatTheme = useStreamChatTheme ( ) ;
174204
175205 return (
176206 < GestureHandlerRootView style = { { flex : 1 } } >
177- < OverlayProvider bottomInset = { bottom } value = { { style : streamChatTheme } } >
207+ < OverlayProvider value = { { style : streamChatTheme } } >
178208 < Chat
179209 client = { chatClient }
180210 enableOfflineSupport
0 commit comments