loosen types
This commit is contained in:
+22
-26
@@ -5,6 +5,7 @@ import {
|
|||||||
AppBskyGraphDefs,
|
AppBskyGraphDefs,
|
||||||
AtUri,
|
AtUri,
|
||||||
moderateUserList,
|
moderateUserList,
|
||||||
|
ModerationUI,
|
||||||
} from '@atproto/api'
|
} from '@atproto/api'
|
||||||
import {Trans} from '@lingui/macro'
|
import {Trans} from '@lingui/macro'
|
||||||
import {useQueryClient} from '@tanstack/react-query'
|
import {useQueryClient} from '@tanstack/react-query'
|
||||||
@@ -12,9 +13,7 @@ import {useQueryClient} from '@tanstack/react-query'
|
|||||||
import {sanitizeHandle} from 'lib/strings/handles'
|
import {sanitizeHandle} from 'lib/strings/handles'
|
||||||
import {useModerationOpts} from 'state/preferences/moderation-opts'
|
import {useModerationOpts} from 'state/preferences/moderation-opts'
|
||||||
import {precacheList} from 'state/queries/feed'
|
import {precacheList} from 'state/queries/feed'
|
||||||
import {useSession} from 'state/session'
|
import {atoms as a, useTheme} from '#/alf'
|
||||||
import {useTheme} from '#/alf'
|
|
||||||
import {atoms as a} from '#/alf'
|
|
||||||
import {
|
import {
|
||||||
Avatar,
|
Avatar,
|
||||||
Description,
|
Description,
|
||||||
@@ -23,6 +22,7 @@ import {
|
|||||||
SaveButton,
|
SaveButton,
|
||||||
} from '#/components/FeedCard'
|
} from '#/components/FeedCard'
|
||||||
import {Link as InternalLink, LinkProps} from '#/components/Link'
|
import {Link as InternalLink, LinkProps} from '#/components/Link'
|
||||||
|
import * as Hider from '#/components/moderation/Hider'
|
||||||
import {Text} from '#/components/Typography'
|
import {Text} from '#/components/Typography'
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -50,17 +50,10 @@ type Props = {
|
|||||||
|
|
||||||
export function Default(props: Props) {
|
export function Default(props: Props) {
|
||||||
const {view, showPinButton} = props
|
const {view, showPinButton} = props
|
||||||
const {currentAccount} = useSession()
|
|
||||||
const moderationOpts = useModerationOpts()
|
const moderationOpts = useModerationOpts()
|
||||||
|
|
||||||
const moderation = moderationOpts
|
const moderation = moderationOpts
|
||||||
? moderateUserList(view, moderationOpts)
|
? moderateUserList(view, moderationOpts)
|
||||||
: undefined
|
: undefined
|
||||||
const modUi = moderation?.ui('contentView')
|
|
||||||
const isBlurred = Boolean(modUi?.blurs[0])
|
|
||||||
|
|
||||||
const isOwner = currentAccount?.did === view.creator.did
|
|
||||||
const isTitleHidden = !isOwner && isBlurred
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link {...props}>
|
<Link {...props}>
|
||||||
@@ -71,7 +64,7 @@ export function Default(props: Props) {
|
|||||||
title={view.name}
|
title={view.name}
|
||||||
creator={view.creator}
|
creator={view.creator}
|
||||||
purpose={view.purpose}
|
purpose={view.purpose}
|
||||||
isHidden={isTitleHidden}
|
modUi={moderation?.ui('contentView')}
|
||||||
/>
|
/>
|
||||||
{showPinButton && view.purpose === CURATELIST && (
|
{showPinButton && view.purpose === CURATELIST && (
|
||||||
<SaveButton view={view} pin />
|
<SaveButton view={view} pin />
|
||||||
@@ -109,30 +102,33 @@ export function TitleAndByline({
|
|||||||
title,
|
title,
|
||||||
creator,
|
creator,
|
||||||
purpose = CURATELIST,
|
purpose = CURATELIST,
|
||||||
isHidden,
|
modUi,
|
||||||
}: {
|
}: {
|
||||||
title: string
|
title: string
|
||||||
creator?: AppBskyActorDefs.ProfileViewBasic
|
creator?: AppBskyActorDefs.ProfileViewBasic
|
||||||
purpose?: AppBskyGraphDefs.ListView['purpose']
|
purpose?: AppBskyGraphDefs.ListView['purpose']
|
||||||
isHidden?: boolean
|
modUi?: ModerationUI
|
||||||
}) {
|
}) {
|
||||||
const t = useTheme()
|
const t = useTheme()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={[a.flex_1]}>
|
<View style={[a.flex_1]}>
|
||||||
{isHidden ? (
|
<Hider.Outer modui={modUi}>
|
||||||
<Text
|
<Hider.Mask>
|
||||||
style={[a.text_md, a.font_bold, a.leading_snug, a.italic]}
|
<Text
|
||||||
numberOfLines={1}>
|
style={[a.text_md, a.font_bold, a.leading_snug, a.italic]}
|
||||||
<Trans>Hidden list</Trans>
|
numberOfLines={1}>
|
||||||
</Text>
|
<Trans>Hidden list</Trans>
|
||||||
) : (
|
</Text>
|
||||||
<Text
|
</Hider.Mask>
|
||||||
style={[a.text_md, a.font_bold, a.leading_snug]}
|
<Hider.Content>
|
||||||
numberOfLines={1}>
|
<Text
|
||||||
{title}
|
style={[a.text_md, a.font_bold, a.leading_snug]}
|
||||||
</Text>
|
numberOfLines={1}>
|
||||||
)}
|
{title}
|
||||||
|
</Text>
|
||||||
|
</Hider.Content>
|
||||||
|
</Hider.Outer>
|
||||||
|
|
||||||
{creator && (
|
{creator && (
|
||||||
<Text
|
<Text
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ type Context = {
|
|||||||
info: ModerationCauseDescription
|
info: ModerationCauseDescription
|
||||||
showInfoDialog: () => void
|
showInfoDialog: () => void
|
||||||
meta: {
|
meta: {
|
||||||
isNoPwi: boolean
|
isNoPwi?: boolean
|
||||||
noOverride: boolean
|
noOverride?: boolean
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,22 +29,22 @@ export function Outer({
|
|||||||
modui,
|
modui,
|
||||||
children,
|
children,
|
||||||
}: React.PropsWithChildren<{
|
}: React.PropsWithChildren<{
|
||||||
modui: ModerationUI
|
modui?: ModerationUI
|
||||||
}>) {
|
}>) {
|
||||||
const control = useModerationDetailsDialogControl()
|
const control = useModerationDetailsDialogControl()
|
||||||
const blur = modui.blurs[0]
|
const blur = modui?.blurs[0]
|
||||||
const [isContentVisible, setIsContentVisible] = React.useState(!blur)
|
const [isContentVisible, setIsContentVisible] = React.useState(!blur)
|
||||||
const info = useModerationCauseDescription(blur)
|
const info = useModerationCauseDescription(blur)
|
||||||
|
|
||||||
const meta = {
|
const meta = {
|
||||||
isNoPwi: Boolean(
|
isNoPwi: Boolean(
|
||||||
modui.blurs.find(
|
modui?.blurs.find(
|
||||||
cause =>
|
cause =>
|
||||||
cause.type === 'label' &&
|
cause.type === 'label' &&
|
||||||
cause.labelDef.identifier === '!no-unauthenticated',
|
cause.labelDef.identifier === '!no-unauthenticated',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
noOverride: modui.noOverride,
|
noOverride: modui?.noOverride,
|
||||||
}
|
}
|
||||||
|
|
||||||
const showInfoDialog = () => {
|
const showInfoDialog = () => {
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export {useDialogControl as useModerationDetailsDialogControl} from '#/component
|
|||||||
|
|
||||||
export interface ModerationDetailsDialogProps {
|
export interface ModerationDetailsDialogProps {
|
||||||
control: Dialog.DialogOuterProps['control']
|
control: Dialog.DialogOuterProps['control']
|
||||||
modcause: ModerationCause
|
modcause?: ModerationCause
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ModerationDetailsDialog(props: ModerationDetailsDialogProps) {
|
export function ModerationDetailsDialog(props: ModerationDetailsDialogProps) {
|
||||||
@@ -123,7 +123,7 @@ function ModerationDetailsDialogInner({
|
|||||||
{description}
|
{description}
|
||||||
</Text>
|
</Text>
|
||||||
|
|
||||||
{modcause.type === 'label' && (
|
{modcause?.type === 'label' && (
|
||||||
<>
|
<>
|
||||||
<Divider />
|
<Divider />
|
||||||
<Text style={[t.atoms.text, a.text_md, a.leading_snug, a.mt_lg]}>
|
<Text style={[t.atoms.text, a.text_md, a.leading_snug, a.mt_lg]}>
|
||||||
|
|||||||
Reference in New Issue
Block a user