import React from 'react' import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' import {usePalette} from 'lib/hooks/usePalette' import {Text} from '../text/Text' import {BlurView} from '../BlurView' import {ModerationBehavior, ModerationBehaviorCode} from 'lib/labeling/types' import {isAndroid} from 'platform/detection' export function ImageHider({ testID, moderation, style, containerStyle, children, }: React.PropsWithChildren<{ testID?: string moderation: ModerationBehavior style?: StyleProp containerStyle?: StyleProp }>) { const pal = usePalette('default') const [override, setOverride] = React.useState(false) const onPressShow = React.useCallback(() => { setOverride(true) }, [setOverride]) const onPressHide = React.useCallback(() => { setOverride(false) }, [setOverride]) if (moderation.behavior !== ModerationBehaviorCode.WarnImages) { return ( {children} ) } if (moderation.behavior === ModerationBehaviorCode.Hide) { return null } return ( {children} {override ? ( Hide ) : ( <> {isAndroid ? ( /* android has an issue that breaks the blurview */ /* see https://github.com/Kureev/react-native-blur/issues/486 */ ) : ( )} {moderation.reason || 'Content warning'} Show )} ) } const styles = StyleSheet.create({ container: { position: 'relative', marginBottom: 10, }, overlay: { position: 'absolute', left: 0, top: 0, right: 0, bottom: 0, }, blurView: { borderRadius: 8, }, coverView: { borderRadius: 8, }, info: { justifyContent: 'center', alignItems: 'center', }, showBtn: { flexDirection: 'row', gap: 8, paddingHorizontal: 18, paddingVertical: 14, borderRadius: 24, }, hideBtn: { position: 'absolute', left: 8, bottom: 20, paddingHorizontal: 8, paddingVertical: 6, borderRadius: 8, }, })