diff --git a/web/hooks/use-algo-feed.ts b/web/hooks/use-algo-feed.ts index 365f4baa..f27a1870 100644 --- a/web/hooks/use-algo-feed.ts +++ b/web/hooks/use-algo-feed.ts @@ -36,7 +36,12 @@ export const useAlgoFeed = ( const [algoFeed, setAlgoFeed] = useState([]) useEffect(() => { - if (initialContracts && initialBets && initialComments) { + if ( + initialContracts && + initialBets && + initialComments && + yourBetContractIds + ) { const eligibleContracts = initialContracts.filter( (c) => !c.isResolved && (c.closeTime ?? Infinity) > Date.now() ) diff --git a/web/hooks/use-contracts.ts b/web/hooks/use-contracts.ts index 26c43ed1..c6d2be0e 100644 --- a/web/hooks/use-contracts.ts +++ b/web/hooks/use-contracts.ts @@ -6,6 +6,7 @@ import { listenForContracts, listenForHotContracts, listenForInactiveContracts, + listenForNewContracts, } from '../lib/firebase/contracts' import { listenForTaggedContracts } from '../lib/firebase/folds' @@ -20,13 +21,22 @@ export const useContracts = () => { } export const useActiveContracts = () => { - const [contracts, setContracts] = useState() + const [activeContracts, setActiveContracts] = useState< + Contract[] | undefined + >() + const [newContracts, setNewContracts] = useState() useEffect(() => { - return listenForActiveContracts(setContracts) + return listenForActiveContracts(setActiveContracts) }, []) - return contracts + useEffect(() => { + return listenForNewContracts(setNewContracts) + }, []) + + if (!activeContracts || !newContracts) return undefined + + return [...activeContracts, ...newContracts] } export const useInactiveContracts = () => { diff --git a/web/hooks/use-user-bets.ts b/web/hooks/use-user-bets.ts index 82606933..c11af097 100644 --- a/web/hooks/use-user-bets.ts +++ b/web/hooks/use-user-bets.ts @@ -54,13 +54,15 @@ export const useUserBetContracts = (userId: string | undefined) => { } export const useGetUserBetContractIds = (userId: string | undefined) => { - const [contractIds, setContractIds] = useState([]) + const [contractIds, setContractIds] = useState() useEffect(() => { - const key = `user-bet-contractIds-${userId}` - const userBetContractJson = localStorage.getItem(key) - if (userBetContractJson) { - setContractIds(JSON.parse(userBetContractJson)) + if (userId) { + const key = `user-bet-contractIds-${userId}` + const userBetContractJson = localStorage.getItem(key) + if (userBetContractJson) { + setContractIds(JSON.parse(userBetContractJson)) + } } }, [userId]) diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts index cc9118f9..1646bd09 100644 --- a/web/lib/firebase/contracts.ts +++ b/web/lib/firebase/contracts.ts @@ -22,6 +22,7 @@ import { getDpmProbability } from '../../../common/calculate-dpm' import { createRNG, shuffle } from '../../../common/util/random' import { getCpmmProbability } from '../../../common/calculate-cpmm' import { formatMoney, formatPercent } from '../../../common/util/format' +import { DAY_MS } from '../../../common/util/time' export type { Contract } export function contractPath(contract: Contract) { @@ -162,6 +163,19 @@ export function listenForInactiveContracts( return listenForValues(inactiveContractsQuery, setContracts) } +const newContractsQuery = query( + contractCollection, + where('isResolved', '==', false), + where('volume7Days', '==', 0), + where('createdTime', '>', Date.now() - 7 * DAY_MS) +) + +export function listenForNewContracts( + setContracts: (contracts: Contract[]) => void +) { + return listenForValues(newContractsQuery, setContracts) +} + export function listenForContract( contractId: string, setContract: (contract: Contract | null) => void