diff --git a/web/components/auth-context.tsx b/web/components/auth-context.tsx index 46cd3d22..7347d039 100644 --- a/web/components/auth-context.tsx +++ b/web/components/auth-context.tsx @@ -55,30 +55,35 @@ export function AuthProvider(props: { }, [setAuthUser, serverUser]) useEffect(() => { - return onIdTokenChanged(auth, async (fbUser) => { - console.log('onIdTokenChanged', fbUser) - if (fbUser) { - setTokenCookies({ - id: await fbUser.getIdToken(), - refresh: fbUser.refreshToken, - }) - let current = await getUserAndPrivateUser(fbUser.uid) - if (!current.user || !current.privateUser) { - const deviceToken = ensureDeviceToken() - current = (await createUser({ deviceToken })) as UserAndPrivateUser + return onIdTokenChanged( + auth, + async (fbUser) => { + if (fbUser) { + setTokenCookies({ + id: await fbUser.getIdToken(), + refresh: fbUser.refreshToken, + }) + let current = await getUserAndPrivateUser(fbUser.uid) + if (!current.user || !current.privateUser) { + const deviceToken = ensureDeviceToken() + current = (await createUser({ deviceToken })) as UserAndPrivateUser + } + setAuthUser(current) + // Persist to local storage, to reduce login blink next time. + // Note: Cap on localStorage size is ~5mb + localStorage.setItem(CACHED_USER_KEY, JSON.stringify(current)) + setCachedReferralInfoForUser(current.user) + } else { + // User logged out; reset to null + deleteTokenCookies() + setAuthUser(null) + localStorage.removeItem(CACHED_USER_KEY) } - setAuthUser(current) - // Persist to localStorage, to reduce login blink next time. - // Note: Cap on localStorage size is ~5mb - localStorage.setItem(CACHED_USER_KEY, JSON.stringify(current)) - setCachedReferralInfoForUser(current.user) - } else { - // User logged out; reset to null - deleteTokenCookies() - setAuthUser(null) - localStorage.removeItem(CACHED_USER_KEY) + }, + (e) => { + console.error(e) } - }) + ) }, [setAuthUser]) const uid = authUser?.user.id diff --git a/web/components/contract/contract-card.tsx b/web/components/contract/contract-card.tsx index e5ea724b..ef23b4be 100644 --- a/web/components/contract/contract-card.tsx +++ b/web/components/contract/contract-card.tsx @@ -43,6 +43,7 @@ export function ContractCard(props: { onClick?: () => void hideQuickBet?: boolean hideGroupLink?: boolean + trackingPostfix?: string }) { const { showHotVolume, @@ -52,6 +53,7 @@ export function ContractCard(props: { onClick, hideQuickBet, hideGroupLink, + trackingPostfix, } = props const contract = useContractWithPreload(props.contract) ?? props.contract const { question, outcomeType } = contract @@ -166,7 +168,7 @@ export function ContractCard(props: { if (e.ctrlKey || e.metaKey) return e.preventDefault() - track('click market card', { + track('click market card' + (trackingPostfix ?? ''), { slug: contract.slug, contractId: contract.id, }) @@ -176,10 +178,13 @@ export function ContractCard(props: { ) : ( diff --git a/web/components/contract/contracts-grid.tsx b/web/components/contract/contracts-grid.tsx index 603173f6..2f804644 100644 --- a/web/components/contract/contracts-grid.tsx +++ b/web/components/contract/contracts-grid.tsx @@ -26,6 +26,7 @@ export function ContractsGrid(props: { hideGroupLink?: boolean } highlightOptions?: ContractHighlightOptions + trackingPostfix?: string }) { const { contracts, @@ -34,6 +35,7 @@ export function ContractsGrid(props: { onContractClick, cardHideOptions, highlightOptions, + trackingPostfix, } = props const { hideQuickBet, hideGroupLink } = cardHideOptions || {} const { contractIds, highlightClassName } = highlightOptions || {} @@ -79,6 +81,7 @@ export function ContractsGrid(props: { } hideQuickBet={hideQuickBet} hideGroupLink={hideGroupLink} + trackingPostfix={trackingPostfix} className={clsx( 'mb-4 break-inside-avoid-column overflow-hidden', // prevent content from wrapping (needs overflow on firefox) contractIds?.includes(contract.id) && highlightClassName diff --git a/web/pages/[username]/[contractSlug].tsx b/web/pages/[username]/[contractSlug].tsx index 2ef472fc..f9f45144 100644 --- a/web/pages/[username]/[contractSlug].tsx +++ b/web/pages/[username]/[contractSlug].tsx @@ -285,7 +285,10 @@ export function ContractPageContent( {recommendedContracts.length > 0 && ( - <ContractsGrid contracts={recommendedContracts} /> + <ContractsGrid + contracts={recommendedContracts} + trackingPostfix=" recommended" + /> </Col> )} </Page> diff --git a/web/pages/tournaments/index.tsx b/web/pages/tournaments/index.tsx index 65f5597f..f3fcbfce 100644 --- a/web/pages/tournaments/index.tsx +++ b/web/pages/tournaments/index.tsx @@ -213,8 +213,9 @@ function Section(props: { <ContractCard contract={m} hideGroupLink - className="max-h-[200px] w-96 shrink-0" + className="mb-2 max-h-[200px] w-96 shrink-0" questionClass="line-clamp-3" + trackingPostfix=" tournament" /> )) ) : (