var Link = React.createClass({ handleClick: function() { if (this.props.onClick) { this.props.onClick(); } }, render: function() { var href = this.props.href ? this.props.href : 'javascript:;', icon = this.props.icon ? : '', className = (this.props.className ? this.props.className : '') + (this.props.button ? ' button-block button-' + this.props.button : '') + (this.props.hidden ? ' hidden' : '') + (this.props.disabled ? ' disabled' : ''); return ( {this.props.icon ? icon : '' } {this.props.label} {this.props.badge ? {this.props.badge} : '' } ); } }); var linkContainerStyle = { position: 'relative', }; var ToolTipLink = React.createClass({ getInitialState: function() { return { showTooltip: false, }; }, handleClick: function() { if (this.props.tooltip) { this.setState({ showTooltip: !this.state.showTooltip, }); } if (this.props.onClick) { this.props.onClick(); } }, handleTooltipMouseOut: function() { this.setState({ showTooltip: false, }); }, render: function() { var href = this.props.href ? this.props.href : 'javascript:;', icon = this.props.icon ? : '', className = this.props.className + (this.props.button ? ' button-block button-' + this.props.button : '') + (this.props.hidden ? ' hidden' : '') + (this.props.disabled ? ' disabled' : ''); return ( {this.props.icon ? icon : '' } {this.props.label} {(!this.props.tooltip ? null : {this.props.tooltip} )} ); } }); var DownloadLink = React.createClass({ propTypes: { type: React.PropTypes.string, streamName: React.PropTypes.string, label: React.PropTypes.string, downloadingLabel: React.PropTypes.string, button: React.PropTypes.string, style: React.PropTypes.object, hidden: React.PropTypes.bool, }, getDefaultProps: function() { return { icon: 'icon-download', label: 'Download', downloadingLabel: 'Downloading...', } }, getInitialState: function() { return { downloading: false, } }, handleClick: function() { lbry.getCostEstimate(this.props.streamName, (amount) => { lbry.getBalance((balance) => { if (amount > balance) { alert("You don't have enough LBRY credits to pay for this stream."); } else { this.startDownload(); } }); }); }, startDownload: function() { if (!this.state.downloading) { //@TODO: Continually update this.state.downloading based on actual status of file this.setState({ downloading: true }); lbry.getStream(this.props.streamName, (streamInfo) => { alert('Downloading to ' + streamInfo.path); console.log(streamInfo); }); } }, render: function() { var label = (!this.state.downloading ? this.props.label : this.props.downloadingLabel); return ; } }); var WatchLink = React.createClass({ propTypes: { type: React.PropTypes.string, streamName: React.PropTypes.string, label: React.PropTypes.string, button: React.PropTypes.string, style: React.PropTypes.object, hidden: React.PropTypes.bool, }, handleClick: function() { lbry.getCostEstimate(this.props.streamName, (amount) => { lbry.getBalance((balance) => { if (amount > balance) { alert("You don't have enough LBRY credits to pay for this stream."); } else { window.location = '?watch=' + this.props.streamName; } }); }); }, getDefaultProps: function() { return { icon: 'icon-play', label: 'Watch', } }, render: function() { return ; } });