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