import React from 'react'; import lbry from 'lbry' import {Icon} from 'component/common'; import Modal from 'component/modal'; import rewards from 'rewards'; import Link from 'component/link' export class RewardLink extends React.Component { static propTypes = { type: React.PropTypes.string.isRequired, claimed: React.PropTypes.bool, onRewardClaim: React.PropTypes.func, onRewardFailure: React.PropTypes.func } constructor(props) { super(props); this.state = { claimable: true, pending: false, errorMessage: null }; } refreshClaimable() { switch(this.props.type) { case 'new_user': this.setState({ claimable: true }); return; case 'first_publish': lbry.claim_list_mine().then((list) => { this.setState({ claimable: list.length > 0 }) }); return; } } componentWillMount() { this.refreshClaimable(); } claimReward() { this.setState({ pending: true }) rewards.claimReward(this.props.type).then((reward) => { this.setState({ pending: false, errorMessage: null }) if (this.props.onRewardClaim) { this.props.onRewardClaim(reward); } }).catch((error) => { this.setState({ errorMessage: error.message, pending: false }) }) } clearError() { if (this.props.onRewardFailure) { this.props.onRewardFailure() } this.setState({ errorMessage: null }) } render() { return (
{this.props.claimed ? Reward claimed. : { this.claimReward() }} />} {this.state.errorMessage ? { this.clearError() }}> {this.state.errorMessage} : ''}
); } }