diff options
author | Hailey <me@haileyok.com> | 2024-07-02 19:50:04 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-03 03:50:04 +0100 |
commit | 6694a33603544511441474819216d51482d19827 (patch) | |
tree | 3f393e3598ec4f9928d637b179ed2307d2b3daf4 /src | |
parent | dc3c81c4e2923e0ab884adf119bd33c510db1f4a (diff) | |
download | voidsky-6694a33603544511441474819216d51482d19827.tar.zst |
Don't follow self, blocks or mute when following all; don't show blocks in list (#4715)
* don't follow self when following all * also filter blocks * add more filtering to follow all * extract logic to functions
Diffstat (limited to 'src')
-rw-r--r-- | src/components/StarterPack/Main/ProfilesList.tsx | 3 | ||||
-rw-r--r-- | src/lib/moderation/blocked-and-muted.ts | 17 | ||||
-rw-r--r-- | src/screens/StarterPack/StarterPackScreen.tsx | 9 |
3 files changed, 27 insertions, 2 deletions
diff --git a/src/components/StarterPack/Main/ProfilesList.tsx b/src/components/StarterPack/Main/ProfilesList.tsx index 7691e7222..0cc911d66 100644 --- a/src/components/StarterPack/Main/ProfilesList.tsx +++ b/src/components/StarterPack/Main/ProfilesList.tsx @@ -9,6 +9,7 @@ import { import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query' import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' +import {isBlockedOrBlocking} from 'lib/moderation/blocked-and-muted' import {isNative, isWeb} from 'platform/detection' import {useSession} from 'state/session' import {List, ListRef} from 'view/com/util/List' @@ -47,7 +48,7 @@ export const ProfilesList = React.forwardRef<SectionRef, ProfilesListProps>( // The server returns these sorted by descending creation date, so we want to invert const profiles = data?.pages .flatMap(p => p.items.map(i => i.subject)) - .filter(p => !p.associated?.labeler) + .filter(p => !isBlockedOrBlocking(p) && !p.associated?.labeler) .reverse() const isOwn = new AtUri(listUri).host === currentAccount?.did diff --git a/src/lib/moderation/blocked-and-muted.ts b/src/lib/moderation/blocked-and-muted.ts new file mode 100644 index 000000000..18e6ef3e3 --- /dev/null +++ b/src/lib/moderation/blocked-and-muted.ts @@ -0,0 +1,17 @@ +import {AppBskyActorDefs} from '@atproto/api' + +export function isBlockedOrBlocking( + profile: + | AppBskyActorDefs.ProfileViewBasic + | AppBskyActorDefs.ProfileViewDetailed, +) { + return profile.viewer?.blockedBy || profile.viewer?.blocking +} + +export function isMuted( + profile: + | AppBskyActorDefs.ProfileViewBasic + | AppBskyActorDefs.ProfileViewDetailed, +) { + return profile.viewer?.muted || profile.viewer?.mutedByList +} diff --git a/src/screens/StarterPack/StarterPackScreen.tsx b/src/screens/StarterPack/StarterPackScreen.tsx index b80687aff..2b6f673b1 100644 --- a/src/screens/StarterPack/StarterPackScreen.tsx +++ b/src/screens/StarterPack/StarterPackScreen.tsx @@ -25,6 +25,7 @@ import {logger} from '#/logger' import {useDeleteStarterPackMutation} from '#/state/queries/starter-packs' import {batchedUpdates} from 'lib/batchedUpdates' import {HITSLOP_20} from 'lib/constants' +import {isBlockedOrBlocking, isMuted} from 'lib/moderation/blocked-and-muted' import {makeProfileLink, makeStarterPackLink} from 'lib/routes/links' import {CommonNavigatorParams, NavigationProp} from 'lib/routes/types' import {logEvent} from 'lib/statsig/statsig' @@ -344,7 +345,13 @@ function Header({ list: starterPack.list.uri, }) const dids = list.data.items - .filter(li => !li.subject.viewer?.following) + .filter( + li => + li.subject.did !== currentAccount?.did && + !isBlockedOrBlocking(li.subject) && + !isMuted(li.subject) && + !li.subject.viewer?.following, + ) .map(li => li.subject.did) const followUris = await bulkWriteFollows(agent, dids) |