about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorSamuel Newman <mozzius@protonmail.com>2025-04-04 17:24:43 +0300
committerGitHub <noreply@github.com>2025-04-04 07:24:43 -0700
commitfa08428428719c4c1adea98f3c71b77a9c373894 (patch)
treed119dfd51704423434bb72ed11b9289f70e8a074 /src
parent93af013210ce63db458edae9cbd8970a2bb2a0cb (diff)
downloadvoidsky-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.tsx2
-rw-r--r--src/screens/Search/modules/ExploreTrendingTopics.tsx27
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])
+}