diff --git a/web/components/bets-list.tsx b/web/components/bets-list.tsx index 8bf94de2..3f185b0f 100644 --- a/web/components/bets-list.tsx +++ b/web/components/bets-list.tsx @@ -8,6 +8,7 @@ import { useUserBets } from 'web/hooks/use-user-bets' import { Bet } from 'web/lib/firebase/bets' import { User } from 'web/lib/firebase/users' import { + formatLargeNumber, formatMoney, formatPercent, formatWithCommas, @@ -24,13 +25,7 @@ import { Row } from './layout/row' import { UserLink } from './user-page' import { sellBet } from 'web/lib/firebase/api-call' import { ConfirmationButton } from './confirmation-button' -import { - OutcomeLabel, - YesLabel, - NoLabel, - HigherLabel, - LowerLabel, -} from './outcome-label' +import { OutcomeLabel, YesLabel, NoLabel } from './outcome-label' import { filterDefined } from 'common/util/array' import { LoadingIndicator } from './loading-indicator' import { SiteLink } from './site-link' @@ -46,6 +41,7 @@ import { import { useTimeSinceFirstRender } from 'web/hooks/use-time-since-first-render' import { trackLatency } from 'web/lib/firebase/tracking' import { NumericContract } from 'common/contract' +import { formatNumericProbability } from 'common/pseudo-numeric' import { useUser } from 'web/hooks/use-user' import { SellSharesModal } from './sell-modal' @@ -438,7 +434,7 @@ export function BetsSummary(props: { <>
- Payout if + Payout if {'>='} {formatLargeNumber(contract.max)}
{formatMoney(yesWinnings)} @@ -446,7 +442,7 @@ export function BetsSummary(props: {
- Payout if + Payout if {'<='} {formatLargeNumber(contract.min)}
{formatMoney(noWinnings)} @@ -533,13 +529,15 @@ export function ContractBetsTable(props: { const { isResolved, mechanism, outcomeType } = contract const isCPMM = mechanism === 'cpmm-1' const isNumeric = outcomeType === 'NUMERIC' + const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC' return (
{amountRedeemed > 0 && ( <>
- {amountRedeemed} YES shares and {amountRedeemed} NO shares + {amountRedeemed} {isPseudoNumeric ? 'HIGHER' : 'YES'} shares and{' '} + {amountRedeemed} {isPseudoNumeric ? 'LOWER' : 'NO'} shares automatically redeemed for {formatMoney(amountRedeemed)}.
@@ -567,7 +565,7 @@ export function ContractBetsTable(props: { )} {!isCPMM && !isResolved && Payout if chosen} Shares - Probability + {!isPseudoNumeric && Probability} Date @@ -611,6 +609,7 @@ function BetRow(props: { const isCPMM = mechanism === 'cpmm-1' const isNumeric = outcomeType === 'NUMERIC' + const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC' const saleAmount = saleBet?.sale?.amount @@ -654,14 +653,17 @@ function BetRow(props: { truncate="short" /> )} + {isPseudoNumeric && ' than ' +formatNumericProbability(bet.probAfter, contract)} {formatMoney(Math.abs(amount))} {!isCPMM && !isNumeric && {saleDisplay}} {!isCPMM && !isResolved && {payoutIfChosenDisplay}} {formatWithCommas(Math.abs(shares))} - - {formatPercent(probBefore)} → {formatPercent(probAfter)} - + {!isPseudoNumeric && ( + + {formatPercent(probBefore)} → {formatPercent(probAfter)} + + )} {dayjs(createdTime).format('MMM D, h:mma')} ) diff --git a/web/components/feed/feed-bets.tsx b/web/components/feed/feed-bets.tsx index ae22b4b8..2ffdae8e 100644 --- a/web/components/feed/feed-bets.tsx +++ b/web/components/feed/feed-bets.tsx @@ -7,13 +7,14 @@ import { Row } from 'web/components/layout/row' import { Avatar, EmptyAvatar } from 'web/components/avatar' import clsx from 'clsx' import { UsersIcon } from '@heroicons/react/solid' -import { formatMoney } from 'common/util/format' +import { formatMoney, formatPercent } from 'common/util/format' import { OutcomeLabel } from 'web/components/outcome-label' import { RelativeTimestamp } from 'web/components/relative-timestamp' import React, { Fragment } from 'react' import { uniqBy, partition, sumBy, groupBy } from 'lodash' import { JoinSpans } from 'web/components/join-spans' import { UserLink } from '../user-page' +import { formatNumericProbability } from 'common/pseudo-numeric' export function FeedBet(props: { contract: Contract @@ -75,6 +76,8 @@ export function BetStatusText(props: { hideOutcome?: boolean }) { const { bet, contract, bettor, isSelf, hideOutcome } = props + const { outcomeType } = contract + const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC' const { amount, outcome, createdTime } = bet const bought = amount >= 0 ? 'bought' : 'sold' @@ -97,7 +100,10 @@ export function BetStatusText(props: { value={(bet as any).value} contract={contract} truncate="short" - /> + />{' '} + {isPseudoNumeric + ? ' than ' + formatNumericProbability(bet.probAfter, contract) + : ' at ' + formatPercent(bet.probAfter)} )} diff --git a/web/components/outcome-label.tsx b/web/components/outcome-label.tsx index 27f1721d..a94618e4 100644 --- a/web/components/outcome-label.tsx +++ b/web/components/outcome-label.tsx @@ -112,11 +112,11 @@ export function YesLabel() { } export function HigherLabel() { - return HIGH + return HIGHER } export function LowerLabel() { - return LOW + return LOWER } export function NoLabel() { diff --git a/web/components/yes-no-selector.tsx b/web/components/yes-no-selector.tsx index 9e2dfc5e..cac7bf74 100644 --- a/web/components/yes-no-selector.tsx +++ b/web/components/yes-no-selector.tsx @@ -43,7 +43,7 @@ export function YesNoSelector(props: { )} onClick={() => onSelect('YES')} > - {isPseudoNumeric ? 'Higher' : 'Bet YES'} + {isPseudoNumeric ? 'HIGHER' : 'Bet YES'} )} {replaceNoButton ? ( @@ -60,7 +60,7 @@ export function YesNoSelector(props: { )} onClick={() => onSelect('NO')} > - {isPseudoNumeric ? 'Lower' : 'Bet NO'} + {isPseudoNumeric ? 'LOWER' : 'Bet NO'} )}