60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
|
import _ from 'lodash'
|
||
|
import { Contract } from '../../../../common/contract'
|
||
|
import { Fold } from '../../../../common/fold'
|
||
|
import { SearchableGrid } from '../../../components/contracts-list'
|
||
|
import { FoldBack } from '../../../components/fold-back'
|
||
|
import { Spacer } from '../../../components/layout/spacer'
|
||
|
import { Page } from '../../../components/page'
|
||
|
import { SEO } from '../../../components/SEO'
|
||
|
import { useQueryAndSortParams } from '../../../hooks/use-sort-and-query-params'
|
||
|
import { getFoldBySlug, getFoldContracts } from '../../../lib/firebase/folds'
|
||
|
|
||
|
export async function getStaticProps(props: { params: { foldSlug: string } }) {
|
||
|
const { foldSlug } = props.params
|
||
|
|
||
|
const fold = await getFoldBySlug(foldSlug)
|
||
|
const contracts = fold ? await getFoldContracts(fold) : []
|
||
|
|
||
|
return {
|
||
|
props: {
|
||
|
fold,
|
||
|
contracts,
|
||
|
},
|
||
|
|
||
|
revalidate: 60, // regenerate after a minute
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function getStaticPaths() {
|
||
|
return { paths: [], fallback: 'blocking' }
|
||
|
}
|
||
|
|
||
|
export default function Markets(props: { fold: Fold; contracts: Contract[] }) {
|
||
|
const { fold, contracts } = props
|
||
|
const { query, setQuery, sort, setSort } = useQueryAndSortParams({
|
||
|
defaultSort: 'most-traded',
|
||
|
})
|
||
|
|
||
|
return (
|
||
|
<Page>
|
||
|
<SEO
|
||
|
title={`${fold.name}'s markets`}
|
||
|
description={`Explore or search all the markets of ${fold.name}`}
|
||
|
url="/markets"
|
||
|
/>
|
||
|
|
||
|
<FoldBack fold={fold} />
|
||
|
|
||
|
<Spacer h={4} />
|
||
|
|
||
|
<SearchableGrid
|
||
|
contracts={contracts}
|
||
|
query={query}
|
||
|
setQuery={setQuery}
|
||
|
sort={sort}
|
||
|
setSort={setSort}
|
||
|
/>
|
||
|
</Page>
|
||
|
)
|
||
|
}
|