Move hot & closing markets to All Markets

Soon to be named "Explore"
This commit is contained in:
Austin Chen 2022-01-19 13:07:07 -05:00
parent 9457ac9337
commit 4afc641314
2 changed files with 58 additions and 59 deletions

View File

@ -1,14 +1,7 @@
import React from 'react' import React from 'react'
import _ from 'lodash' import _ from 'lodash'
import { import { Contract, listAllContracts } from '../lib/firebase/contracts'
Contract,
getClosingSoonContracts,
getHotContracts,
listAllContracts,
} from '../lib/firebase/contracts'
import { Spacer } from '../components/layout/spacer'
import { Page } from '../components/page' import { Page } from '../components/page'
import { Title } from '../components/title'
import { ActivityFeed, findActiveContracts } from './activity' import { ActivityFeed, findActiveContracts } from './activity'
import { import {
getRecentComments, getRecentComments,
@ -16,14 +9,10 @@ import {
listAllComments, listAllComments,
} from '../lib/firebase/comments' } from '../lib/firebase/comments'
import { Bet, listAllBets } from '../lib/firebase/bets' import { Bet, listAllBets } from '../lib/firebase/bets'
import { ContractsGrid } from '../components/contracts-list'
export async function getStaticProps() { export async function getStaticProps() {
const [contracts, hotContracts, closingSoonContracts, recentComments] = const [contracts, recentComments] = await Promise.all([
await Promise.all([
listAllContracts().catch((_) => []), listAllContracts().catch((_) => []),
getHotContracts().catch(() => []),
getClosingSoonContracts().catch(() => []),
getRecentComments().catch(() => []), getRecentComments().catch(() => []),
]) ])
@ -40,8 +29,6 @@ export async function getStaticProps() {
activeContracts, activeContracts,
activeContractBets, activeContractBets,
activeContractComments, activeContractComments,
hotContracts,
closingSoonContracts,
}, },
revalidate: 60, // regenerate after a minute revalidate: 60, // regenerate after a minute
@ -52,23 +39,11 @@ const Home = (props: {
activeContracts: Contract[] activeContracts: Contract[]
activeContractBets: Bet[][] activeContractBets: Bet[][]
activeContractComments: Comment[][] activeContractComments: Comment[][]
hotContracts: Contract[]
closingSoonContracts: Contract[]
}) => { }) => {
const { const { activeContracts, activeContractBets, activeContractComments } = props
activeContracts,
activeContractBets,
activeContractComments,
hotContracts,
closingSoonContracts,
} = props
return ( return (
<Page> <Page>
<HotMarkets contracts={hotContracts} />
<Spacer h={10} />
<ClosingSoonMarkets contracts={closingSoonContracts} />
<Spacer h={10} />
<ActivityFeed <ActivityFeed
contracts={activeContracts} contracts={activeContracts}
contractBets={activeContractBets} contractBets={activeContractBets}
@ -78,28 +53,4 @@ const Home = (props: {
) )
} }
const HotMarkets = (props: { contracts: Contract[] }) => {
const { contracts } = props
if (contracts.length === 0) return <></>
return (
<div className="w-full bg-indigo-50 border-2 border-indigo-100 p-6 rounded-lg shadow-md">
<Title className="mt-0" text="🔥 Markets" />
<ContractsGrid contracts={contracts} showHotVolume />
</div>
)
}
const ClosingSoonMarkets = (props: { contracts: Contract[] }) => {
const { contracts } = props
if (contracts.length === 0) return <></>
return (
<div className="w-full bg-green-50 border-2 border-green-100 p-6 rounded-lg shadow-md">
<Title className="mt-0" text="⏰ Closing soon" />
<ContractsGrid contracts={contracts} showCloseTime />
</div>
)
}
export default Home export default Home

View File

@ -1,25 +1,44 @@
import _ from 'lodash' import _ from 'lodash'
import { SearchableGrid } from '../components/contracts-list' import { ContractsGrid, SearchableGrid } from '../components/contracts-list'
import { Spacer } from '../components/layout/spacer'
import { Page } from '../components/page' import { Page } from '../components/page'
import { SEO } from '../components/SEO' import { SEO } from '../components/SEO'
import { Title } from '../components/title'
import { useContracts } from '../hooks/use-contracts' import { useContracts } from '../hooks/use-contracts'
import { useQueryAndSortParams } from '../hooks/use-sort-and-query-params' import { useQueryAndSortParams } from '../hooks/use-sort-and-query-params'
import { Contract, listAllContracts } from '../lib/firebase/contracts' import {
Contract,
getClosingSoonContracts,
getHotContracts,
listAllContracts,
} from '../lib/firebase/contracts'
export async function getStaticProps() { export async function getStaticProps() {
const contracts = await listAllContracts().catch((_) => {}) const [contracts, hotContracts, closingSoonContracts] = await Promise.all([
listAllContracts().catch((_) => []),
getHotContracts().catch(() => []),
getClosingSoonContracts().catch(() => []),
])
return { return {
props: { props: {
contracts, contracts,
hotContracts,
closingSoonContracts,
}, },
revalidate: 60, // regenerate after a minute revalidate: 60, // regenerate after a minute
} }
} }
export default function Markets(props: { contracts: Contract[] }) { // TODO: Rename endpoint to "Explore"
export default function Markets(props: {
contracts: Contract[]
hotContracts: Contract[]
closingSoonContracts: Contract[]
}) {
const contracts = useContracts() ?? props.contracts const contracts = useContracts() ?? props.contracts
const { hotContracts, closingSoonContracts } = props
const { query, setQuery, sort, setSort } = useQueryAndSortParams() const { query, setQuery, sort, setSort } = useQueryAndSortParams()
return ( return (
@ -29,6 +48,11 @@ export default function Markets(props: { contracts: Contract[] }) {
description="Discover what's new, trending, or soon-to-close. Or search among our hundreds of markets." description="Discover what's new, trending, or soon-to-close. Or search among our hundreds of markets."
url="/markets" url="/markets"
/> />
<HotMarkets contracts={hotContracts} />
<Spacer h={10} />
<ClosingSoonMarkets contracts={closingSoonContracts} />
<Spacer h={10} />
<SearchableGrid <SearchableGrid
contracts={contracts} contracts={contracts}
query={query} query={query}
@ -39,3 +63,27 @@ export default function Markets(props: { contracts: Contract[] }) {
</Page> </Page>
) )
} }
const HotMarkets = (props: { contracts: Contract[] }) => {
const { contracts } = props
if (contracts.length === 0) return <></>
return (
<div className="w-full bg-indigo-50 border-2 border-indigo-100 p-6 rounded-lg shadow-md">
<Title className="mt-0" text="🔥 Markets" />
<ContractsGrid contracts={contracts} showHotVolume />
</div>
)
}
const ClosingSoonMarkets = (props: { contracts: Contract[] }) => {
const { contracts } = props
if (contracts.length === 0) return <></>
return (
<div className="w-full bg-green-50 border-2 border-green-100 p-6 rounded-lg shadow-md">
<Title className="mt-0" text="⏰ Closing soon" />
<ContractsGrid contracts={contracts} showCloseTime />
</div>
)
}