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.PureComponent { constructor(props) { super(props); this.state = { hovered: false, }; } 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); } } 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 = metadata && metadata.title ? metadata.title : uri; const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; let description = ""; if (isResolvingUri && !claim) { 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")} />.

}
); } } export default FileCard;