Commit ad1e2c60 authored by eddie's avatar eddie Committed by GitHub

fix: delay setting user.router_preference until statsig and redux initialize (#7458)

parent 7001452f
...@@ -5,7 +5,7 @@ import ErrorBoundary from 'components/ErrorBoundary' ...@@ -5,7 +5,7 @@ import ErrorBoundary from 'components/ErrorBoundary'
import Loader from 'components/Icons/LoadingSpinner' import Loader from 'components/Icons/LoadingSpinner'
import NavBar, { PageTabs } from 'components/NavBar' import NavBar, { PageTabs } from 'components/NavBar'
import { UK_BANNER_HEIGHT, UK_BANNER_HEIGHT_MD, UK_BANNER_HEIGHT_SM, UkBanner } from 'components/NavBar/UkBanner' import { UK_BANNER_HEIGHT, UK_BANNER_HEIGHT_MD, UK_BANNER_HEIGHT_SM, UkBanner } from 'components/NavBar/UkBanner'
import { useFeatureFlagsIsLoaded } from 'featureFlags' import { FeatureFlag, useFeatureFlagsIsLoaded } from 'featureFlags'
import { useUniswapXDefaultEnabled } from 'featureFlags/flags/uniswapXDefault' import { useUniswapXDefaultEnabled } from 'featureFlags/flags/uniswapXDefault'
import { useAtom } from 'jotai' import { useAtom } from 'jotai'
import { useBag } from 'nft/hooks/useBag' import { useBag } from 'nft/hooks/useBag'
...@@ -16,7 +16,7 @@ import { useAppSelector } from 'state/hooks' ...@@ -16,7 +16,7 @@ import { useAppSelector } from 'state/hooks'
import { AppState } from 'state/reducer' import { AppState } from 'state/reducer'
import { RouterPreference } from 'state/routing/types' import { RouterPreference } from 'state/routing/types'
import { useRouterPreference, useUserOptedOutOfUniswapX } from 'state/user/hooks' import { useRouterPreference, useUserOptedOutOfUniswapX } from 'state/user/hooks'
import { StatsigProvider, StatsigUser } from 'statsig-react' import { StatsigProvider, StatsigUser, useGate } from 'statsig-react'
import styled from 'styled-components' import styled from 'styled-components'
import DarkModeQueryParamReader from 'theme/components/DarkModeQueryParamReader' import DarkModeQueryParamReader from 'theme/components/DarkModeQueryParamReader'
import { useIsDarkMode } from 'theme/components/ThemeToggle' import { useIsDarkMode } from 'theme/components/ThemeToggle'
...@@ -214,6 +214,8 @@ function UserPropertyUpdater() { ...@@ -214,6 +214,8 @@ function UserPropertyUpdater() {
const [routerPreference] = useRouterPreference() const [routerPreference] = useRouterPreference()
const userOptedOutOfUniswapX = useUserOptedOutOfUniswapX() const userOptedOutOfUniswapX = useUserOptedOutOfUniswapX()
const isUniswapXDefaultEnabled = useUniswapXDefaultEnabled() const isUniswapXDefaultEnabled = useUniswapXDefaultEnabled()
const { isLoading: isUniswapXDefaultLoading } = useGate(FeatureFlag.uniswapXDefaultEnabled)
const rehydrated = useAppSelector((state) => state._persist.rehydrated)
useEffect(() => { useEffect(() => {
// User properties *must* be set before sending corresponding event properties, // User properties *must* be set before sending corresponding event properties,
...@@ -246,6 +248,8 @@ function UserPropertyUpdater() { ...@@ -246,6 +248,8 @@ function UserPropertyUpdater() {
}, [isDarkMode]) }, [isDarkMode])
useEffect(() => { useEffect(() => {
if (isUniswapXDefaultLoading || !rehydrated) return
// If we're not in the transition period to UniswapX opt-out, set the router preference to whatever is specified. // If we're not in the transition period to UniswapX opt-out, set the router preference to whatever is specified.
if (!isUniswapXDefaultEnabled) { if (!isUniswapXDefaultEnabled) {
user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference) user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference)
...@@ -260,6 +264,6 @@ function UserPropertyUpdater() { ...@@ -260,6 +264,6 @@ function UserPropertyUpdater() {
// Otherwise, the user has opted out or their preference is UniswapX/client, so set the preference to whatever is specified. // Otherwise, the user has opted out or their preference is UniswapX/client, so set the preference to whatever is specified.
user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference) user.set(CustomUserProperties.ROUTER_PREFERENCE, routerPreference)
}, [routerPreference, isUniswapXDefaultEnabled, userOptedOutOfUniswapX]) }, [routerPreference, isUniswapXDefaultEnabled, userOptedOutOfUniswapX, isUniswapXDefaultLoading, rehydrated])
return null return null
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment