2022-05-22 08:36:05 +00:00
|
|
|
import { uniq } from 'lodash'
|
2021-12-14 05:40:38 +00:00
|
|
|
import { useEffect, useState } from 'react'
|
2022-03-02 03:31:48 +00:00
|
|
|
import {
|
|
|
|
Bet,
|
|
|
|
listenForUserBets,
|
|
|
|
listenForUserContractBets,
|
2022-05-09 13:04:36 +00:00
|
|
|
} from 'web/lib/firebase/bets'
|
2021-12-14 05:40:38 +00:00
|
|
|
|
2022-05-19 16:03:37 +00:00
|
|
|
export const useUserBets = (
|
|
|
|
userId: string | undefined,
|
|
|
|
options: { includeRedemptions: boolean }
|
|
|
|
) => {
|
2022-02-04 00:13:04 +00:00
|
|
|
const [bets, setBets] = useState<Bet[] | undefined>(undefined)
|
2021-12-14 05:40:38 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
2022-05-19 16:03:37 +00:00
|
|
|
if (userId) return listenForUserBets(userId, setBets, options)
|
2021-12-14 05:40:38 +00:00
|
|
|
}, [userId])
|
|
|
|
|
|
|
|
return bets
|
|
|
|
}
|
2022-02-04 23:24:54 +00:00
|
|
|
|
2022-03-02 03:31:48 +00:00
|
|
|
export const useUserContractBets = (
|
|
|
|
userId: string | undefined,
|
|
|
|
contractId: string | undefined
|
|
|
|
) => {
|
|
|
|
const [bets, setBets] = useState<Bet[] | undefined>(undefined)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (userId && contractId)
|
|
|
|
return listenForUserContractBets(userId, contractId, setBets)
|
|
|
|
}, [userId, contractId])
|
|
|
|
|
|
|
|
return bets
|
|
|
|
}
|
|
|
|
|
2022-05-19 16:03:37 +00:00
|
|
|
export const useUserBetContracts = (
|
|
|
|
userId: string | undefined,
|
|
|
|
options: { includeRedemptions: boolean }
|
|
|
|
) => {
|
2022-02-04 23:24:54 +00:00
|
|
|
const [contractIds, setContractIds] = useState<string[] | undefined>()
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (userId) {
|
|
|
|
const key = `user-bet-contractIds-${userId}`
|
|
|
|
|
|
|
|
const userBetContractJson = localStorage.getItem(key)
|
|
|
|
if (userBetContractJson) {
|
|
|
|
setContractIds(JSON.parse(userBetContractJson))
|
|
|
|
}
|
|
|
|
|
2022-05-19 16:03:37 +00:00
|
|
|
return listenForUserBets(
|
|
|
|
userId,
|
|
|
|
(bets) => {
|
2022-05-22 08:36:05 +00:00
|
|
|
const contractIds = uniq(bets.map((bet) => bet.contractId))
|
2022-05-19 16:03:37 +00:00
|
|
|
setContractIds(contractIds)
|
|
|
|
localStorage.setItem(key, JSON.stringify(contractIds))
|
|
|
|
},
|
|
|
|
options
|
|
|
|
)
|
2022-02-04 23:24:54 +00:00
|
|
|
}
|
|
|
|
}, [userId])
|
|
|
|
|
|
|
|
return contractIds
|
|
|
|
}
|
2022-04-09 23:10:58 +00:00
|
|
|
|
|
|
|
export const useGetUserBetContractIds = (userId: string | undefined) => {
|
2022-04-20 21:59:34 +00:00
|
|
|
const [contractIds, setContractIds] = useState<string[] | undefined>()
|
2022-04-09 23:10:58 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
2022-04-20 21:59:34 +00:00
|
|
|
if (userId) {
|
|
|
|
const key = `user-bet-contractIds-${userId}`
|
|
|
|
const userBetContractJson = localStorage.getItem(key)
|
|
|
|
if (userBetContractJson) {
|
|
|
|
setContractIds(JSON.parse(userBetContractJson))
|
|
|
|
}
|
2022-04-09 23:10:58 +00:00
|
|
|
}
|
|
|
|
}, [userId])
|
|
|
|
|
|
|
|
return contractIds
|
|
|
|
}
|