From 604ec43f3f368f9efe49e7846b62426a9425c5d3 Mon Sep 17 00:00:00 2001 From: Bill He Date: Tue, 5 Dec 2023 14:26:38 -0800 Subject: [PATCH] Use test flags instead --- src/App.tsx | 2 -- src/hooks/useMarketsData.ts | 2 +- src/hooks/useTestFlags.tsx | 53 -------------------------------- src/lib/abacus/index.ts | 6 ++-- src/lib/abacus/websocket.ts | 2 +- src/lib/testFlags.ts | 31 +++++++++++++++++++ src/views/ExchangeBillboards.tsx | 2 +- 7 files changed, 37 insertions(+), 61 deletions(-) delete mode 100644 src/hooks/useTestFlags.tsx create mode 100644 src/lib/testFlags.ts diff --git a/src/App.tsx b/src/App.tsx index 69ba18b..57d1970 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -22,7 +22,6 @@ import { NotificationsProvider } from '@/hooks/useNotifications'; import { LocalNotificationsProvider } from '@/hooks/useLocalNotifications'; import { RestrictionProvider } from '@/hooks/useRestrictions'; import { SubaccountProvider } from '@/hooks/useSubaccount'; -import { TestFlagsProvider } from '@/hooks/useTestFlags'; import { GuardedMobileRoute } from '@/components/GuardedMobileRoute'; @@ -123,7 +122,6 @@ const providers = [ wrapProvider(QueryClientProvider, { client: queryClient }), wrapProvider(GrazProvider), wrapProvider(WagmiConfig, { config }), - wrapProvider(TestFlagsProvider), wrapProvider(LocaleProvider), wrapProvider(RestrictionProvider), wrapProvider(DydxProvider), diff --git a/src/hooks/useMarketsData.ts b/src/hooks/useMarketsData.ts index d1c25fe..e9ec038 100644 --- a/src/hooks/useMarketsData.ts +++ b/src/hooks/useMarketsData.ts @@ -8,7 +8,7 @@ import { MARKETS_TO_DISPLAY, } from '@/constants/markets'; -import { testFlags } from '@/hooks/useTestFlags'; +import { testFlags } from '@/lib/testFlags'; import { getAssets } from '@/state/assetsSelectors'; import { getPerpetualMarkets } from '@/state/perpetualsSelectors'; diff --git a/src/hooks/useTestFlags.tsx b/src/hooks/useTestFlags.tsx deleted file mode 100644 index f65eab3..0000000 --- a/src/hooks/useTestFlags.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { createContext, useContext, useEffect, useState } from 'react'; -import { useLocation } from 'react-router-dom'; -import queryString from 'query-string'; - -class TestFlags { - public queryParams: queryString.ParsedQuery; - - constructor() { - this.queryParams = {}; - } - - setQueryParams(flags: queryString.ParsedQuery) { - this.queryParams = flags; - } - - get displayInitializingMarkets() { - return !!this.queryParams.displayInitializingMarkets; - } - - /** - * @description We are temporarily displaying a subset of ACTIVE markets, this flag will allow you to see all ACTIVE markets - */ - get displayAllMarkets() { - return !!this.queryParams.displayAllMarkets; - } -} - -export const testFlags = new TestFlags(); - -const useTestFlagsContext = () => { - const [queryParams, setQueryParams] = useState>({}); - const location = useLocation(); - - useEffect(() => { - const parsedQueryParams = queryString.parse(location.search.substring(-1)); - testFlags.setQueryParams(parsedQueryParams); - setQueryParams(parsedQueryParams); - }, []); - - return { - ...queryParams, - }; -}; - -type TestFlagsContextType = ReturnType; -const TestFlagsContext = createContext({} as TestFlagsContextType); -TestFlagsContext.displayName = 'TestFlags'; - -export const TestFlagsProvider = ({ ...props }) => ( - -); - -export const useTestFlags = () => useContext(TestFlagsContext); diff --git a/src/lib/abacus/index.ts b/src/lib/abacus/index.ts index ad81357..b8ffaae 100644 --- a/src/lib/abacus/index.ts +++ b/src/lib/abacus/index.ts @@ -33,6 +33,8 @@ import type { RootStore } from '@/state/_store'; import { setTradeFormInputs } from '@/state/inputs'; import { getInputTradeOptions, getTransferInputs } from '@/state/inputsSelectors'; +import { testFlags } from '@/lib/testFlags'; + import AbacusRest from './rest'; import AbacusAnalytics from './analytics'; import AbacusWebsocket from './websocket'; @@ -82,9 +84,7 @@ class AbacusStateManager { ); const appConfigs = AbacusAppConfig.Companion.forWeb; - - const enableCCTP = import.meta.env.VITE_ENABLE_CCTP; - if (!isMainnet || enableCCTP) + if (!isMainnet || testFlags.withCCTP) appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2DepositOnly; this.stateManager = new AsyncAbacusStateManager( diff --git a/src/lib/abacus/websocket.ts b/src/lib/abacus/websocket.ts index 8843c4e..3712f14 100644 --- a/src/lib/abacus/websocket.ts +++ b/src/lib/abacus/websocket.ts @@ -10,7 +10,7 @@ import { } from '@/constants/websocket'; import { lastSuccessfulWebsocketRequestByOrigin } from '@/hooks/useAnalytics'; -import { testFlags } from '@/hooks/useTestFlags'; +import { testFlags } from '@/lib/testFlags'; import { subscriptionsByChannelId } from '@/lib/tradingView/dydxfeed/cache'; import { mapCandle } from '@/lib/tradingView/utils'; diff --git a/src/lib/testFlags.ts b/src/lib/testFlags.ts new file mode 100644 index 0000000..bbb5aed --- /dev/null +++ b/src/lib/testFlags.ts @@ -0,0 +1,31 @@ +class TestFlags { + public queryParams: { [key: string]: string }; + + constructor() { + this.queryParams = {}; + const hash = window.location.hash; + const queryIndex = hash.indexOf('?'); + if (queryIndex === -1) return + + const queryParamsString = hash.substring(queryIndex + 1); + const params = new URLSearchParams(queryParamsString); + + for (const [key, value] of params) { + this.queryParams[key] = value; + } + } + + get displayInitializingMarkets() { + return !!this.queryParams.displayInitializingMarkets; + } + + get displayAllMarkets() { + return !!this.queryParams.displayAllMarkets; + } + + get withCCTP() { + return !!this.queryParams.withCCTP; + } +} + +export const testFlags = new TestFlags(); diff --git a/src/views/ExchangeBillboards.tsx b/src/views/ExchangeBillboards.tsx index 863d781..bdb90e4 100644 --- a/src/views/ExchangeBillboards.tsx +++ b/src/views/ExchangeBillboards.tsx @@ -4,7 +4,7 @@ import { shallowEqual, useSelector } from 'react-redux'; import { STRING_KEYS } from '@/constants/localization'; import { MARKETS_TO_DISPLAY } from '@/constants/markets'; import { useBreakpoints, useStringGetter } from '@/hooks'; -import { testFlags } from '@/hooks/useTestFlags'; +import { testFlags } from '@/lib/testFlags'; import { breakpoints } from '@/styles'; import { layoutMixins } from '@/styles/layoutMixins';