From e05345193975ac3b4bdb61e88d386ff512a85bf8 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 21 May 2018 12:17:17 -0700 Subject: [PATCH] adding sub-tabs for listings in progress, fixing bug in core related to can challenge be resolved removing logs running prettier --- .../listingDataHelpers/challengeHelper.ts | 2 +- .../utils/listingDataHelpers/listingHelper.ts | 16 +--- .../src/components/listinglist/Listings.tsx | 79 ++-------------- .../listinglist/ListingsInProgress.tsx | 91 +++++++++++++++++++ packages/dapp/src/reducers/index.ts | 3 + packages/dapp/src/reducers/listings.ts | 14 +++ 6 files changed, 118 insertions(+), 87 deletions(-) create mode 100644 packages/dapp/src/components/listinglist/ListingsInProgress.tsx diff --git a/packages/core/src/utils/listingDataHelpers/challengeHelper.ts b/packages/core/src/utils/listingDataHelpers/challengeHelper.ts index 134fe8ecd4..c130ebac08 100644 --- a/packages/core/src/utils/listingDataHelpers/challengeHelper.ts +++ b/packages/core/src/utils/listingDataHelpers/challengeHelper.ts @@ -63,5 +63,5 @@ export function canResolveChallenge(challengeData: ChallengeData): boolean { * @param challengeData this ChallengeData to check */ export function doesChallengeHaveAppeal(challengeData: ChallengeData): boolean { - return !challengeData.appeal || is0x0Address(challengeData!.appeal!.requester.toString()); + return challengeData.appeal! && !is0x0Address(challengeData!.appeal!.requester.toString()); } diff --git a/packages/core/src/utils/listingDataHelpers/listingHelper.ts b/packages/core/src/utils/listingDataHelpers/listingHelper.ts index 0668fdfba1..9c8e2ee734 100644 --- a/packages/core/src/utils/listingDataHelpers/listingHelper.ts +++ b/packages/core/src/utils/listingDataHelpers/listingHelper.ts @@ -1,5 +1,5 @@ import { ListingData } from "../../types"; -import { isChallengeInCommitStage, isChallengeInRevealStage } from "./challengeHelper"; +import { isChallengeInCommitStage, isChallengeInRevealStage, canResolveChallenge } from "./challengeHelper"; import { isAwaitingAppealChallenge, canAppealBeResolved } from "./appealHelper"; import { isAppealChallengeInCommitStage, isAppealChallengeInRevealStage } from "./appealChallengeHelper"; @@ -106,19 +106,7 @@ export function isAwaitingAppealRequest(listingData: ListingData): boolean { */ export function canChallengeBeResolved(listingData: ListingData): boolean { const challenge = listingData.challenge; - if (challenge) { - if (challenge.appeal) { - return false; - } else { - return ( - !isChallengeInCommitStage(challenge) && - !isChallengeInRevealStage(challenge) && - !isAwaitingAppealRequest(listingData) - ); - } - } else { - return false; - } + return canResolveChallenge(challenge!); } /** diff --git a/packages/dapp/src/components/listinglist/Listings.tsx b/packages/dapp/src/components/listinglist/Listings.tsx index be34dc800d..6872c5c989 100644 --- a/packages/dapp/src/components/listinglist/Listings.tsx +++ b/packages/dapp/src/components/listinglist/Listings.tsx @@ -6,19 +6,10 @@ import { Tab } from "../tabs/Tab"; import ListingList from "./ListingList"; import { connect } from "react-redux"; import { State } from "../../reducers"; +import ListingsInProgress from "./ListingsInProgress"; export interface ListingProps { - applications: Set; whitelistedListings: Set; - readyToWhitelistListings: Set; - inChallengeCommitListings: Set; - inChallengeRevealListings: Set; - awaitingAppealRequestListings: Set; - awaitingAppealJudgmentListings: Set; - awaitingAppealChallengeListings: Set; - appealChallengeCommitPhaseListings: Set; - appealChallengeRevealPhaseListings: Set; - resolveAppealListings: Set; rejectedListings: Set; error: undefined | string; } @@ -28,46 +19,13 @@ class Listings extends React.Component { return ( -
- -
+
-
- Applications:
- -
- Ready to be Whitelisted:
- -
- In Challenge Vote-Commit:
- -
- In Challenge Vote-Reveal:
- -
- Awaiting Appeal Request:
- -
- Awaiting Appeal Judgment:
- -
- Awaiting Appeal Challenge:
- -
- Appeal Challenge in Commit:
- -
- Appeal Challenge in Reveal:
- -
- Appeal Can Be Resolved:
- -
- Rejected Listings:
- -
-
+ +
+ +
); @@ -75,33 +33,10 @@ class Listings extends React.Component { } const mapStateToProps = (state: State): ListingProps => { - const { - applications, - whitelistedListings, - readyToWhitelistListings, - inChallengeCommitListings, - inChallengeRevealListings, - awaitingAppealRequestListings, - awaitingAppealJudgmentListings, - awaitingAppealChallengeListings, - appealChallengeCommitPhaseListings, - appealChallengeRevealPhaseListings, - resolveAppealListings, - rejectedListings, - } = state; + const { whitelistedListings, rejectedListings } = state; return { - applications, whitelistedListings, - readyToWhitelistListings, - inChallengeCommitListings, - inChallengeRevealListings, - awaitingAppealRequestListings, - awaitingAppealJudgmentListings, - awaitingAppealChallengeListings, - appealChallengeCommitPhaseListings, - appealChallengeRevealPhaseListings, - resolveAppealListings, rejectedListings, error: undefined, }; diff --git a/packages/dapp/src/components/listinglist/ListingsInProgress.tsx b/packages/dapp/src/components/listinglist/ListingsInProgress.tsx new file mode 100644 index 0000000000..8780983467 --- /dev/null +++ b/packages/dapp/src/components/listinglist/ListingsInProgress.tsx @@ -0,0 +1,91 @@ +import * as React from "react"; +import { Set } from "immutable"; +import { Tabs } from "../tabs/Tabs"; +import { Tab } from "../tabs/Tab"; + +import ListingList from "./ListingList"; +import { connect } from "react-redux"; +import { State } from "../../reducers"; + +export interface ListingProps { + applications: Set; + readyToWhitelistListings: Set; + inChallengeCommitListings: Set; + inChallengeRevealListings: Set; + awaitingAppealRequestListings: Set; + awaitingAppealJudgmentListings: Set; + awaitingAppealChallengeListings: Set; + appealChallengeCommitPhaseListings: Set; + appealChallengeRevealPhaseListings: Set; + resolveChallengeListings: Set; + resolveAppealListings: Set; +} + +class ListingsInProgress extends React.Component { + public render(): JSX.Element { + const applications = this.props.applications; + const beingChallenged = this.props.inChallengeCommitListings + .merge(this.props.inChallengeRevealListings) + .merge(this.props.awaitingAppealRequestListings); + const consideringAppeal = this.props.awaitingAppealJudgmentListings.merge( + this.props.awaitingAppealChallengeListings, + ); + const appealChallenge = this.props.appealChallengeCommitPhaseListings.merge( + this.props.appealChallengeRevealPhaseListings, + ); + const readyToUpdate = this.props.readyToWhitelistListings + .merge(this.props.resolveChallengeListings) + .merge(this.props.resolveAppealListings); + return ( + + + + + + + + + + + + + + + + + + ); + } +} + +const mapStateToProps = (state: State): ListingProps => { + const { + applications, + readyToWhitelistListings, + inChallengeCommitListings, + inChallengeRevealListings, + awaitingAppealRequestListings, + awaitingAppealJudgmentListings, + awaitingAppealChallengeListings, + appealChallengeCommitPhaseListings, + appealChallengeRevealPhaseListings, + resolveChallengeListings, + resolveAppealListings, + } = state; + + return { + applications, + readyToWhitelistListings, + inChallengeCommitListings, + inChallengeRevealListings, + awaitingAppealRequestListings, + awaitingAppealJudgmentListings, + awaitingAppealChallengeListings, + appealChallengeCommitPhaseListings, + appealChallengeRevealPhaseListings, + resolveChallengeListings, + resolveAppealListings, + }; +}; + +export default connect(mapStateToProps)(ListingsInProgress); diff --git a/packages/dapp/src/reducers/index.ts b/packages/dapp/src/reducers/index.ts index 9069e8b0f3..093e444d88 100644 --- a/packages/dapp/src/reducers/index.ts +++ b/packages/dapp/src/reducers/index.ts @@ -12,6 +12,7 @@ import { awaitingAppealChallengeListings, appealChallengeCommitPhaseListings, appealChallengeRevealPhaseListings, + resolveChallengeListings, resolveAppealListings, rejectedListings, } from "./listings"; @@ -35,6 +36,7 @@ export interface State { awaitingAppealChallengeListings: Set; appealChallengeCommitPhaseListings: Set; appealChallengeRevealPhaseListings: Set; + resolveChallengeListings: Set; resolveAppealListings: Set; rejectedListings: Set; user: { account: any }; @@ -55,6 +57,7 @@ export default combineReducers({ awaitingAppealChallengeListings, appealChallengeCommitPhaseListings, appealChallengeRevealPhaseListings, + resolveChallengeListings, resolveAppealListings, rejectedListings, user, diff --git a/packages/dapp/src/reducers/listings.ts b/packages/dapp/src/reducers/listings.ts index f7ce05be79..cb03f69b44 100644 --- a/packages/dapp/src/reducers/listings.ts +++ b/packages/dapp/src/reducers/listings.ts @@ -12,6 +12,7 @@ import { isListingAwaitingAppealChallenge, isListingInAppealChallengeCommitPhase, isInAppealChallengeRevealPhase, + canChallengeBeResolved, canListingAppealBeResolved, TimestampedEvent, } from "@joincivil/core"; @@ -178,6 +179,19 @@ export function appealChallengeRevealPhaseListings(state: Set = Set = Set(), action: AnyAction): Set { + switch (action.type) { + case listingActions.ADD_OR_UPDATE_LISTING: + if (canChallengeBeResolved(action.data.data)) { + return state.add(action.data.address); + } else { + return state.remove(action.data.address); + } + default: + return state; + } +} + export function resolveAppealListings(state: Set = Set(), action: AnyAction): Set { switch (action.type) { case listingActions.ADD_OR_UPDATE_LISTING: