import React from 'react' import { StyleProp, TouchableWithoutFeedback, View, ViewStyle, } from 'react-native' import {ModerationUI} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {NavigationProp} from 'lib/routes/types' import {CenteredView} from '#/view/com/util/Views' import {atoms as a, useTheme} from '#/alf' import {Button, ButtonText} from '#/components/Button' import { ModerationDetailsDialog, useModerationDetailsDialogControl, } from '#/components/moderation/ModerationDetailsDialog' import {Text} from '#/components/Typography' export function ScreenHider({ testID, screenDescription, modui, style, containerStyle, children, }: React.PropsWithChildren<{ testID?: string screenDescription: string modui: ModerationUI style?: StyleProp containerStyle?: StyleProp }>) { const t = useTheme() const {_} = useLingui() const [override, setOverride] = React.useState(false) const navigation = useNavigation() const {isMobile} = useWebMediaQueries() const control = useModerationDetailsDialogControl() const blur = modui.blurs[0] const desc = useModerationCauseDescription(blur) if (!blur || override) { return ( {children} ) } const isNoPwi = !!modui.blurs.find( cause => cause.type === 'label' && cause.labelDef.identifier === '!no-unauthenticated', ) return ( {isNoPwi ? ( Sign-in Required ) : ( Content Warning )} {isNoPwi ? ( This account has requested that users sign in to view their profile. ) : ( <> This {screenDescription} has been flagged: {desc.name}.{' '} { control.open() }} accessibilityRole="button" accessibilityLabel={_(msg`Learn more about this warning`)} accessibilityHint=""> Learn More )}{' '} {isMobile && } {!modui.noOverride && ( )} ) }