var searchInputStyle = { width: '400px', display: 'block', marginBottom: '48px', marginLeft: 'auto', marginRight: 'auto' }, fetchResultsStyle = { color: '#888', textAlign: 'center', fontSize: '1.2em' }; var SearchActive = React.createClass({ render: function() { return (
Looking up the Dewey Decimals
); } }); var searchNoResultsStyle = { textAlign: 'center' }, searchNoResultsMessageStyle = { fontStyle: 'italic', marginRight: '5px' }; var SearchNoResults = React.createClass({ render: function() { return (
No one has checked anything in for {this.props.query} yet.
); } }); var SearchResults = React.createClass({ render: function() { var rows = []; console.log('results'); console.log('made it here'); this.props.results.forEach(function(result) { rows.push( ); }); console.log(this.props.results); console.log(rows); console.log('done'); return (
{rows}
); } }); var searchRowImgStyle = { maxHeight: '100px', display: 'block', marginLeft: 'auto', marginRight: 'auto', float: 'left' }, searchRowCostStyle = { float: 'right', marginLeft: '20px', marginTop: '5px', display: 'inline-block' }, searchRowNameStyle = { fontSize: '0.9em', color: '#666', marginBottom: '24px', clear: 'both' }, searchRowDescriptionStyle = { color : '#444', marginBottom: '24px', fontSize: '0.9em' }; var SearchResultRow = React.createClass({ getInitialState: function() { return { downloading: false } }, startDownload: function() { if (!this.state.downloading) { this.setState({ downloading: true }); lbry.getStream(this.props.name, (streamInfo) => { alert('Downloading ' + this.props.title + ' to ' + streamInfo.path); }); } }, render: function() { var displayURI = 'lbry://' + this.props.name; // No support for lbry:// URLs in Windows or on Chrome yet if (/windows|win32/i.test(navigator.userAgent) || (window.chrome && window.navigator.vendor == "Google Inc.")) { var linkURI = "/?watch=" + this.props.name; } else { var linkURI = displayURI; } return (
{'Photo

{this.props.title}

{displayURI}

{this.props.description}

); } }); var discoverMainStyle = { color: '#333' }; var Discover = React.createClass({ userTypingTimer: null, getInitialState: function() { return { results: [], searching: false, query: '' }; }, search: function() { if (this.state.query) { console.log('search'); lbry.search(this.state.query, this.searchCallback.bind(this, this.state.query)); } else { this.setState({ searching: false, results: [] }); } }, searchCallback: function(originalQuery, results) { if (this.state.searching) //could have canceled while results were pending, in which case nothing to do { this.setState({ results: results, searching: this.state.query != originalQuery, //multiple searches can be out, we're only done if we receive one we actually care about }); } }, onQueryChange: function(event) { if (this.userTypingTimer) { clearTimeout(this.userTypingTimer); } //@TODO: Switch to React.js timing this.userTypingTimer = setTimeout(this.search, 800); // 800ms delay, tweak for faster/slower this.setState({ searching: event.target.value.length > 0, query: event.target.value }); }, render: function() { console.log(this.state); return (
{ this.state.searching ? : null } { !this.state.searching && this.state.results.length ? : null } { !this.state.searching && !this.state.results.length && this.state.query ? : null }
); } }); var logoStyle = { padding: '48px 12px', textAlign: 'center', maxHeight: '80px', }, imgStyle = { //@TODO: remove this, img should be properly scaled once size is settled height: '80px' }; var Header = React.createClass({ render: function() { return (
); } }); var topBarStyle = { 'float': 'right' }, balanceStyle = { 'marginRight': '5px' }, closeIconStyle = { 'color': '#ff5155' }; var TopBar = React.createClass({ onClose: function() { window.location.href = "?start"; }, getInitialState: function() { return { balance: 0, showClose: /linux/i.test(navigator.userAgent) // @TODO: find a way to use getVersionInfo() here without messy state management }; }, componentDidMount: function() { lbry.getBalance(function(balance) { this.setState({ balance: balance }); }.bind(this)); }, render: function() { return ( { ' ' } { ' ' } { ' ' } ); } }); var HomePage = React.createClass({ componentDidMount: function() { lbry.getStartNotice(function(notice) { if (notice) { alert(notice); } }); }, render: function() { return (
); } });