Tidy up props a bit
This commit is contained in:
parent
790c0b336b
commit
2551c41902
|
@ -8,7 +8,7 @@ import { FeedCommentThread, ContractCommentInput } from '../feed/feed-comments'
|
||||||
import { groupBy, sortBy } from 'lodash'
|
import { groupBy, sortBy } from 'lodash'
|
||||||
import { Bet } from 'common/bet'
|
import { Bet } from 'common/bet'
|
||||||
import { Contract } from 'common/contract'
|
import { Contract } from 'common/contract'
|
||||||
import { PAST_BETS, User } from 'common/user'
|
import { PAST_BETS } from 'common/user'
|
||||||
import { ContractBetsTable, BetsSummary } from '../bets-list'
|
import { ContractBetsTable, BetsSummary } from '../bets-list'
|
||||||
import { Spacer } from '../layout/spacer'
|
import { Spacer } from '../layout/spacer'
|
||||||
import { Tabs } from '../layout/tabs'
|
import { Tabs } from '../layout/tabs'
|
||||||
|
@ -17,6 +17,7 @@ import { LoadingIndicator } from 'web/components/loading-indicator'
|
||||||
import { useComments } from 'web/hooks/use-comments'
|
import { useComments } from 'web/hooks/use-comments'
|
||||||
import { useLiquidity } from 'web/hooks/use-liquidity'
|
import { useLiquidity } from 'web/hooks/use-liquidity'
|
||||||
import { useTipTxns } from 'web/hooks/use-tip-txns'
|
import { useTipTxns } from 'web/hooks/use-tip-txns'
|
||||||
|
import { useUser } from 'web/hooks/use-user'
|
||||||
import { capitalize } from 'lodash'
|
import { capitalize } from 'lodash'
|
||||||
import {
|
import {
|
||||||
DEV_HOUSE_LIQUIDITY_PROVIDER_ID,
|
DEV_HOUSE_LIQUIDITY_PROVIDER_ID,
|
||||||
|
@ -24,15 +25,11 @@ import {
|
||||||
} from 'common/antes'
|
} from 'common/antes'
|
||||||
import { useIsMobile } from 'web/hooks/use-is-mobile'
|
import { useIsMobile } from 'web/hooks/use-is-mobile'
|
||||||
|
|
||||||
export function ContractTabs(props: {
|
export function ContractTabs(props: { contract: Contract; bets: Bet[] }) {
|
||||||
contract: Contract
|
const { contract, bets } = props
|
||||||
user: User | null | undefined
|
|
||||||
bets: Bet[]
|
|
||||||
}) {
|
|
||||||
const { contract, user, bets } = props
|
|
||||||
|
|
||||||
const isMobile = useIsMobile()
|
const isMobile = useIsMobile()
|
||||||
|
const user = useUser()
|
||||||
const userBets =
|
const userBets =
|
||||||
user && bets.filter((bet) => !bet.isAnte && bet.userId === user.id)
|
user && bets.filter((bet) => !bet.isAnte && bet.userId === user.id)
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@ import { CPMMBinaryContract } from 'common/contract'
|
||||||
import { AlertBox } from 'web/components/alert-box'
|
import { AlertBox } from 'web/components/alert-box'
|
||||||
import { useTracking } from 'web/hooks/use-tracking'
|
import { useTracking } from 'web/hooks/use-tracking'
|
||||||
import { useSaveReferral } from 'web/hooks/use-save-referral'
|
import { useSaveReferral } from 'web/hooks/use-save-referral'
|
||||||
import { User } from 'common/user'
|
|
||||||
import { getOpenGraphProps } from 'common/contract-details'
|
import { getOpenGraphProps } from 'common/contract-details'
|
||||||
import { ContractDescription } from 'web/components/contract/contract-description'
|
import { ContractDescription } from 'web/components/contract/contract-description'
|
||||||
import {
|
import {
|
||||||
|
@ -73,12 +72,8 @@ export default function ContractPage(props: {
|
||||||
bets: Bet[]
|
bets: Bet[]
|
||||||
backToHome?: () => void
|
backToHome?: () => void
|
||||||
}) {
|
}) {
|
||||||
props = usePropz(props, getStaticPropz) ?? {
|
props = usePropz(props, getStaticPropz) ?? { contract: null, bets: [] }
|
||||||
contract: null,
|
|
||||||
bets: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = useUser()
|
|
||||||
const inIframe = useIsIframe()
|
const inIframe = useIsIframe()
|
||||||
if (inIframe) {
|
if (inIframe) {
|
||||||
return <ContractEmbedPage {...props} />
|
return <ContractEmbedPage {...props} />
|
||||||
|
@ -90,9 +85,7 @@ export default function ContractPage(props: {
|
||||||
return <Custom404 />
|
return <Custom404 />
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return <ContractPageContent key={contract.id} {...{ ...props, contract }} />
|
||||||
<ContractPageContent key={contract.id} {...{ ...props, contract, user }} />
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// requires an admin to resolve a week after market closes
|
// requires an admin to resolve a week after market closes
|
||||||
|
@ -100,12 +93,10 @@ export function needsAdminToResolve(contract: Contract) {
|
||||||
return !contract.isResolved && dayjs().diff(contract.closeTime, 'day') > 7
|
return !contract.isResolved && dayjs().diff(contract.closeTime, 'day') > 7
|
||||||
}
|
}
|
||||||
|
|
||||||
export function ContractPageSidebar(props: {
|
export function ContractPageSidebar(props: { contract: Contract }) {
|
||||||
user: User | null | undefined
|
const { contract } = props
|
||||||
contract: Contract
|
|
||||||
}) {
|
|
||||||
const { contract, user } = props
|
|
||||||
const { creatorId, isResolved, outcomeType } = contract
|
const { creatorId, isResolved, outcomeType } = contract
|
||||||
|
const user = useUser()
|
||||||
const isCreator = user?.id === creatorId
|
const isCreator = user?.id === creatorId
|
||||||
const isBinary = outcomeType === 'BINARY'
|
const isBinary = outcomeType === 'BINARY'
|
||||||
const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC'
|
const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC'
|
||||||
|
@ -154,11 +145,11 @@ export function ContractPageSidebar(props: {
|
||||||
export function ContractPageContent(
|
export function ContractPageContent(
|
||||||
props: Parameters<typeof ContractPage>[0] & {
|
props: Parameters<typeof ContractPage>[0] & {
|
||||||
contract: Contract
|
contract: Contract
|
||||||
user?: User | null
|
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
const { backToHome, user } = props
|
const { backToHome } = props
|
||||||
const contract = useContractWithPreload(props.contract) ?? props.contract
|
const contract = useContractWithPreload(props.contract) ?? props.contract
|
||||||
|
const user = useUser()
|
||||||
usePrefetch(user?.id)
|
usePrefetch(user?.id)
|
||||||
useTracking(
|
useTracking(
|
||||||
'view market',
|
'view market',
|
||||||
|
@ -198,9 +189,8 @@ export function ContractPageContent(
|
||||||
contractId: contract.id,
|
contractId: contract.id,
|
||||||
})
|
})
|
||||||
|
|
||||||
const rightSidebar = <ContractPageSidebar user={user} contract={contract} />
|
|
||||||
return (
|
return (
|
||||||
<Page rightSidebar={rightSidebar}>
|
<Page rightSidebar={<ContractPageSidebar contract={contract} />}>
|
||||||
{showConfetti && (
|
{showConfetti && (
|
||||||
<FullscreenConfetti recycle={false} numberOfPieces={300} />
|
<FullscreenConfetti recycle={false} numberOfPieces={300} />
|
||||||
)}
|
)}
|
||||||
|
@ -258,7 +248,7 @@ export function ContractPageContent(
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
<ContractTabs contract={contract} user={user} bets={bets} />
|
<ContractTabs contract={contract} bets={bets} />
|
||||||
{!user ? (
|
{!user ? (
|
||||||
<Col className="mt-4 max-w-sm items-center xl:hidden">
|
<Col className="mt-4 max-w-sm items-center xl:hidden">
|
||||||
<BetSignUpPrompt />
|
<BetSignUpPrompt />
|
||||||
|
|
|
@ -54,10 +54,7 @@ export default function ContractEmbedPage(props: {
|
||||||
contract: Contract | null
|
contract: Contract | null
|
||||||
bets: Bet[]
|
bets: Bet[]
|
||||||
}) {
|
}) {
|
||||||
props = usePropz(props, getStaticPropz) ?? {
|
props = usePropz(props, getStaticPropz) ?? { contract: null, bets: [] }
|
||||||
contract: null,
|
|
||||||
bets: [],
|
|
||||||
}
|
|
||||||
|
|
||||||
const contract = useContractWithPreload(props.contract)
|
const contract = useContractWithPreload(props.contract)
|
||||||
const { bets } = props
|
const { bets } = props
|
||||||
|
|
Loading…
Reference in New Issue
Block a user