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