about summary refs log tree commit diff
path: root/src/view/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com')
-rw-r--r--src/view/com/feed/Feed.tsx4
-rw-r--r--src/view/com/post-thread/PostThread.tsx11
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 (