2017-06-08 02:56:52 +02:00
|
|
|
import React from "react";
|
|
|
|
import { BusyMessage, CreditAmount, Icon } from "component/common";
|
|
|
|
import SubHeader from "component/subHeader";
|
|
|
|
import Auth from "component/auth";
|
|
|
|
import RewardLink from "component/rewardLink";
|
2017-05-26 10:53:32 +02:00
|
|
|
|
2017-06-08 02:56:52 +02:00
|
|
|
const RewardTile = props => {
|
|
|
|
const { reward } = props;
|
2017-05-26 10:53:32 +02:00
|
|
|
|
2017-06-08 02:56:52 +02:00
|
|
|
const claimed = !!reward.transaction_id;
|
2017-05-26 10:53:32 +02:00
|
|
|
|
|
|
|
return (
|
|
|
|
<section className="card">
|
|
|
|
<div className="card__inner">
|
|
|
|
<div className="card__title-primary">
|
|
|
|
<CreditAmount amount={reward.reward_amount} />
|
2017-06-02 02:51:52 +02:00
|
|
|
<h3>{reward.reward_title}</h3>
|
2017-05-26 10:53:32 +02:00
|
|
|
</div>
|
|
|
|
<div className="card__actions">
|
|
|
|
{claimed
|
2017-06-19 14:58:39 +02:00
|
|
|
? <span><Icon icon="icon-check" /> {__("Reward claimed.")}</span>
|
2017-06-08 02:56:52 +02:00
|
|
|
: <RewardLink reward_type={reward.reward_type} />}
|
2017-05-26 10:53:32 +02:00
|
|
|
</div>
|
|
|
|
<div className="card__content">{reward.reward_description}</div>
|
|
|
|
</div>
|
|
|
|
</section>
|
2017-06-08 02:56:52 +02:00
|
|
|
);
|
|
|
|
};
|
2017-05-26 10:53:32 +02:00
|
|
|
|
2017-06-23 07:29:40 +02:00
|
|
|
class RewardsPage extends React.PureComponent {
|
|
|
|
componentDidMount() {
|
|
|
|
this.fetchRewards(this.props);
|
|
|
|
}
|
2017-06-08 02:56:52 +02:00
|
|
|
|
2017-06-23 07:29:40 +02:00
|
|
|
componentWillReceiveProps(nextProps) {
|
|
|
|
this.fetchRewards(nextProps);
|
|
|
|
}
|
2017-05-26 10:53:32 +02:00
|
|
|
|
2017-06-23 07:29:40 +02:00
|
|
|
fetchRewards(props) {
|
|
|
|
const { fetching, rewards, fetchRewards } = props;
|
|
|
|
|
2017-07-16 18:29:46 +02:00
|
|
|
if (!fetching && (!rewards || !rewards.length)) {
|
|
|
|
fetchRewards();
|
|
|
|
}
|
2017-05-26 10:53:32 +02:00
|
|
|
}
|
|
|
|
|
2017-06-23 07:29:40 +02:00
|
|
|
render() {
|
|
|
|
const {
|
|
|
|
fetching,
|
|
|
|
isEligible,
|
|
|
|
isVerificationCandidate,
|
|
|
|
hasEmail,
|
|
|
|
rewards,
|
2017-07-16 18:29:46 +02:00
|
|
|
newUserReward,
|
2017-06-23 07:29:40 +02:00
|
|
|
} = this.props;
|
|
|
|
|
|
|
|
let content,
|
|
|
|
isCard = false;
|
|
|
|
|
|
|
|
if (!hasEmail || isVerificationCandidate) {
|
|
|
|
content = (
|
|
|
|
<div>
|
2017-07-16 18:29:46 +02:00
|
|
|
<div className="card__title-primary">
|
|
|
|
{newUserReward &&
|
|
|
|
<CreditAmount amount={newUserReward.reward_amount} />}
|
|
|
|
<h3>Welcome to LBRY</h3>
|
|
|
|
</div>
|
|
|
|
<div className="card__content">
|
|
|
|
<p>
|
|
|
|
{" "}{__(
|
|
|
|
"Claim your welcome credits to be able to publish content, pay creators, and have a say over the LBRY network."
|
|
|
|
)}
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
<div className="card__content"><Auth /></div>
|
2017-06-23 07:29:40 +02:00
|
|
|
</div>
|
|
|
|
);
|
|
|
|
isCard = true;
|
|
|
|
} else if (!isEligible) {
|
|
|
|
isCard = true;
|
|
|
|
content = (
|
2017-07-16 18:29:46 +02:00
|
|
|
<div className="card__content empty">
|
2017-06-23 07:29:40 +02:00
|
|
|
<p>{__("You are not eligible to claim rewards.")}</p>
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
} else if (fetching) {
|
2017-07-16 18:29:46 +02:00
|
|
|
content = (
|
|
|
|
<div className="card__content">
|
|
|
|
<BusyMessage message={__("Fetching rewards")} />
|
|
|
|
</div>
|
|
|
|
);
|
2017-06-23 07:29:40 +02:00
|
|
|
} else if (rewards.length > 0) {
|
2017-07-16 18:29:46 +02:00
|
|
|
content = (
|
|
|
|
<div>
|
|
|
|
{rewards.map(reward =>
|
|
|
|
<RewardTile key={reward.reward_type} reward={reward} />
|
|
|
|
)}
|
|
|
|
</div>
|
2017-06-23 07:29:40 +02:00
|
|
|
);
|
|
|
|
} else {
|
2017-07-16 18:29:46 +02:00
|
|
|
content = (
|
|
|
|
<div className="card__content empty">
|
|
|
|
{__("Failed to load rewards.")}
|
|
|
|
</div>
|
|
|
|
);
|
2017-06-23 07:29:40 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
return (
|
|
|
|
<main className="main--single-column">
|
|
|
|
<SubHeader />
|
2017-07-16 18:29:46 +02:00
|
|
|
{isCard ? <section className="card">{content}</section> : content}
|
2017-06-23 07:29:40 +02:00
|
|
|
</main>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2017-05-26 10:53:32 +02:00
|
|
|
|
|
|
|
export default RewardsPage;
|