@@ -6,10 +6,10 @@ import { createStackNavigator } from '@react-navigation/stack';
66import { SafeAreaProvider } from 'react-native-safe-area-context' ;
77import {
88 Chat ,
9+ createTextComposerEmojiMiddleware ,
910 OverlayProvider ,
1011 SqliteClient ,
1112 ThemeProvider ,
12- useChatContext ,
1313 useOverlayContext ,
1414} from 'stream-chat-react-native' ;
1515import { getMessaging } from '@react-native-firebase/messaging' ;
@@ -35,8 +35,12 @@ import { OneOnOneChannelDetailScreen } from './src/screens/OneOnOneChannelDetail
3535import { SharedGroupsScreen } from './src/screens/SharedGroupsScreen' ;
3636import { ThreadScreen } from './src/screens/ThreadScreen' ;
3737import { UserSelectorScreen } from './src/screens/UserSelectorScreen' ;
38+ import { init , SearchIndex } from 'emoji-mart' ;
39+ import data from '@emoji-mart/data' ;
3840
39- import type { LocalMessage , StreamChat } from 'stream-chat' ;
41+ import type { LocalMessage , StreamChat , TextComposerMiddleware } from 'stream-chat' ;
42+
43+ init ( { data } ) ;
4044
4145if ( __DEV__ ) {
4246 DevSettings . addMenuItem ( 'Reset local DB (offline storage)' , ( ) => {
@@ -119,6 +123,25 @@ const App = () => {
119123 } ;
120124 } , [ ] ) ;
121125
126+ useEffect ( ( ) => {
127+ if ( ! chatClient ) {
128+ return ;
129+ }
130+ chatClient . setMessageComposerSetupFunction ( ( { composer } ) => {
131+ composer . updateConfig ( {
132+ drafts : {
133+ enabled : true ,
134+ } ,
135+ } ) ;
136+
137+ composer . textComposer . middlewareExecutor . insert ( {
138+ middleware : [ createTextComposerEmojiMiddleware ( SearchIndex ) as TextComposerMiddleware ] ,
139+ position : { after : 'stream-io/text-composer/mentions-middleware' } ,
140+ unique : true ,
141+ } ) ;
142+ } ) ;
143+ } , [ chatClient ] ) ;
144+
122145 return (
123146 < SafeAreaProvider
124147 style = { {
@@ -212,19 +235,6 @@ const UserSelector = () => (
212235const HomeScreen = ( ) => {
213236 const { overlay } = useOverlayContext ( ) ;
214237
215- const { client : chatClient } = useChatContext ( ) ;
216-
217- useEffect ( ( ) => {
218- chatClient . setMessageComposerSetupFunction ( ( { composer } ) => {
219- console . log ( 'Setting up message composer:' , composer . tag ) ;
220- composer . updateConfig ( {
221- drafts : {
222- enabled : true ,
223- } ,
224- } ) ;
225- } ) ;
226- } , [ chatClient ] ) ;
227-
228238 return (
229239 < Stack . Navigator
230240 initialRouteName = { initialChannelIdGlobalRef . current ? 'ChannelScreen' : 'MessagingScreen' }
0 commit comments