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 functionszio/stable
parent
dc3c81c4e2
commit
6694a33603
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue