diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 724043e586..44dd802d24 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -23,6 +23,7 @@ import {logger} from '#/logger' import {STALE} from '#/state/queries' import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const' import {useAgent} from '#/state/session' +import {useThreadgateHiddenReplyUris} from '#/state/threadgate-hidden-replies' import * as userActionHistory from '#/state/userActionHistory' import {AuthorFeedAPI} from 'lib/api/feed/author' import {CustomFeedAPI} from 'lib/api/feed/custom' @@ -135,6 +136,7 @@ export function usePostFeedQuery( result: InfiniteData } | null>(null) const isDiscover = feedDesc.includes(DISCOVER_FEED_URI) + const {uris: hiddenReplyUris} = useThreadgateHiddenReplyUris() // Make sure this doesn't invalidate unless really needed. const selectArgs = React.useMemo( @@ -143,8 +145,15 @@ export function usePostFeedQuery( moderationOpts, ignoreFilterFor: opts?.ignoreFilterFor, isDiscover, + hiddenReplyUris, }), - [feedTuners, moderationOpts, opts?.ignoreFilterFor, isDiscover], + [ + feedTuners, + moderationOpts, + opts?.ignoreFilterFor, + isDiscover, + hiddenReplyUris, + ], ) const query = useInfiniteQuery< @@ -223,8 +232,13 @@ export function usePostFeedQuery( (data: InfiniteData) => { // If the selection depends on some data, that data should // be included in the selectArgs object and read here. - const {feedTuners, moderationOpts, ignoreFilterFor, isDiscover} = - selectArgs + const { + feedTuners, + moderationOpts, + ignoreFilterFor, + isDiscover, + hiddenReplyUris, + } = selectArgs const tuner = new FeedTuner(feedTuners) @@ -317,18 +331,22 @@ export function usePostFeedQuery( isFallbackMarker: slice.isFallbackMarker, feedContext: slice.feedContext, reason: slice.reason, - items: slice.items.map((item, i) => { - const feedPostSliceItem: FeedPostSliceItem = { - _reactKey: `${slice._reactKey}-${i}-${item.post.uri}`, - uri: item.post.uri, - post: item.post, - record: item.record, - moderation: moderations[i], - parentAuthor: item.parentAuthor, - isParentBlocked: item.isParentBlocked, - } - return feedPostSliceItem - }), + items: slice.items + .filter(item => { + return !hiddenReplyUris.includes(item.post.uri) + }) + .map((item, i) => { + const feedPostSliceItem: FeedPostSliceItem = { + _reactKey: `${slice._reactKey}-${i}-${item.post.uri}`, + uri: item.post.uri, + post: item.post, + record: item.record, + moderation: moderations[i], + parentAuthor: item.parentAuthor, + isParentBlocked: item.isParentBlocked, + } + return feedPostSliceItem + }), } return feedPostSlice })