import React from 'react'; import lbry from 'lbry.js'; import lbryuri from 'lbryuri.js'; import Link from 'component/link'; import { Thumbnail, TruncatedText, Icon } from 'component/common'; import FilePrice from 'component/filePrice'; import UriIndicator from 'component/uriIndicator'; class FileCard extends React.Component { 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); } } componentWillUnmount() { const { isResolvingUri, cancelResolveUri, uri } = this.props; if (isResolvingUri) { cancelResolveUri(uri); } } handleMouseOver() { this.setState({ hovered: true }); } handleMouseOut() { this.setState({ hovered: false }); } render() { const { claim, fileInfo, metadata, isResolvingUri, navigate } = this.props; const uri = lbryuri.normalize(this.props.uri); const title = !isResolvingUri && metadata && metadata.title ? metadata.title : uri; const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; let description = ''; if (isResolvingUri) { description = __('Loading...'); } else if (metadata && metadata.description) { description = metadata.description; } else if (claim === null) { description = __('This address contains no content.'); } return (
navigate('/show', { uri })} className="card__link" >
{title}
{fileInfo ? {' '} : ''}
{metadata && metadata.thumbnail &&
}
{description}
{obscureNsfw && this.state.hovered ?

{__( 'This content is Not Safe For Work. To view adult content, please change your' )} {' '} navigate('settings')} label={__('Settings')} />.

: null}
); } } export default FileCard;