diff options
author | Samuel Newman <mozzius@protonmail.com> | 2025-04-04 17:24:43 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-04-04 07:24:43 -0700 |
commit | fa08428428719c4c1adea98f3c71b77a9c373894 (patch) | |
tree | d119dfd51704423434bb72ed11b9289f70e8a074 /src | |
parent | 93af013210ce63db458edae9cbd8970a2bb2a0cb (diff) | |
download | voidsky-fa08428428719c4c1adea98f3c71b77a9c373894.tar.zst |
[Explore] Moderate trending topic avis (#8123)
* moderate trending topic avis * filter blurs too
Diffstat (limited to 'src')
-rw-r--r-- | src/components/AvatarStack.tsx | 2 | ||||
-rw-r--r-- | src/screens/Search/modules/ExploreTrendingTopics.tsx | 27 |
2 files changed, 25 insertions, 4 deletions
diff --git a/src/components/AvatarStack.tsx b/src/components/AvatarStack.tsx index 63f5ed77a..a341a2061 100644 --- a/src/components/AvatarStack.tsx +++ b/src/components/AvatarStack.tsx @@ -6,7 +6,7 @@ import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useProfilesQuery} from '#/state/queries/profile' import {UserAvatar} from '#/view/com/util/UserAvatar' import {atoms as a, useTheme} from '#/alf' -import * as bsky from '#/types/bsky' +import type * as bsky from '#/types/bsky' export function AvatarStack({ profiles, 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]) +} |