lbry-desktop/ui/js/page/discover/view.jsx

100 lines
2.8 KiB
React
Raw Normal View History

2017-06-06 23:19:12 +02:00
import React from "react";
import lbry from "lbry.js";
2017-06-06 23:19:12 +02:00
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 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?")}
2017-06-20 14:08:52 +02:00
body={__(
'Community Content is a public space where anyone can share content with the rest of the LBRY community. Bid on the names "one," "two," "three," "four" and "five" to put your content here!'
)}
2017-06-06 23:19:12 +02:00
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
};
2017-06-08 06:42:19 +02:00
class DiscoverPage extends React.PureComponent {
componentWillMount() {
2017-06-06 23:19:12 +02:00
this.props.fetchFeaturedUris();
this.scrollListener = this.handleScroll.bind(this);
}
componentDidMount() {
if (this.props.isNavigatingBack) {
const scrollY = parseInt(lbry.getClientSetting("prefs_scrolly"));
if (!isNaN(scrollY)) {
const restoreScrollPosition = () => {
window.scrollTo(0, scrollY);
};
setTimeout(restoreScrollPosition, 100);
}
this.props.finishedNavigatingBack();
}
window.addEventListener("scroll", this.scrollListener);
}
handleScroll() {
lbry.setClientSetting("prefs_scrolly", window.scrollY);
2017-05-07 09:39:13 +02:00
}
componentWillUnmount() {
this.props.cancelResolvingUris();
window.removeEventListener("scroll", this.scrollListener);
}
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));
return (
2017-07-06 05:20:25 +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>}
</main>
2017-06-06 23:19:12 +02:00
);
}
2017-05-04 05:44:08 +02:00
}
2017-05-25 18:29:56 +02:00
export default DiscoverPage;