diff --git a/web/components/contracts-list.tsx b/web/components/contracts-list.tsx index d758899e..7917d463 100644 --- a/web/components/contracts-list.tsx +++ b/web/components/contracts-list.tsx @@ -227,11 +227,16 @@ export function SearchableGrid(props: { (contract) => -1 * (contract.resolutionTime ?? 0) ) } else if (sort === 'close-date') { + matches = _.sortBy(matches, ({ volume24Hours }) => -1 * volume24Hours) matches = _.sortBy(matches, (contract) => contract.closeTime) } else if (sort === 'most-traded') { matches.sort( (a, b) => contractMetrics(b).truePool - contractMetrics(a).truePool ) + } else if (sort === '24-hour-vol') { + // Use lodash for stable sort, so previous sort breaks all ties. + matches = _.sortBy(matches, ({ volume7Days }) => -1 * volume7Days) + matches = _.sortBy(matches, ({ volume24Hours }) => -1 * volume24Hours) } else if (sort === 'creator' || sort === 'tag') { matches.sort((a, b) => b.volume7Days - a.volume7Days) } @@ -259,16 +264,15 @@ export function SearchableGrid(props: { value={sort} onChange={(e) => setSort(e.target.value as Sort)} > - {byOneCreator ? ( - - ) : ( - - )} - + + + + + {!byOneCreator && } - + {byOneCreator && } diff --git a/web/hooks/use-sort-and-query-params.tsx b/web/hooks/use-sort-and-query-params.tsx index 6ff6aa5e..17cf33b4 100644 --- a/web/hooks/use-sort-and-query-params.tsx +++ b/web/hooks/use-sort-and-query-params.tsx @@ -5,6 +5,7 @@ export type Sort = | 'tag' | 'newest' | 'most-traded' + | '24-hour-vol' | 'close-date' | 'resolved' | 'all'