loosen types

This commit is contained in:
Hailey
2024-08-20 14:28:54 -07:00
parent 34e891623f
commit a94223d946
3 changed files with 30 additions and 34 deletions
+22 -26
View File
@@ -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
+6 -6
View File
@@ -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]}>