import { uniq } from 'lodash' import { useEffect, useState } from 'react' import { Bet, listenForUserBets, listenForUserContractBets, } from 'web/lib/firebase/bets' export const useUserBets = ( userId: string | undefined, options: { includeRedemptions: boolean } ) => { const [bets, setBets] = useState(undefined) useEffect(() => { if (userId) return listenForUserBets(userId, setBets, options) }, [userId]) return bets } export const useUserContractBets = ( userId: string | undefined, contractId: string | undefined ) => { const [bets, setBets] = useState(undefined) useEffect(() => { if (userId && contractId) return listenForUserContractBets(userId, contractId, setBets) }, [userId, contractId]) return bets } export const useUserBetContracts = ( userId: string | undefined, options: { includeRedemptions: boolean } ) => { const [contractIds, setContractIds] = useState() useEffect(() => { if (userId) { const key = `user-bet-contractIds-${userId}` const userBetContractJson = localStorage.getItem(key) if (userBetContractJson) { setContractIds(JSON.parse(userBetContractJson)) } return listenForUserBets( userId, (bets) => { const contractIds = uniq(bets.map((bet) => bet.contractId)) setContractIds(contractIds) localStorage.setItem(key, JSON.stringify(contractIds)) }, options ) } }, [userId]) return contractIds } export const useGetUserBetContractIds = (userId: string | undefined) => { const [contractIds, setContractIds] = useState() useEffect(() => { if (userId) { const key = `user-bet-contractIds-${userId}` const userBetContractJson = localStorage.getItem(key) if (userBetContractJson) { setContractIds(JSON.parse(userBetContractJson)) } } }, [userId]) return contractIds }