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