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 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
} ;
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-06-29 09:58:15 +02:00
componentWillUnmount ( ) {
this . props . cancelResolvingUris ( ) ;
}
2017-05-11 02:59:47 +02:00
render ( ) {
2017-06-06 23:19:12 +02:00
const { featuredUris , fetchingFeaturedUris } = this . props ;
2017-07-15 21:24:57 +02:00
const hasContent =
typeof featuredUris === "object" && Object . keys ( featuredUris ) . length ,
failedToLoad = ! fetchingFeaturedUris && ! hasContent ;
2017-05-11 02:59:47 +02:00
return (
2017-07-15 21:15:17 +02:00
< main
className = {
hasContent && fetchingFeaturedUris ? "main--refreshing" : null
}
>
{ ! hasContent &&
fetchingFeaturedUris &&
2017-07-15 21:24:57 +02:00
< BusyMessage message = { _ _ ( "Fetching content" ) } / > }
2017-07-15 21:15:17 +02:00
{ hasContent &&
2017-06-06 23:19:12 +02:00
Object . keys ( featuredUris ) . map (
category =>
featuredUris [ category ] . length
? < FeaturedCategory
key = { category }
category = { category }
names = { featuredUris [ category ] }
/ >
: ""
) }
{ failedToLoad &&
2017-06-29 09:58:15 +02:00
< 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 ;