listen for updates
This commit is contained in:
parent
0e9577101f
commit
b7f5c0bf89
|
@ -5,7 +5,10 @@ import { useEffect, useState } from 'react'
|
|||
import { getProbability } from 'common/calculate'
|
||||
import { Contract, CPMMBinaryContract } from 'common/contract'
|
||||
import { Customize, USAMap } from './usa-map'
|
||||
import { getContractFromSlug } from 'web/lib/firebase/contracts'
|
||||
import {
|
||||
getContractFromSlug,
|
||||
listenForContract,
|
||||
} from 'web/lib/firebase/contracts'
|
||||
|
||||
export interface StateElectionMarket {
|
||||
creatorUsername: string
|
||||
|
@ -59,5 +62,24 @@ const useContracts = (slugs: string[]) => {
|
|||
)
|
||||
}, [slugs])
|
||||
|
||||
useEffect(() => {
|
||||
if (contracts.some((c) => c === undefined)) return
|
||||
|
||||
// listen to contract updates
|
||||
const unsubs = (contracts as Contract[]).map((c, i) =>
|
||||
listenForContract(
|
||||
c.id,
|
||||
(newC) => newC && setContracts(setAt(contracts, i, newC))
|
||||
)
|
||||
)
|
||||
return () => unsubs.forEach((u) => u())
|
||||
}, [contracts])
|
||||
|
||||
return contracts
|
||||
}
|
||||
|
||||
function setAt<T>(arr: T[], i: number, val: T) {
|
||||
const newArr = [...arr]
|
||||
newArr[i] = val
|
||||
return newArr
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user