import * as React from "react"; import { ClaimRewards, RescueTokens } from "@joincivil/components"; import { StyledFormContainer, FormGroup } from "../utility/FormElements"; import { TwoStepEthTransaction } from "@joincivil/core"; import { CivilHelper, CivilHelperContext } from "../../apis/CivilHelper"; import { BigNumber, AppealChallengeData, UserChallengeData, ChallengeData, EthAddress, } from "@joincivil/typescript-types"; import { getFormattedTokenBalance, challengeHelpers, appealChallengeHelpers } from "@joincivil/utils"; export interface ChallengeRewardsDetailProps { challengeID: BigNumber; challenge?: ChallengeData; appealChallenge?: AppealChallengeData; user?: EthAddress; userChallengeData?: UserChallengeData; } class ChallengeRewardsDetail extends React.Component { public static contextType = CivilHelperContext; public context: CivilHelper; public render(): JSX.Element { const userChallengeData = this.props.userChallengeData; let isWinner; let isClaimRewardsVisible; let isRescueTokensVisible; let isClaimedRewardVisible; if (userChallengeData) { const challenge = this.props.challenge; const appealChallenge = this.props.appealChallenge; if (challenge) { isWinner = challengeHelpers.isUserWinner(challenge, userChallengeData); isClaimRewardsVisible = challengeHelpers.canUserCollectReward(challenge, userChallengeData); isRescueTokensVisible = challengeHelpers.canRescueTokens(challenge, userChallengeData); } else if (appealChallenge) { isWinner = appealChallengeHelpers.isUserAppealChallengeWinner(appealChallenge, userChallengeData); isClaimRewardsVisible = appealChallengeHelpers.canUserCollectAppealChallengeReward( appealChallenge, userChallengeData, ); isRescueTokensVisible = appealChallengeHelpers.canRescueAppealChallengeTokens( appealChallenge, userChallengeData, ); } isClaimedRewardVisible = userChallengeData.didCollectAmount; } return ( {!isWinner && ( Sorry, there are no rewards available for you for this challenge. Better luck next time! )} {isClaimedRewardVisible && ( <>

Reward Claimed

)} {isClaimRewardsVisible && ( )} {isRescueTokensVisible && ( )}
); } private claimRewards = async (): Promise | void> => { return this.context.claimRewards(this.props.challengeID, this.props.userChallengeData!.salt!); }; private rescueTokens = async (): Promise | void> => { return this.context.rescueTokens(this.props.challengeID); }; } export default ChallengeRewardsDetail;