Fix props to be empty object
This commit is contained in:
parent
dc29ca531c
commit
bb897a0a0f
|
@ -11,11 +11,17 @@ type PropzProps = {
|
||||||
// This allows us to client-side render the page for authenticated users.
|
// This allows us to client-side render the page for authenticated users.
|
||||||
// TODO: Could cache the result using stale-while-revalidate: https://swr.vercel.app/
|
// TODO: Could cache the result using stale-while-revalidate: https://swr.vercel.app/
|
||||||
export function usePropz(
|
export function usePropz(
|
||||||
|
initialProps: Object,
|
||||||
getStaticPropz: (props: PropzProps) => Promise<any>,
|
getStaticPropz: (props: PropzProps) => Promise<any>,
|
||||||
// Dynamic routes will need the query params from the router
|
// Dynamic routes will need the query params from the router
|
||||||
needParams?: boolean
|
needParams?: boolean
|
||||||
) {
|
) {
|
||||||
// Get params from router
|
// If props were successfully server-side generated, just use those
|
||||||
|
if (!_.isEmpty(initialProps)) {
|
||||||
|
return initialProps
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, get params from router
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const params = router.query
|
const params = router.query
|
||||||
|
|
||||||
|
@ -29,6 +35,7 @@ export function usePropz(
|
||||||
return propz
|
return propz
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Conditionally disable SSG for private Manifold instances
|
||||||
export function fromPropz(getStaticPropz: (props: PropzProps) => Promise<any>) {
|
export function fromPropz(getStaticPropz: (props: PropzProps) => Promise<any>) {
|
||||||
return IS_PRIVATE_MANIFOLD ? async () => {} : getStaticPropz
|
return IS_PRIVATE_MANIFOLD ? async () => ({ props: {} }) : getStaticPropz
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,16 +79,15 @@ export default function ContractPage(props: {
|
||||||
slug: string
|
slug: string
|
||||||
folds: Fold[]
|
folds: Fold[]
|
||||||
}) {
|
}) {
|
||||||
props = props ??
|
props = usePropz(props, getStaticPropz, true) ?? {
|
||||||
usePropz(getStaticPropz, true) ?? {
|
contract: null,
|
||||||
contract: null,
|
username: '',
|
||||||
username: '',
|
comments: [],
|
||||||
comments: [],
|
answers: [],
|
||||||
answers: [],
|
bets: [],
|
||||||
bets: [],
|
slug: '',
|
||||||
slug: '',
|
folds: [],
|
||||||
folds: [],
|
}
|
||||||
}
|
|
||||||
const user = useUser()
|
const user = useUser()
|
||||||
|
|
||||||
const contract = useContractWithPreload(props.slug, props.contract)
|
const contract = useContractWithPreload(props.slug, props.contract)
|
||||||
|
|
|
@ -5,12 +5,13 @@ import { Col } from '../components/layout/col'
|
||||||
import { Spacer } from '../components/layout/spacer'
|
import { Spacer } from '../components/layout/spacer'
|
||||||
import { Page } from '../components/page'
|
import { Page } from '../components/page'
|
||||||
import { Title } from '../components/title'
|
import { Title } from '../components/title'
|
||||||
import { usePropz } from '../hooks/use-propz'
|
import { fromPropz, usePropz } from '../hooks/use-propz'
|
||||||
import { getDailyBets } from '../lib/firebase/bets'
|
import { getDailyBets } from '../lib/firebase/bets'
|
||||||
import { getDailyComments } from '../lib/firebase/comments'
|
import { getDailyComments } from '../lib/firebase/comments'
|
||||||
import { getDailyContracts } from '../lib/firebase/contracts'
|
import { getDailyContracts } from '../lib/firebase/contracts'
|
||||||
import { IS_PRIVATE_MANIFOLD } from '../lib/firebase/init'
|
import { IS_PRIVATE_MANIFOLD } from '../lib/firebase/init'
|
||||||
|
|
||||||
|
export const getStaticProps = fromPropz(getStaticPropz)
|
||||||
export async function getStaticPropz() {
|
export async function getStaticPropz() {
|
||||||
const numberOfDays = 80
|
const numberOfDays = 80
|
||||||
const today = dayjs(dayjs().format('YYYY-MM-DD'))
|
const today = dayjs(dayjs().format('YYYY-MM-DD'))
|
||||||
|
@ -56,7 +57,7 @@ export default function Analytics(props: {
|
||||||
dailyContractCounts: number[]
|
dailyContractCounts: number[]
|
||||||
dailyCommentCounts: number[]
|
dailyCommentCounts: number[]
|
||||||
}) {
|
}) {
|
||||||
props = usePropz(getStaticPropz) ?? {
|
props = usePropz(props, getStaticPropz) ?? {
|
||||||
startDate: 0,
|
startDate: 0,
|
||||||
dailyActiveUsers: [],
|
dailyActiveUsers: [],
|
||||||
dailyBetCounts: [],
|
dailyBetCounts: [],
|
||||||
|
|
|
@ -38,12 +38,13 @@ import FeedCreate from '../../../components/feed-create'
|
||||||
import { SEO } from '../../../components/SEO'
|
import { SEO } from '../../../components/SEO'
|
||||||
import { useTaggedContracts } from '../../../hooks/use-contracts'
|
import { useTaggedContracts } from '../../../hooks/use-contracts'
|
||||||
import { Linkify } from '../../../components/linkify'
|
import { Linkify } from '../../../components/linkify'
|
||||||
import { usePropz } from '../../../hooks/use-propz'
|
import { fromPropz, usePropz } from '../../../hooks/use-propz'
|
||||||
import { filterDefined } from '../../../../common/util/array'
|
import { filterDefined } from '../../../../common/util/array'
|
||||||
import { useRecentBets } from '../../../hooks/use-bets'
|
import { useRecentBets } from '../../../hooks/use-bets'
|
||||||
import { useRecentComments } from '../../../hooks/use-comments'
|
import { useRecentComments } from '../../../hooks/use-comments'
|
||||||
import { LoadingIndicator } from '../../../components/loading-indicator'
|
import { LoadingIndicator } from '../../../components/loading-indicator'
|
||||||
|
|
||||||
|
export const getStaticProps = fromPropz(getStaticPropz)
|
||||||
export async function getStaticPropz(props: { params: { slugs: string[] } }) {
|
export async function getStaticPropz(props: { params: { slugs: string[] } }) {
|
||||||
const { slugs } = props.params
|
const { slugs } = props.params
|
||||||
|
|
||||||
|
@ -100,7 +101,7 @@ async function toTopUsers(userScores: { [userId: string]: number }) {
|
||||||
return topUsers.filter((user) => user)
|
return topUsers.filter((user) => user)
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function getStaticPathz() {
|
export async function getStaticPaths() {
|
||||||
return { paths: [], fallback: 'blocking' }
|
return { paths: [], fallback: 'blocking' }
|
||||||
}
|
}
|
||||||
const foldSubpages = [undefined, 'activity', 'markets', 'leaderboards'] as const
|
const foldSubpages = [undefined, 'activity', 'markets', 'leaderboards'] as const
|
||||||
|
@ -117,8 +118,7 @@ export default function FoldPage(props: {
|
||||||
creatorScores: { [userId: string]: number }
|
creatorScores: { [userId: string]: number }
|
||||||
topCreators: User[]
|
topCreators: User[]
|
||||||
}) {
|
}) {
|
||||||
// @ts-ignore
|
props = usePropz(props, getStaticPropz, true) ?? {
|
||||||
props = usePropz(getStaticPropz, true) ?? {
|
|
||||||
fold: null,
|
fold: null,
|
||||||
curator: null,
|
curator: null,
|
||||||
contracts: [],
|
contracts: [],
|
||||||
|
|
|
@ -43,12 +43,11 @@ const Home = (props: {
|
||||||
folds: Fold[]
|
folds: Fold[]
|
||||||
recentComments: Comment[]
|
recentComments: Comment[]
|
||||||
}) => {
|
}) => {
|
||||||
props = props ??
|
props = usePropz(props, getStaticPropz) ?? {
|
||||||
usePropz(getStaticPropz) ?? {
|
contracts: [],
|
||||||
contracts: [],
|
folds: [],
|
||||||
folds: [],
|
recentComments: [],
|
||||||
recentComments: [],
|
}
|
||||||
}
|
|
||||||
const { folds } = props
|
const { folds } = props
|
||||||
const user = useUser()
|
const user = useUser()
|
||||||
|
|
||||||
|
|
|
@ -5,8 +5,9 @@ import { Leaderboard } from '../components/leaderboard'
|
||||||
import { Page } from '../components/page'
|
import { Page } from '../components/page'
|
||||||
import { getTopCreators, getTopTraders, User } from '../lib/firebase/users'
|
import { getTopCreators, getTopTraders, User } from '../lib/firebase/users'
|
||||||
import { formatMoney } from '../../common/util/format'
|
import { formatMoney } from '../../common/util/format'
|
||||||
import { usePropz } from '../hooks/use-propz'
|
import { fromPropz, usePropz } from '../hooks/use-propz'
|
||||||
|
|
||||||
|
export const getStaticProps = fromPropz(getStaticPropz)
|
||||||
export async function getStaticPropz() {
|
export async function getStaticPropz() {
|
||||||
const [topTraders, topCreators] = await Promise.all([
|
const [topTraders, topCreators] = await Promise.all([
|
||||||
getTopTraders().catch((_) => {}),
|
getTopTraders().catch((_) => {}),
|
||||||
|
@ -27,7 +28,7 @@ export default function Leaderboards(props: {
|
||||||
topTraders: User[]
|
topTraders: User[]
|
||||||
topCreators: User[]
|
topCreators: User[]
|
||||||
}) {
|
}) {
|
||||||
props = usePropz(getStaticPropz) ?? {
|
props = usePropz(props, getStaticPropz) ?? {
|
||||||
topTraders: [],
|
topTraders: [],
|
||||||
topCreators: [],
|
topCreators: [],
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user