diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 19f38d0625..a713e76292 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -1,4 +1,4 @@ -import React, {MutableRefObject, useEffect} from 'react' +import React, {MutableRefObject} from 'react' import {observer} from 'mobx-react-lite' import { ActivityIndicator, @@ -38,8 +38,9 @@ export const Feed = observer(function Feed({ headerOffset?: number }) { const {screen, track} = useAnalytics() + const [isRefreshing, setIsRefreshing] = React.useState(false) - useEffect(() => { + React.useEffect(() => { screen('Feed') }, [screen]) @@ -63,19 +64,23 @@ export const Feed = observer(function Feed({ } return } - const onRefresh = () => { + const onRefresh = async () => { track('Feed:onRefresh') - feed - .refresh() - .catch(err => - feed.rootStore.log.error('Failed to refresh posts feed', err), - ) + setIsRefreshing(true) + try { + await feed.refresh() + } catch (err) { + feed.rootStore.log.error('Failed to refresh posts feed', err) + } + setIsRefreshing(false) } - const onEndReached = () => { + const onEndReached = async () => { track('Feed:onEndReached') - feed - .loadMore() - .catch(err => feed.rootStore.log.error('Failed to load more posts', err)) + try { + await feed.loadMore() + } catch (err) { + feed.rootStore.log.error('Failed to load more posts', err) + } } let data: any[] = [] if (feed.hasError) { @@ -110,7 +115,7 @@ export const Feed = observer(function Feed({ keyExtractor={item => item._reactKey} renderItem={renderItem} ListFooterComponent={FeedFooter} - refreshing={feed.isRefreshing} + refreshing={isRefreshing} contentContainerStyle={s.contentContainer} onScroll={onScroll} onRefresh={onRefresh}