import React from 'react'; import { normalizeURI } from 'lbry-redux'; import { NavigationActions } from 'react-navigation'; import { NativeModules, Text, View, TouchableOpacity } from 'react-native'; import { navigateToUri } from 'utils/helper'; import Colors from 'styles/colors'; import DateTime from 'component/dateTime'; import FileItemMedia from 'component/fileItemMedia'; import FilePrice from 'component/filePrice'; import Icon from 'react-native-vector-icons/FontAwesome5'; import Link from 'component/link'; import NsfwOverlay from 'component/nsfwOverlay'; import discoverStyle from 'styles/discover'; class FileItem extends React.PureComponent { constructor(props) { super(props); } componentWillMount() { this.resolve(this.props); } componentWillReceiveProps(nextProps) { this.resolve(nextProps); } resolve(props) { const { isResolvingUri, resolveUri, claim, uri } = props; if (!isResolvingUri && claim === undefined && uri) { resolveUri(uri); } } navigateToFileUri = () => { const { navigation, uri } = this.props; const normalizedUri = normalizeURI(uri); if (NativeModules.Firebase) { NativeModules.Firebase.track('explore_click', { uri: normalizedUri }); } navigateToUri(navigation, normalizedUri); } render() { const { claim, title, thumbnail, fileInfo, metadata, isResolvingUri, rewardedContentClaimIds, style, mediaStyle, navigation, showDetails, compactView, titleBeforeThumbnail } = this.props; const uri = normalizeURI(this.props.uri); const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; const isRewardContent = claim && rewardedContentClaimIds.includes(claim.claim_id); const channelName = claim ? claim.channel_name : null; const channelClaimId = claim && claim.value && claim.value.publisherSignature && claim.value.publisherSignature.certificateId; const fullChannelUri = channelClaimId ? `${channelName}#${channelClaimId}` : channelName; const height = claim ? claim.height : null; return ( {!compactView && titleBeforeThumbnail && {title}} {(!compactView && fileInfo && fileInfo.completed) && } {(!compactView && (!fileInfo || !fileInfo.completed)) && } {!compactView && {title} {isRewardContent && } } {(!compactView && showDetails) && {channelName && { navigateToUri(navigation, normalizeURI(fullChannelUri)); }} />} } {obscureNsfw && navigation.navigate({ routeName: 'Settings', key: 'settingsPage' })} />} ); } } export default FileItem;