Switch to sending only recent bets and comments from static props

This commit is contained in:
James Grugett 2022-02-18 12:43:13 -06:00
parent 963c578a73
commit 2a5172cb48

View File

@ -5,8 +5,8 @@ import _ from 'lodash'
import { Contract, listAllContracts } from '../lib/firebase/contracts' import { Contract, listAllContracts } from '../lib/firebase/contracts'
import { Page } from '../components/page' import { Page } from '../components/page'
import { ActivityFeed, findActiveContracts } from './activity' import { ActivityFeed, findActiveContracts } from './activity'
import { Comment, listAllComments } from '../lib/firebase/comments' import { Comment, getRecentComments } from '../lib/firebase/comments'
import { Bet, listAllBets } from '../lib/firebase/bets' import { Bet, getRecentBets } from '../lib/firebase/bets'
import FeedCreate from '../components/feed-create' import FeedCreate from '../components/feed-create'
import { Spacer } from '../components/layout/spacer' import { Spacer } from '../components/layout/spacer'
import { Col } from '../components/layout/col' import { Col } from '../components/layout/col'
@ -30,16 +30,16 @@ export async function getStaticProps() {
listAllFolds().catch(() => []), listAllFolds().catch(() => []),
]) ])
const [contractBets, contractComments] = await Promise.all([ const [recentBets, recentComments] = await Promise.all([
Promise.all(contracts.map((contract) => listAllBets(contract.id))), getRecentBets(),
Promise.all(contracts.map((contract) => listAllComments(contract.id))), getRecentComments(),
]) ])
return { return {
props: { props: {
contracts, contracts,
contractBets, recentBets,
contractComments, recentComments,
folds, folds,
}, },
@ -49,18 +49,15 @@ export async function getStaticProps() {
const Home = (props: { const Home = (props: {
contracts: Contract[] contracts: Contract[]
contractBets: Bet[][]
contractComments: Comment[][]
folds: Fold[] folds: Fold[]
recentBets: Bet[]
recentComments: Comment[]
}) => { }) => {
const { contractBets, contractComments, folds } = props const { folds, recentBets, recentComments } = props
const user = useUser() const user = useUser()
const contracts = useUpdatedContracts(props.contracts) const contracts = useUpdatedContracts(props.contracts)
const contractIdToIndex = _.fromPairs(
contracts.map((contract, index) => [contract.id, index])
)
const followedFoldIds = useFollowedFolds(user) const followedFoldIds = useFollowedFolds(user)
const followedFolds = filterDefined( const followedFolds = filterDefined(
@ -88,29 +85,25 @@ const Home = (props: {
) )
} }
const oneDayMS = 24 * 60 * 60 * 1000 const activeContracts = findActiveContracts(
const recentBets = (feedContracts ?? []) feedContracts,
.map((c) => contractBets[contractIdToIndex[c.id]]) recentComments,
.flat() recentBets,
.filter((bet) => bet.createdTime > Date.now() - oneDayMS) 365
const feedComments = (feedContracts ?? [])
.map((c) => contractComments[contractIdToIndex[c.id]])
.flat()
const activeContracts =
feedContracts &&
findActiveContracts(feedContracts, feedComments, recentBets, 365)
const activeBets = activeContracts
? activeContracts.map(
(contract) => contractBets[contractIdToIndex[contract.id]]
) )
: []
const activeComments = activeContracts const betsByContract = _.groupBy(recentBets, (bet) => bet.contractId)
? activeContracts.map( const activeBets = activeContracts.map(
(contract) => contractComments[contractIdToIndex[contract.id]] (contract) => betsByContract[contract.id] ?? []
)
const commentsByContract = _.groupBy(
recentComments,
(comment) => comment.contractId
)
const activeComments = activeContracts.map(
(contract) => commentsByContract[contract.id] ?? []
) )
: []
if (user === null) { if (user === null) {
Router.replace('/') Router.replace('/')