diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-04-22 18:35:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-22 18:35:12 -0500 |
commit | 5085861b9ac0684d8eedb2a8d54453d3f23cde46 (patch) | |
tree | ec83207869ea31783257dfdfe29cb7258828f8bc /src | |
parent | d35f7c1f1a9f35958ff3f6dacd002e31b0a824b0 (diff) | |
download | voidsky-5085861b9ac0684d8eedb2a8d54453d3f23cde46.tar.zst |
Feed fixes: repeat posts & nonreplies showing up in the wrong place (#516)
* Fix the repeat posts issue on the home feed * Fix: replies no longer show up in the no-replies feed
Diffstat (limited to 'src')
-rw-r--r-- | src/state/models/feeds/posts.ts | 10 | ||||
-rw-r--r-- | src/view/screens/Home.tsx | 28 |
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') |