Clean up and fix stuff on answers panel (#914)

This commit is contained in:
Marshall Polaris 2022-09-22 12:40:55 -07:00 committed by GitHub
parent 6ee8d90bdb
commit 721448f408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -38,26 +38,13 @@ export function AnswersPanel(props: {
const answers = (useAnswers(contract.id) ?? contract.answers).filter( const answers = (useAnswers(contract.id) ?? contract.answers).filter(
(a) => a.number != 0 || contract.outcomeType === 'MULTIPLE_CHOICE' (a) => a.number != 0 || contract.outcomeType === 'MULTIPLE_CHOICE'
) )
const hasZeroBetAnswers = answers.some((answer) => totalBets[answer.id] < 1) const [winningAnswers, notWinningAnswers] = partition(
answers,
const [winningAnswers, losingAnswers] = partition( (a) => a.id === resolution || (resolutions && resolutions[a.id])
answers.filter((a) => (showAllAnswers ? true : totalBets[a.id] > 0)),
(answer) =>
answer.id === resolution || (resolutions && resolutions[answer.id])
) )
const sortedAnswers = [ const [visibleAnswers, invisibleAnswers] = partition(
...sortBy(winningAnswers, (answer) => sortBy(notWinningAnswers, (a) => -getOutcomeProbability(contract, a.id)),
resolutions ? -1 * resolutions[answer.id] : 0 (a) => showAllAnswers || totalBets[a.id] > 0
),
...sortBy(
resolution ? [] : losingAnswers,
(answer) => -1 * getDpmOutcomeProbability(contract.totalShares, answer.id)
),
]
const answerItems = sortBy(
losingAnswers.length > 0 ? losingAnswers : sortedAnswers,
(answer) => -getOutcomeProbability(contract, answer.id)
) )
const user = useUser() const user = useUser()
@ -107,13 +94,13 @@ export function AnswersPanel(props: {
return ( return (
<Col className="gap-3"> <Col className="gap-3">
{(resolveOption || resolution) && {(resolveOption || resolution) &&
sortedAnswers.map((answer) => ( sortBy(winningAnswers, (a) => -(resolutions?.[a.id] ?? 0)).map((a) => (
<AnswerItem <AnswerItem
key={answer.id} key={a.id}
answer={answer} answer={a}
contract={contract} contract={contract}
showChoice={showChoice} showChoice={showChoice}
chosenProb={chosenAnswers[answer.id]} chosenProb={chosenAnswers[a.id]}
totalChosenProb={chosenTotal} totalChosenProb={chosenTotal}
onChoose={onChoose} onChoose={onChoose}
onDeselect={onDeselect} onDeselect={onDeselect}
@ -127,10 +114,10 @@ export function AnswersPanel(props: {
tradingAllowed(contract) ? '' : '-mb-6' tradingAllowed(contract) ? '' : '-mb-6'
)} )}
> >
{answerItems.map((item) => ( {visibleAnswers.map((a) => (
<OpenAnswer key={item.id} answer={item} contract={contract} /> <OpenAnswer key={a.id} answer={a} contract={contract} />
))} ))}
{hasZeroBetAnswers && !showAllAnswers && ( {invisibleAnswers.length > 0 && !showAllAnswers && (
<Button <Button
className="self-end" className="self-end"
color="gray-white" color="gray-white"
@ -143,7 +130,7 @@ export function AnswersPanel(props: {
</Col> </Col>
)} )}
{answers.length <= 1 && ( {answers.length === 0 && (
<div className="pb-4 text-gray-500">No answers yet...</div> <div className="pb-4 text-gray-500">No answers yet...</div>
)} )}