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 { getProbability } from 'common/calculate'
|
||||||
import { Contract, CPMMBinaryContract } from 'common/contract'
|
import { Contract, CPMMBinaryContract } from 'common/contract'
|
||||||
import { Customize, USAMap } from './usa-map'
|
import { Customize, USAMap } from './usa-map'
|
||||||
import { getContractFromSlug } from 'web/lib/firebase/contracts'
|
import {
|
||||||
|
getContractFromSlug,
|
||||||
|
listenForContract,
|
||||||
|
} from 'web/lib/firebase/contracts'
|
||||||
|
|
||||||
export interface StateElectionMarket {
|
export interface StateElectionMarket {
|
||||||
creatorUsername: string
|
creatorUsername: string
|
||||||
|
@ -59,5 +62,24 @@ const useContracts = (slugs: string[]) => {
|
||||||
)
|
)
|
||||||
}, [slugs])
|
}, [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
|
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