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} : ''}
); } }