import React, {ComponentProps} from 'react' import {StyleSheet, Pressable, View, ViewStyle, StyleProp} from 'react-native' import {ModerationUI} from '@atproto/api' import {useLingui} from '@lingui/react' import {Trans, msg} from '@lingui/macro' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {addStyle} from 'lib/styles' import {useTheme, atoms as a} from '#/alf' import { ModerationDetailsDialog, useModerationDetailsDialogControl, } from '#/components/moderation/ModerationDetailsDialog' import {Text} from '#/components/Typography' // import {Link} from '#/components/Link' TODO this imposes some styles that screw things up import {Link} from '#/view/com/util/Link' interface Props extends ComponentProps { iconSize: number iconStyles: StyleProp modui: ModerationUI } export function PostHider({ testID, href, modui, style, children, iconSize, iconStyles, ...props }: Props) { const t = useTheme() const {_} = useLingui() const [override, setOverride] = React.useState(false) const control = useModerationDetailsDialogControl() const blur = modui.blurs[0] const desc = useModerationCauseDescription(blur) if (!blur) { return ( {children} ) } return !override ? ( { if (!modui.noOverride) { setOverride(v => !v) } }} accessibilityRole="button" accessibilityHint={ override ? _(msg`Hide the content`) : _(msg`Show the content`) } accessibilityLabel="" style={[ a.flex_row, a.align_center, a.gap_sm, a.py_md, { paddingLeft: 6, paddingRight: 18, }, override ? {paddingBottom: 0} : undefined, t.atoms.bg, ]}> { control.open() }} accessibilityRole="button" accessibilityLabel={_(msg`Learn more about this warning`)} accessibilityHint=""> {desc.name} {!modui.noOverride && ( {override ? Hide : Show} )} ) : ( {children} ) } const styles = StyleSheet.create({ child: { borderWidth: 0, borderTopWidth: 0, borderRadius: 8, }, })