diff options
Diffstat (limited to 'src/view/com')
-rw-r--r-- | src/view/com/feed/Feed.tsx | 4 | ||||
-rw-r--r-- | src/view/com/post-thread/PostThread.tsx | 11 |
2 files changed, 14 insertions, 1 deletions
diff --git a/src/view/com/feed/Feed.tsx b/src/view/com/feed/Feed.tsx index fe9d350d1..c666fc05e 100644 --- a/src/view/com/feed/Feed.tsx +++ b/src/view/com/feed/Feed.tsx @@ -27,7 +27,9 @@ export const Feed = observer(function Feed({ } return ( <View> - {feed.isLoading && !feed.isRefreshing && <Text>Loading...</Text>} + {feed.isLoading && !feed.isRefreshing && !feed.hasContent && ( + <Text>Loading...</Text> + )} {feed.hasError && <Text>{feed.error}</Text>} {feed.hasContent && ( <FlatList diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx index 8f70e1493..bc9562ea1 100644 --- a/src/view/com/post-thread/PostThread.tsx +++ b/src/view/com/post-thread/PostThread.tsx @@ -1,6 +1,7 @@ import React, {useState, useEffect} from 'react' import {observer} from 'mobx-react-lite' import {ActivityIndicator, FlatList, Text, View} from 'react-native' +import {useFocusEffect} from '@react-navigation/native' import {OnNavigateContent} from '../../routes/types' import { PostThreadViewModel, @@ -9,6 +10,8 @@ import { import {useStores} from '../../../state' import {PostThreadItem} from './PostThreadItem' +const UPDATE_DELAY = 2e3 // wait 2s before refetching the thread for updates + export const PostThread = observer(function PostThread({ uri, onNavigateContent, @@ -18,6 +21,7 @@ export const PostThread = observer(function PostThread({ }) { const store = useStores() const [view, setView] = useState<PostThreadViewModel | undefined>() + const [lastUpdate, setLastUpdate] = useState<number>(Date.now()) useEffect(() => { if (view?.params.uri === uri) { @@ -30,6 +34,13 @@ export const PostThread = observer(function PostThread({ newView.setup().catch(err => console.error('Failed to fetch thread', err)) }, [uri, view?.params.uri, store]) + useFocusEffect(() => { + if (Date.now() - lastUpdate > UPDATE_DELAY) { + view?.update() + setLastUpdate(Date.now()) + } + }) + // loading // = if ( |