diff --git a/src/components/ListCard.tsx b/src/components/ListCard.tsx
index fd43636b0f..d29627a4ca 100644
--- a/src/components/ListCard.tsx
+++ b/src/components/ListCard.tsx
@@ -5,6 +5,7 @@ import {
AppBskyGraphDefs,
AtUri,
moderateUserList,
+ ModerationUI,
} from '@atproto/api'
import {Trans} from '@lingui/macro'
import {useQueryClient} from '@tanstack/react-query'
@@ -12,9 +13,7 @@ import {useQueryClient} from '@tanstack/react-query'
import {sanitizeHandle} from 'lib/strings/handles'
import {useModerationOpts} from 'state/preferences/moderation-opts'
import {precacheList} from 'state/queries/feed'
-import {useSession} from 'state/session'
-import {useTheme} from '#/alf'
-import {atoms as a} from '#/alf'
+import {atoms as a, useTheme} from '#/alf'
import {
Avatar,
Description,
@@ -23,6 +22,7 @@ import {
SaveButton,
} from '#/components/FeedCard'
import {Link as InternalLink, LinkProps} from '#/components/Link'
+import * as Hider from '#/components/moderation/Hider'
import {Text} from '#/components/Typography'
/*
@@ -50,17 +50,10 @@ type Props = {
export function Default(props: Props) {
const {view, showPinButton} = props
- const {currentAccount} = useSession()
const moderationOpts = useModerationOpts()
-
const moderation = moderationOpts
? moderateUserList(view, moderationOpts)
: undefined
- const modUi = moderation?.ui('contentView')
- const isBlurred = Boolean(modUi?.blurs[0])
-
- const isOwner = currentAccount?.did === view.creator.did
- const isTitleHidden = !isOwner && isBlurred
return (
@@ -71,7 +64,7 @@ export function Default(props: Props) {
title={view.name}
creator={view.creator}
purpose={view.purpose}
- isHidden={isTitleHidden}
+ modUi={moderation?.ui('contentView')}
/>
{showPinButton && view.purpose === CURATELIST && (
@@ -109,30 +102,33 @@ export function TitleAndByline({
title,
creator,
purpose = CURATELIST,
- isHidden,
+ modUi,
}: {
title: string
creator?: AppBskyActorDefs.ProfileViewBasic
purpose?: AppBskyGraphDefs.ListView['purpose']
- isHidden?: boolean
+ modUi?: ModerationUI
}) {
const t = useTheme()
return (
- {isHidden ? (
-
- Hidden list
-
- ) : (
-
- {title}
-
- )}
+
+
+
+ Hidden list
+
+
+
+
+ {title}
+
+
+
{creator && (
void
meta: {
- isNoPwi: boolean
- noOverride: boolean
+ isNoPwi?: boolean
+ noOverride?: boolean
}
}
@@ -29,22 +29,22 @@ export function Outer({
modui,
children,
}: React.PropsWithChildren<{
- modui: ModerationUI
+ modui?: ModerationUI
}>) {
const control = useModerationDetailsDialogControl()
- const blur = modui.blurs[0]
+ const blur = modui?.blurs[0]
const [isContentVisible, setIsContentVisible] = React.useState(!blur)
const info = useModerationCauseDescription(blur)
const meta = {
isNoPwi: Boolean(
- modui.blurs.find(
+ modui?.blurs.find(
cause =>
cause.type === 'label' &&
cause.labelDef.identifier === '!no-unauthenticated',
),
),
- noOverride: modui.noOverride,
+ noOverride: modui?.noOverride,
}
const showInfoDialog = () => {
diff --git a/src/components/moderation/ModerationDetailsDialog.tsx b/src/components/moderation/ModerationDetailsDialog.tsx
index ebfe452325..b8f02582c6 100644
--- a/src/components/moderation/ModerationDetailsDialog.tsx
+++ b/src/components/moderation/ModerationDetailsDialog.tsx
@@ -18,7 +18,7 @@ export {useDialogControl as useModerationDetailsDialogControl} from '#/component
export interface ModerationDetailsDialogProps {
control: Dialog.DialogOuterProps['control']
- modcause: ModerationCause
+ modcause?: ModerationCause
}
export function ModerationDetailsDialog(props: ModerationDetailsDialogProps) {
@@ -123,7 +123,7 @@ function ModerationDetailsDialogInner({
{description}
- {modcause.type === 'label' && (
+ {modcause?.type === 'label' && (
<>