import * as React from "react"; import { BigNumber, CharterData, WrappedChallengeData } from "@joincivil/typescript-types"; import { transformGraphQLDataIntoListing, transformGraphQLDataIntoNewsroom, transformGraphQLDataIntoChallenge, transfromGraphQLDataIntoUserChallengeData, } from "@joincivil/utils"; import { getChallengeState, getAppealChallengeState } from "../../../selectors"; import MyChallengesItemComponent from "./MyChallengesItemComponent"; import { MyChallengesItemOwnProps, MyChallengesItemWrapperReduxProps } from "./MyChallengesItemTypes"; import MyTasksProposalItemComponent from "../MyTasksProposalItem/MyTasksProposalItemComponent"; const MyChallengesItemWrapper: React.FunctionComponent< MyChallengesItemOwnProps & MyChallengesItemWrapperReduxProps > = props => { const { queryUserChallengeData, queryUserAppealChallengeData, content, getCharterContent, showClaimRewardsTab, showRescueTokensTab, } = props; let challenge = props.challenge; let challengeType; if (!challenge) { if (!queryUserChallengeData) { console.error("MyChallengesItemWrapper: no data found"); return <>; } challenge = queryUserChallengeData.challenge; if (!challenge) { console.error("MyChallengesItemWrapper: no challenge data found on queryUserChallengedata"); return <>; } challengeType = challenge.pollType; } else { challengeType = challenge.challengeType; } console.log("challengeType: ", challengeType); if (challengeType !== "CHALLENGE" && challengeType !== "PARAMETER_PROPOSAL_CHALLENGE") { console.error( "MyChallengesItemWrapper: challengeType not supported. challengeType: " + challengeType + " - challengeID: " + challenge.challengeID, ); return <>; } const challengeData = transformGraphQLDataIntoChallenge(challenge); const userChallengeData = queryUserChallengeData ? transfromGraphQLDataIntoUserChallengeData(queryUserChallengeData, challenge) : undefined; if (challengeData) { const listingAddress = challenge!.listingAddress; let newsroom; let charter; let listing; let appealUserChallengeData; if (listingAddress && challenge.listing) { listing = transformGraphQLDataIntoListing(challenge.listing, listingAddress); if (listing) { newsroom = { wrapper: transformGraphQLDataIntoNewsroom(challenge.listing, listingAddress), address: listingAddress, }; if (queryUserAppealChallengeData) { appealUserChallengeData = transfromGraphQLDataIntoUserChallengeData( queryUserAppealChallengeData, challenge.appeal.appealChallenge, ); } if (newsroom.wrapper && newsroom.wrapper.data.charterHeader) { charter = content.get(newsroom.wrapper.data.charterHeader.uri) as CharterData; if (!charter) { void getCharterContent(newsroom.wrapper.data.charterHeader); } } } } const wrappedChallenge = { listingAddress, challengeID: new BigNumber(challenge.challengeID!), challenge: challengeData, }; let appeal; let appealChallenge; let appealChallengeState; let appealChallengeID; if (challengeData) { appeal = challengeData.appeal; if (appeal) { appealChallenge = appeal.appealChallenge; if (appealChallenge) { appealChallengeID = appeal.appealChallengeID.toString(); appealChallengeState = getAppealChallengeState(appealChallenge); } } } const challengeState = getChallengeState(wrappedChallenge as WrappedChallengeData); if (listing) { const viewProps = { challengeID: challenge.challengeID, listingAddress, listing, newsroom, charter, challenge: wrappedChallenge, challengeState, userChallengeData, appeal, appealChallengeID, appealChallenge, appealChallengeState, appealUserChallengeData, showClaimRewardsTab, showRescueTokensTab, }; return ; } else { const viewProps = { challengeID: challenge.challengeID, challenge: challengeData, userChallengeData, showClaimRewardsTab, showRescueTokensTab, }; return ; } } console.error("uknown error."); return <>; }; export default MyChallengesItemWrapper;