about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/state/models/feeds/posts.ts10
-rw-r--r--src/view/screens/Home.tsx28
2 files changed, 31 insertions, 7 deletions
diff --git a/src/state/models/feeds/posts.ts b/src/state/models/feeds/posts.ts
index 58167284d..dd342775e 100644
--- a/src/state/models/feeds/posts.ts
+++ b/src/state/models/feeds/posts.ts
@@ -294,12 +294,10 @@ export class PostsFeedModel {
         const isRepost =
           item?.reasonRepost?.by?.handle === params.actor ||
           item?.reasonRepost?.by?.did === params.actor
-        return (
-          !item.reply || // not a reply
-          isRepost || // but allow if it's a repost
-          (slice.isThread && // or a thread by the user
-            item.reply?.root.author.did === item.post.author.did)
-        )
+        const allow =
+          !item.postRecord?.reply || // not a reply
+          isRepost // but allow if it's a repost
+        return allow
       })
     } else {
       return this.slices
diff --git a/src/view/screens/Home.tsx b/src/view/screens/Home.tsx
index ae526dea5..d1677e548 100644
--- a/src/view/screens/Home.tsx
+++ b/src/view/screens/Home.tsx
@@ -6,6 +6,7 @@ import useAppState from 'react-native-appstate-hook'
 import {NativeStackScreenProps, HomeTabNavigatorParams} from 'lib/routes/types'
 import {PostsFeedModel} from 'state/models/feeds/posts'
 import {withAuthRequired} from 'view/com/auth/withAuthRequired'
+import {useTabFocusEffect} from 'lib/hooks/useTabFocusEffect'
 import {Feed} from '../com/posts/Feed'
 import {FollowingEmptyState} from 'view/com/posts/FollowingEmptyState'
 import {LoadLatestBtn} from '../com/util/load-latest/LoadLatestBtn'
@@ -143,9 +144,10 @@ const FeedPage = observer(
 
     const onSoftReset = React.useCallback(() => {
       if (isPageFocused) {
+        feed.refresh()
         scrollToTop()
       }
-    }, [isPageFocused, scrollToTop])
+    }, [isPageFocused, scrollToTop, feed])
 
     useFocusEffect(
       React.useCallback(() => {
@@ -166,6 +168,30 @@ const FeedPage = observer(
         }
       }, [store, doPoll, onSoftReset, screen, feed]),
     )
+    useTabFocusEffect(
+      'Home',
+      React.useCallback(
+        isInside => {
+          if (!isPageFocused) {
+            return
+          }
+          // on mobile:
+          // fires with `isInside=true` when the user navigates to the root tab
+          // but not when the user goes back to the screen by pressing back
+          // on web:
+          // essentially equivalent to useFocusEffect because we dont used tabbed
+          // navigation
+          if (isInside) {
+            if (feed.hasNewLatest) {
+              feed.refresh()
+            } else {
+              feed.checkForLatest()
+            }
+          }
+        },
+        [isPageFocused, feed],
+      ),
+    )
 
     const onPressCompose = React.useCallback(() => {
       track('HomeScreen:PressCompose')