import { track } from '@amplitude/analytics-browser' import clsx from 'clsx' import { CPMMBinaryContract, PseudoNumericContract } from 'common/contract' import { APIError } from 'web/lib/firebase/api' import { useState } from 'react' import { useMutation } from 'react-query' import { placeBet } from 'web/lib/firebase/api' import { BuyAmountInput } from './amount-input' import { Button } from './button' import { Row } from './layout/row' import { YesNoSelector } from './yes-no-selector' export function BetInline(props: { contract: CPMMBinaryContract | PseudoNumericContract className?: string }) { const { contract, className } = props const [outcome, setOutcome] = useState<'YES' | 'NO'>('YES') const [amount, setAmount] = useState() const [error, setError] = useState() // adapted from bet-panel.ts submitBet() const submitBet = useMutation( () => placeBet({ outcome, amount, contractId: contract.id }), { onError: (e) => setError(e instanceof APIError ? e.toString() : 'Error placing bet'), onSuccess: () => { track('bet', { location: 'embed', outcomeType: contract.outcomeType, slug: contract.slug, contractId: contract.id, amount, outcome, isLimitOrder: false, }) }, } ) const betDisabled = submitBet.isLoading || submitBet.isError || !amount return (
Bet
) }