2017-06-06 17:19:12 -04: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-09 20:00:56 -04:00
2017-06-05 21:21:55 -07:00
const FeaturedCategory = props => {
2017-06-06 17:19:12 -04:00
const { category , names } = props ;
2017-04-24 21:17:36 +07:00
2017-06-06 17:19:12 -04: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 08:08:52 -04: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 17:19:12 -04:00
className = "tooltip--header"
/ > }
< / h3 >
{ names &&
names . map ( name =>
< FileCard
key = { name }
displayStyle = "card"
uri = { lbryuri . normalize ( name ) }
/ >
) }
< / div >
) ;
2017-06-05 21:21:55 -07:00
} ;
2016-05-16 09:20:32 -04:00
2017-06-07 21:42:19 -07:00
class DiscoverPage extends React . PureComponent {
2017-05-10 20:59:47 -04:00
componentWillMount ( ) {
2017-06-06 17:19:12 -04:00
this . props . fetchFeaturedUris ( ) ;
2017-05-07 14:39:13 +07:00
}
2017-06-29 14:58:15 +07:00
componentWillUnmount ( ) {
this . props . cancelResolvingUris ( ) ;
}
2017-05-10 20:59:47 -04:00
render ( ) {
2017-06-06 17:19:12 -04:00
const { featuredUris , fetchingFeaturedUris } = this . props ;
2017-07-15 15:24:57 -04:00
const hasContent =
typeof featuredUris === "object" && Object . keys ( featuredUris ) . length ,
failedToLoad = ! fetchingFeaturedUris && ! hasContent ;
2017-05-10 20:59:47 -04:00
return (
2017-07-15 15:15:17 -04:00
< main
className = {
hasContent && fetchingFeaturedUris ? "main--refreshing" : null
}
>
{ ! hasContent &&
fetchingFeaturedUris &&
2017-07-15 15:24:57 -04:00
< BusyMessage message = { _ _ ( "Fetching content" ) } / > }
2017-07-15 15:15:17 -04:00
{ hasContent &&
2017-06-06 17:19:12 -04:00
Object . keys ( featuredUris ) . map (
category =>
featuredUris [ category ] . length
? < FeaturedCategory
key = { category }
category = { category }
names = { featuredUris [ category ] }
/ >
: ""
) }
{ failedToLoad &&
2017-06-29 14:58:15 +07:00
< div className = "empty" >
{ _ _ ( "Failed to load landing content." ) }
< / div > }
2017-05-22 19:22:24 +04:00
< / main >
2017-06-06 17:19:12 -04:00
) ;
2017-05-10 20:59:47 -04:00
}
2017-05-03 23:44:08 -04:00
}
2017-05-25 18:29:56 +02:00
export default DiscoverPage ;