diff options
author | Hailey <me@haileyok.com> | 2024-08-20 15:43:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-20 15:43:40 -0700 |
commit | 723896a45f0fdf9612e5b6bb2a82ac7e894928ba (patch) | |
tree | 3822c9fa69da8d9ad771a2da49c69af9ca435669 /src/components/ListCard.tsx | |
parent | e54298ec2c9a04aabe40ee7719962e2e33be23ec (diff) | |
download | voidsky-723896a45f0fdf9612e5b6bb2a82ac7e894928ba.tar.zst |
Add `list hidden` screen (#4958)
Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src/components/ListCard.tsx')
-rw-r--r-- | src/components/ListCard.tsx | 48 |
1 files changed, 42 insertions, 6 deletions
diff --git a/src/components/ListCard.tsx b/src/components/ListCard.tsx index 0ed27cf50..829f36d47 100644 --- a/src/components/ListCard.tsx +++ b/src/components/ListCard.tsx @@ -1,13 +1,20 @@ import React from 'react' import {View} from 'react-native' -import {AppBskyActorDefs, AppBskyGraphDefs, AtUri} from '@atproto/api' +import { + AppBskyActorDefs, + AppBskyGraphDefs, + AtUri, + moderateUserList, + ModerationUI, +} from '@atproto/api' import {Trans} from '@lingui/macro' 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 {useTheme} from '#/alf' -import {atoms as a} from '#/alf' +import {useSession} from 'state/session' +import {atoms as a, useTheme} from '#/alf' import { Avatar, Description, @@ -16,6 +23,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' /* @@ -43,6 +51,11 @@ type Props = { export function Default(props: Props) { const {view, showPinButton} = props + const moderationOpts = useModerationOpts() + const moderation = moderationOpts + ? moderateUserList(view, moderationOpts) + : undefined + return ( <Link {...props}> <Outer> @@ -52,6 +65,7 @@ export function Default(props: Props) { title={view.name} creator={view.creator} purpose={view.purpose} + modUi={moderation?.ui('contentView')} /> {showPinButton && view.purpose === CURATELIST && ( <SaveButton view={view} pin /> @@ -89,18 +103,40 @@ export function TitleAndByline({ title, creator, purpose = CURATELIST, + modUi, }: { title: string creator?: AppBskyActorDefs.ProfileViewBasic purpose?: AppBskyGraphDefs.ListView['purpose'] + modUi?: ModerationUI }) { const t = useTheme() + const {currentAccount} = useSession() return ( <View style={[a.flex_1]}> - <Text style={[a.text_md, a.font_bold, a.leading_snug]} numberOfLines={1}> - {title} - </Text> + <Hider.Outer + modui={modUi} + isContentVisibleInitialState={ + creator && currentAccount?.did === creator.did + } + allowOverride={creator && currentAccount?.did === creator.did}> + <Hider.Mask> + <Text + style={[a.text_md, a.font_bold, a.leading_snug, a.italic]} + numberOfLines={1}> + <Trans>Hidden list</Trans> + </Text> + </Hider.Mask> + <Hider.Content> + <Text + style={[a.text_md, a.font_bold, a.leading_snug]} + numberOfLines={1}> + {title} + </Text> + </Hider.Content> + </Hider.Outer> + {creator && ( <Text style={[a.leading_snug, t.atoms.text_contrast_medium]} |