2017-06-06 23:19:12 +02:00
|
|
|
import React from "react";
|
|
|
|
import lbryio from "lbryio.js";
|
|
|
|
import lbryuri from "lbryuri";
|
|
|
|
import FileCard from "component/fileCard";
|
|
|
|
import { BusyMessage } from "component/common.js";
|
|
|
|
import ToolTip from "component/tooltip.js";
|
2016-04-10 02:00:56 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
const communityCategoryToolTipText =
|
2017-06-06 23:19:12 +02:00
|
|
|
"Community Content is a public space where anyone can share content with the " +
|
2017-05-01 02:15:21 +02:00
|
|
|
'rest of the LBRY community. Bid on the names "one," "two," "three," "four" and ' +
|
2017-06-06 23:19:12 +02:00
|
|
|
'"five" to put your content here!';
|
2017-04-10 14:32:40 +02:00
|
|
|
|
2017-06-06 06:21:55 +02:00
|
|
|
const FeaturedCategory = props => {
|
2017-06-06 23:19:12 +02:00
|
|
|
const { category, names } = props;
|
2017-04-24 16:17:36 +02:00
|
|
|
|
2017-06-06 23:19:12 +02:00
|
|
|
return (
|
|
|
|
<div className="card-row card-row--small">
|
|
|
|
<h3 className="card-row__header">
|
|
|
|
{category}
|
|
|
|
{category &&
|
|
|
|
category.match(/^community/i) &&
|
|
|
|
<ToolTip
|
|
|
|
label={__("What's this?")}
|
|
|
|
body={__(communityCategoryToolTipText)}
|
|
|
|
className="tooltip--header"
|
|
|
|
/>}
|
|
|
|
</h3>
|
|
|
|
{names &&
|
|
|
|
names.map(name =>
|
|
|
|
<FileCard
|
|
|
|
key={name}
|
|
|
|
displayStyle="card"
|
|
|
|
uri={lbryuri.normalize(name)}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
);
|
2017-06-06 06:21:55 +02:00
|
|
|
};
|
2016-05-16 15:20:32 +02:00
|
|
|
|
2017-06-08 06:42:19 +02:00
|
|
|
class DiscoverPage extends React.PureComponent {
|
2017-05-11 02:59:47 +02:00
|
|
|
componentWillMount() {
|
2017-06-06 23:19:12 +02:00
|
|
|
this.props.fetchFeaturedUris();
|
2017-05-07 09:39:13 +02:00
|
|
|
}
|
|
|
|
|
2017-05-11 02:59:47 +02:00
|
|
|
render() {
|
2017-06-06 23:19:12 +02:00
|
|
|
const { featuredUris, fetchingFeaturedUris } = this.props;
|
|
|
|
const failedToLoad =
|
|
|
|
!fetchingFeaturedUris &&
|
|
|
|
(featuredUris === undefined ||
|
|
|
|
(featuredUris !== undefined && Object.keys(featuredUris).length === 0));
|
2017-05-11 02:59:47 +02:00
|
|
|
|
|
|
|
return (
|
2017-05-22 17:22:24 +02:00
|
|
|
<main>
|
2017-06-06 23:19:12 +02:00
|
|
|
{fetchingFeaturedUris &&
|
|
|
|
<BusyMessage message={__("Fetching content")} />}
|
|
|
|
{typeof featuredUris === "object" &&
|
|
|
|
Object.keys(featuredUris).map(
|
|
|
|
category =>
|
|
|
|
featuredUris[category].length
|
|
|
|
? <FeaturedCategory
|
|
|
|
key={category}
|
|
|
|
category={category}
|
|
|
|
names={featuredUris[category]}
|
|
|
|
/>
|
|
|
|
: ""
|
|
|
|
)}
|
|
|
|
{failedToLoad &&
|
|
|
|
<div className="empty">{__("Failed to load landing content.")}</div>}
|
2017-05-22 17:22:24 +02:00
|
|
|
</main>
|
2017-06-06 23:19:12 +02:00
|
|
|
);
|
2017-05-11 02:59:47 +02:00
|
|
|
}
|
2017-05-04 05:44:08 +02:00
|
|
|
}
|
|
|
|
|
2017-05-25 18:29:56 +02:00
|
|
|
export default DiscoverPage;
|