diff --git a/web/components/contracts-list.tsx b/web/components/contracts-list.tsx index cf5364fd..c68e443c 100644 --- a/web/components/contracts-list.tsx +++ b/web/components/contracts-list.tsx @@ -7,6 +7,8 @@ import { contractMetrics, Contract, listContracts, + getBinaryProbPercent, + getBinaryProb, } from '../lib/firebase/contracts' import { User } from '../lib/firebase/users' import { Col } from './layout/col' @@ -14,6 +16,7 @@ import { SiteLink } from './site-link' import { ContractCard } from './contract-card' import { Sort, useQueryAndSortParams } from '../hooks/use-sort-and-query-params' import { Answer } from '../../common/answer' +import { getProbability } from '../../common/calculate' export function ContractsGrid(props: { contracts: Contract[] @@ -254,6 +257,12 @@ export function SearchableGrid(props: { matches = _.sortBy(matches, ({ volume24Hours }) => -1 * volume24Hours) } else if (sort === 'creator' || sort === 'tag') { matches.sort((a, b) => b.volume7Days - a.volume7Days) + } else if (sort === 'most-likely') { + matches = _.sortBy(matches, (contract) => -getBinaryProb(contract)) + } else if (sort === 'least-likely') { + // Exclude non-binary contracts + matches = matches.filter((contract) => getBinaryProb(contract) !== 0) + matches = _.sortBy(matches, (contract) => getBinaryProb(contract)) } if (sort !== 'all') { @@ -290,6 +299,8 @@ export function SearchableGrid(props: { + + {!byOneCreator && } diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts index 5436a25b..70e09deb 100644 --- a/web/lib/firebase/contracts.ts +++ b/web/lib/firebase/contracts.ts @@ -50,15 +50,16 @@ export function contractMetrics(contract: Contract) { return { truePool, liquidityLabel, createdDate, resolvedDate } } -export function getBinaryProbPercent(contract: FullContract) { +export function getBinaryProb(contract: FullContract) { const { totalShares, pool, p, resolutionProbability, mechanism } = contract - const prob = - resolutionProbability ?? mechanism === 'cpmm-1' - ? getCpmmProbability(pool, p) - : getDpmProbability(totalShares) + return resolutionProbability ?? mechanism === 'cpmm-1' + ? getCpmmProbability(pool, p) + : getDpmProbability(totalShares) +} - return formatPercent(prob) +export function getBinaryProbPercent(contract: FullContract) { + return formatPercent(getBinaryProb(contract)) } export function tradingAllowed(contract: Contract) {