import React, {ComponentProps} from 'react' import {StyleSheet, Pressable, View} from 'react-native' import {ModerationUI} from '@atproto/api' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {Link} from '../Link' import {Text} from '../text/Text' import {addStyle} from 'lib/styles' import {describeModerationCause} from 'lib/moderation' import {ShieldExclamation} from 'lib/icons' import {useStores} from 'state/index' interface Props extends ComponentProps { // testID?: string // href?: string // style: StyleProp moderation: ModerationUI } export function PostHider({ testID, href, moderation, style, children, ...props }: Props) { const store = useStores() const pal = usePalette('default') const {isMobile} = useWebMediaQueries() const [override, setOverride] = React.useState(false) if (!moderation.blur) { return ( {children} ) } const desc = describeModerationCause(moderation.cause, 'content') return ( <> { if (!moderation.noOverride) { setOverride(v => !v) } }} accessibilityRole="button" accessibilityHint={override ? 'Hide the content' : 'Show the content'} accessibilityLabel="" style={[ styles.description, {paddingRight: isMobile ? 22 : 18}, pal.viewLight, ]}> { store.shell.openModal({ name: 'moderation-details', context: 'content', moderation, }) }} accessibilityRole="button" accessibilityLabel="Learn more about this warning" accessibilityHint=""> {desc.name} {!moderation.noOverride && ( {override ? 'Hide' : 'Show'} )} {override && ( {children} )} ) } const styles = StyleSheet.create({ description: { flexDirection: 'row', alignItems: 'center', gap: 4, paddingVertical: 14, paddingLeft: 18, marginTop: 1, }, showBtn: { marginLeft: 'auto', alignSelf: 'center', }, childrenContainer: { paddingHorizontal: 4, paddingBottom: 6, }, child: { borderWidth: 0, borderTopWidth: 0, borderRadius: 8, }, })