Tidy up props a bit

This commit is contained in:
Marshall Polaris 2022-09-20 21:33:25 -07:00
parent 790c0b336b
commit 2551c41902
3 changed files with 15 additions and 31 deletions

View File

@ -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)

View File

@ -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 />

View File

@ -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