1- import React , { useEffect , useState } from 'react' ;
1+ import React , { useCallback , useEffect , useRef , useState } from 'react' ;
22import { SafeAreaView , StyleSheet , Text , View } from 'react-native' ;
33
44import { FlatList } from 'react-native-bidirectional-infinite-scroll' ;
55import { MessageBubble } from './MessageBubble' ;
66import { Message , queryMoreMessages } from './utils' ;
77
8+ const ItemSeparatorComponent = ( ) => < View style = { {
9+ borderBottomColor : 'black' ,
10+ height : 0 ,
11+ borderBottomWidth : 1 ,
12+ marginVertical : 10
13+ } } /> ;
14+
815const App = ( ) => {
916 const [ messages , setMessages ] = useState < Array < Message > > ( [ ] ) ;
17+ const flRef = useRef ( null ) ;
1018 useEffect ( ( ) => {
1119 const initChat = async ( ) => {
12- const initialMessages = await queryMoreMessages ( 50 ) ;
20+ const initialMessages = await queryMoreMessages ( 50 , null , null ) ;
1321 if ( ! initialMessages ) return ;
1422
1523 setMessages ( initialMessages ) ;
@@ -19,18 +27,19 @@ const App = () => {
1927 } , [ ] ) ;
2028
2129 const loadMoreOlderMessages = async ( ) => {
22- const newMessages = await queryMoreMessages ( 10 ) ;
23- setMessages ( ( m ) => {
24- return m . concat ( newMessages ) ;
25- } ) ;
30+ const newMessages = await queryMoreMessages ( 10 , null , messages [ messages . length - 1 ] . id ) ;
31+ setMessages ( ( m ) => {
32+ return m . concat ( newMessages ) ;
33+ } ) ;
2634 } ;
2735
28- const loadMoreRecentMessages = async ( ) => {
29- const newMessages = await queryMoreMessages ( 10 ) ;
36+ const loadMoreRecentMessages = useCallback ( async ( ) => {
37+ const newMessages = await queryMoreMessages ( 10 , messages [ 0 ] . id , null ) ;
38+ console . log ( 'loadMoreRecentMessages before ' , messages [ 0 ] . id )
3039 setMessages ( ( m ) => {
3140 return newMessages . concat ( m ) ;
3241 } ) ;
33- } ;
42+ } , [ messages ] ) ;
3443
3544 if ( ! messages . length ) {
3645 return null ;
@@ -43,9 +52,11 @@ const App = () => {
4352 </ View >
4453 < FlatList
4554 data = { messages }
46- inverted
55+ ref = { flRef }
4756 onEndReached = { loadMoreOlderMessages }
4857 onStartReached = { loadMoreRecentMessages }
58+ // inverted
59+ // onRefresh={loadMoreRecentMessages}
4960 renderItem = { MessageBubble }
5061 />
5162 </ SafeAreaView >
0 commit comments