2022-05-09 13:04:36 +00:00
|
|
|
import { listContracts } from 'web/lib/firebase/contracts'
|
2022-04-28 23:01:50 +00:00
|
|
|
import { useEffect, useState } from 'react'
|
2022-05-09 13:04:36 +00:00
|
|
|
import { User } from 'common/user'
|
2022-04-28 23:01:50 +00:00
|
|
|
|
2022-05-17 16:05:51 +00:00
|
|
|
let sessionCreatedContractToday = true
|
2022-05-17 15:32:10 +00:00
|
|
|
|
2022-05-23 21:14:44 +00:00
|
|
|
export function getUtcFreeMarketResetTime(yesterday: boolean) {
|
2022-05-23 17:26:17 +00:00
|
|
|
// Uses utc time like the server.
|
|
|
|
const utcFreeMarketResetTime = new Date()
|
2022-05-23 21:14:44 +00:00
|
|
|
utcFreeMarketResetTime.setUTCDate(
|
|
|
|
utcFreeMarketResetTime.getUTCDate() - (yesterday ? 1 : 0)
|
|
|
|
)
|
2022-05-23 14:43:11 +00:00
|
|
|
const utcFreeMarketMS = utcFreeMarketResetTime.setUTCHours(16, 0, 0, 0)
|
|
|
|
return utcFreeMarketMS
|
|
|
|
}
|
|
|
|
|
2022-04-28 23:01:50 +00:00
|
|
|
export const useHasCreatedContractToday = (user: User | null | undefined) => {
|
2022-05-23 14:43:11 +00:00
|
|
|
const [hasCreatedContractToday, setHasCreatedContractToday] = useState<
|
|
|
|
boolean | 'loading'
|
|
|
|
>('loading')
|
2022-04-28 23:01:50 +00:00
|
|
|
|
|
|
|
useEffect(() => {
|
2022-05-23 14:43:11 +00:00
|
|
|
setHasCreatedContractToday('loading')
|
2022-05-23 21:14:44 +00:00
|
|
|
const previousResetTime = getUtcFreeMarketResetTime(true)
|
2022-04-28 23:01:50 +00:00
|
|
|
async function listUserContractsForToday() {
|
|
|
|
if (!user) return
|
|
|
|
|
|
|
|
const contracts = await listContracts(user.id)
|
|
|
|
const todayContracts = contracts.filter(
|
2022-05-23 21:14:44 +00:00
|
|
|
(contract) => contract.createdTime > previousResetTime
|
2022-04-28 23:01:50 +00:00
|
|
|
)
|
2022-05-17 15:32:10 +00:00
|
|
|
|
|
|
|
sessionCreatedContractToday = todayContracts.length > 0
|
|
|
|
setHasCreatedContractToday(sessionCreatedContractToday)
|
2022-04-28 23:01:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
listUserContractsForToday()
|
|
|
|
}, [user])
|
|
|
|
|
|
|
|
return hasCreatedContractToday
|
|
|
|
}
|