import { listContracts } from 'web/lib/firebase/contracts' import { useEffect, useState } from 'react' import { User } from 'common/user' import dayjs from 'dayjs' import utc from 'dayjs/plugin/utc' dayjs.extend(utc) let sessionCreatedContractToday = true export function getUtcFreeMarketResetTime(previous: boolean) { const localTimeNow = new Date() const utc4pmToday = dayjs() .utc() .set('hour', 16) .set('minute', 0) .set('second', 0) .set('millisecond', 0) // if it's after 4pm UTC today if (localTimeNow.getTime() > utc4pmToday.valueOf()) { return previous ? // Return it as it is utc4pmToday.valueOf() : // Or add 24 hours to get the next 4pm UTC time: utc4pmToday.valueOf() + 24 * 60 * 60 * 1000 } // 4pm UTC today is coming up return previous ? // Subtract 24 hours to get the previous 4pm UTC time: utc4pmToday.valueOf() - 24 * 60 * 60 * 1000 : // Return it as it is utc4pmToday.valueOf() } export const useHasCreatedContractToday = (user: User | null | undefined) => { const [hasCreatedContractToday, setHasCreatedContractToday] = useState< boolean | 'loading' >('loading') useEffect(() => { setHasCreatedContractToday('loading') const previousResetTime = getUtcFreeMarketResetTime(true) async function listUserContractsForToday() { if (!user) return const contracts = await listContracts(user.id) const todayContracts = contracts.filter( (contract) => contract.createdTime > previousResetTime ) sessionCreatedContractToday = todayContracts.length > 0 setHasCreatedContractToday(sessionCreatedContractToday) } listUserContractsForToday() }, [user]) return hasCreatedContractToday }