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
zio/stable
Paul Frazee 2023-04-22 18:35:12 -05:00 committed by GitHub
parent d35f7c1f1a
commit 5085861b9a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 7 deletions

View File

@ -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

View File

@ -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')