diff options
Diffstat (limited to 'src/screens/Search/modules/ExploreTrendingTopics.tsx')
-rw-r--r-- | src/screens/Search/modules/ExploreTrendingTopics.tsx | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/screens/Search/modules/ExploreTrendingTopics.tsx b/src/screens/Search/modules/ExploreTrendingTopics.tsx index 88d16b393..75ca19351 100644 --- a/src/screens/Search/modules/ExploreTrendingTopics.tsx +++ b/src/screens/Search/modules/ExploreTrendingTopics.tsx @@ -1,9 +1,11 @@ +import {useMemo} from 'react' import {Pressable, View} from 'react-native' -import {type AppBskyUnspeccedDefs} from '@atproto/api' +import {type AppBskyUnspeccedDefs, moderateProfile} from '@atproto/api' import {msg, plural, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {logger} from '#/logger' +import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useTrendingSettings} from '#/state/preferences/trending' import {useGetTrendsQuery} from '#/state/queries/trending/useGetTrendsQuery' import {useTrendingConfig} from '#/state/trending-config' @@ -78,6 +80,8 @@ export function TrendRow({ ) : null + const actors = useModerateTrendingActors(trend.actors) + return ( <Link testID={trend.link} @@ -118,8 +122,8 @@ export function TrendRow({ a.align_center, {paddingLeft: 20}, ]}> - {trend.actors.length > 0 && ( - <AvatarStack size={20} profiles={trend.actors} /> + {actors.length > 0 && ( + <AvatarStack size={20} profiles={actors} /> )} <Text style={[ @@ -276,3 +280,20 @@ export function TrendingTopicRowSkeleton({}: {withPosts: boolean}) { </View> ) } + +function useModerateTrendingActors( + actors: AppBskyUnspeccedDefs.TrendView['actors'], +) { + const moderationOpts = useModerationOpts() + + return useMemo(() => { + if (!moderationOpts) return [] + + return actors + .filter(actor => { + const decision = moderateProfile(actor, moderationOpts) + return !decision.ui('avatar').filter && !decision.ui('avatar').blur + }) + .slice(0, 3) + }, [actors, moderationOpts]) +} |