Merge branch 'main' into localstorage
This commit is contained in:
commit
4a6177d674
|
@ -55,8 +55,9 @@ export function AuthProvider(props: {
|
||||||
}, [setAuthUser, serverUser])
|
}, [setAuthUser, serverUser])
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
return onIdTokenChanged(auth, async (fbUser) => {
|
return onIdTokenChanged(
|
||||||
console.log('onIdTokenChanged', fbUser)
|
auth,
|
||||||
|
async (fbUser) => {
|
||||||
if (fbUser) {
|
if (fbUser) {
|
||||||
setTokenCookies({
|
setTokenCookies({
|
||||||
id: await fbUser.getIdToken(),
|
id: await fbUser.getIdToken(),
|
||||||
|
@ -68,7 +69,7 @@ export function AuthProvider(props: {
|
||||||
current = (await createUser({ deviceToken })) as UserAndPrivateUser
|
current = (await createUser({ deviceToken })) as UserAndPrivateUser
|
||||||
}
|
}
|
||||||
setAuthUser(current)
|
setAuthUser(current)
|
||||||
// Persist to localStorage, to reduce login blink next time.
|
// Persist to local storage, to reduce login blink next time.
|
||||||
// Note: Cap on localStorage size is ~5mb
|
// Note: Cap on localStorage size is ~5mb
|
||||||
localStorage.setItem(CACHED_USER_KEY, JSON.stringify(current))
|
localStorage.setItem(CACHED_USER_KEY, JSON.stringify(current))
|
||||||
setCachedReferralInfoForUser(current.user)
|
setCachedReferralInfoForUser(current.user)
|
||||||
|
@ -78,7 +79,11 @@ export function AuthProvider(props: {
|
||||||
setAuthUser(null)
|
setAuthUser(null)
|
||||||
localStorage.removeItem(CACHED_USER_KEY)
|
localStorage.removeItem(CACHED_USER_KEY)
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
(e) => {
|
||||||
|
console.error(e)
|
||||||
|
}
|
||||||
|
)
|
||||||
}, [setAuthUser])
|
}, [setAuthUser])
|
||||||
|
|
||||||
const uid = authUser?.user.id
|
const uid = authUser?.user.id
|
||||||
|
|
|
@ -43,6 +43,7 @@ export function ContractCard(props: {
|
||||||
onClick?: () => void
|
onClick?: () => void
|
||||||
hideQuickBet?: boolean
|
hideQuickBet?: boolean
|
||||||
hideGroupLink?: boolean
|
hideGroupLink?: boolean
|
||||||
|
trackingPostfix?: string
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
showHotVolume,
|
showHotVolume,
|
||||||
|
@ -52,6 +53,7 @@ export function ContractCard(props: {
|
||||||
onClick,
|
onClick,
|
||||||
hideQuickBet,
|
hideQuickBet,
|
||||||
hideGroupLink,
|
hideGroupLink,
|
||||||
|
trackingPostfix,
|
||||||
} = props
|
} = props
|
||||||
const contract = useContractWithPreload(props.contract) ?? props.contract
|
const contract = useContractWithPreload(props.contract) ?? props.contract
|
||||||
const { question, outcomeType } = contract
|
const { question, outcomeType } = contract
|
||||||
|
@ -166,7 +168,7 @@ export function ContractCard(props: {
|
||||||
if (e.ctrlKey || e.metaKey) return
|
if (e.ctrlKey || e.metaKey) return
|
||||||
|
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
track('click market card', {
|
track('click market card' + (trackingPostfix ?? ''), {
|
||||||
slug: contract.slug,
|
slug: contract.slug,
|
||||||
contractId: contract.id,
|
contractId: contract.id,
|
||||||
})
|
})
|
||||||
|
@ -176,10 +178,13 @@ export function ContractCard(props: {
|
||||||
) : (
|
) : (
|
||||||
<Link href={contractPath(contract)}>
|
<Link href={contractPath(contract)}>
|
||||||
<a
|
<a
|
||||||
onClick={trackCallback('click market card', {
|
onClick={trackCallback(
|
||||||
|
'click market card' + (trackingPostfix ?? ''),
|
||||||
|
{
|
||||||
slug: contract.slug,
|
slug: contract.slug,
|
||||||
contractId: contract.id,
|
contractId: contract.id,
|
||||||
})}
|
}
|
||||||
|
)}
|
||||||
className="absolute top-0 left-0 right-0 bottom-0"
|
className="absolute top-0 left-0 right-0 bottom-0"
|
||||||
/>
|
/>
|
||||||
</Link>
|
</Link>
|
||||||
|
|
|
@ -26,6 +26,7 @@ export function ContractsGrid(props: {
|
||||||
hideGroupLink?: boolean
|
hideGroupLink?: boolean
|
||||||
}
|
}
|
||||||
highlightOptions?: ContractHighlightOptions
|
highlightOptions?: ContractHighlightOptions
|
||||||
|
trackingPostfix?: string
|
||||||
}) {
|
}) {
|
||||||
const {
|
const {
|
||||||
contracts,
|
contracts,
|
||||||
|
@ -34,6 +35,7 @@ export function ContractsGrid(props: {
|
||||||
onContractClick,
|
onContractClick,
|
||||||
cardHideOptions,
|
cardHideOptions,
|
||||||
highlightOptions,
|
highlightOptions,
|
||||||
|
trackingPostfix,
|
||||||
} = props
|
} = props
|
||||||
const { hideQuickBet, hideGroupLink } = cardHideOptions || {}
|
const { hideQuickBet, hideGroupLink } = cardHideOptions || {}
|
||||||
const { contractIds, highlightClassName } = highlightOptions || {}
|
const { contractIds, highlightClassName } = highlightOptions || {}
|
||||||
|
@ -79,6 +81,7 @@ export function ContractsGrid(props: {
|
||||||
}
|
}
|
||||||
hideQuickBet={hideQuickBet}
|
hideQuickBet={hideQuickBet}
|
||||||
hideGroupLink={hideGroupLink}
|
hideGroupLink={hideGroupLink}
|
||||||
|
trackingPostfix={trackingPostfix}
|
||||||
className={clsx(
|
className={clsx(
|
||||||
'mb-4 break-inside-avoid-column overflow-hidden', // prevent content from wrapping (needs overflow on firefox)
|
'mb-4 break-inside-avoid-column overflow-hidden', // prevent content from wrapping (needs overflow on firefox)
|
||||||
contractIds?.includes(contract.id) && highlightClassName
|
contractIds?.includes(contract.id) && highlightClassName
|
||||||
|
|
|
@ -285,7 +285,10 @@ export function ContractPageContent(
|
||||||
{recommendedContracts.length > 0 && (
|
{recommendedContracts.length > 0 && (
|
||||||
<Col className="mt-2 gap-2 px-2 sm:px-0">
|
<Col className="mt-2 gap-2 px-2 sm:px-0">
|
||||||
<Title className="text-gray-700" text="Recommended" />
|
<Title className="text-gray-700" text="Recommended" />
|
||||||
<ContractsGrid contracts={recommendedContracts} />
|
<ContractsGrid
|
||||||
|
contracts={recommendedContracts}
|
||||||
|
trackingPostfix=" recommended"
|
||||||
|
/>
|
||||||
</Col>
|
</Col>
|
||||||
)}
|
)}
|
||||||
</Page>
|
</Page>
|
||||||
|
|
|
@ -213,8 +213,9 @@ function Section(props: {
|
||||||
<ContractCard
|
<ContractCard
|
||||||
contract={m}
|
contract={m}
|
||||||
hideGroupLink
|
hideGroupLink
|
||||||
className="max-h-[200px] w-96 shrink-0"
|
className="mb-2 max-h-[200px] w-96 shrink-0"
|
||||||
questionClass="line-clamp-3"
|
questionClass="line-clamp-3"
|
||||||
|
trackingPostfix=" tournament"
|
||||||
/>
|
/>
|
||||||
))
|
))
|
||||||
) : (
|
) : (
|
||||||
|
|
Loading…
Reference in New Issue
Block a user