Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
604ec43f3f | ||
|
|
0deced8545 | ||
|
|
1132ea3bbd | ||
|
|
9188e08a4f | ||
|
|
941ef7f9dd |
@@ -22,7 +22,6 @@ import { NotificationsProvider } from '@/hooks/useNotifications';
|
|||||||
import { LocalNotificationsProvider } from '@/hooks/useLocalNotifications';
|
import { LocalNotificationsProvider } from '@/hooks/useLocalNotifications';
|
||||||
import { RestrictionProvider } from '@/hooks/useRestrictions';
|
import { RestrictionProvider } from '@/hooks/useRestrictions';
|
||||||
import { SubaccountProvider } from '@/hooks/useSubaccount';
|
import { SubaccountProvider } from '@/hooks/useSubaccount';
|
||||||
import { TestFlagsProvider } from '@/hooks/useTestFlags';
|
|
||||||
|
|
||||||
import { GuardedMobileRoute } from '@/components/GuardedMobileRoute';
|
import { GuardedMobileRoute } from '@/components/GuardedMobileRoute';
|
||||||
|
|
||||||
@@ -123,7 +122,6 @@ const providers = [
|
|||||||
wrapProvider(QueryClientProvider, { client: queryClient }),
|
wrapProvider(QueryClientProvider, { client: queryClient }),
|
||||||
wrapProvider(GrazProvider),
|
wrapProvider(GrazProvider),
|
||||||
wrapProvider(WagmiConfig, { config }),
|
wrapProvider(WagmiConfig, { config }),
|
||||||
wrapProvider(TestFlagsProvider),
|
|
||||||
wrapProvider(LocaleProvider),
|
wrapProvider(LocaleProvider),
|
||||||
wrapProvider(RestrictionProvider),
|
wrapProvider(RestrictionProvider),
|
||||||
wrapProvider(DydxProvider),
|
wrapProvider(DydxProvider),
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|||||||
placeholder={placeholder}
|
placeholder={placeholder}
|
||||||
value={value}
|
value={value}
|
||||||
// Other
|
// Other
|
||||||
|
data-1p-ignore // prevent 1Password fill
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
@@ -168,6 +169,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|||||||
value={formattedValue}
|
value={formattedValue}
|
||||||
autoComplete="off"
|
autoComplete="off"
|
||||||
autoCorrect="off"
|
autoCorrect="off"
|
||||||
|
data-1p-ignore // prevent 1Password fill
|
||||||
{...otherProps}
|
{...otherProps}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -46,4 +46,9 @@ export const MARKETS_TO_DISPLAY = [
|
|||||||
'SHIB-USD',
|
'SHIB-USD',
|
||||||
'COMP-USD',
|
'COMP-USD',
|
||||||
'LDO-USD',
|
'LDO-USD',
|
||||||
|
'NEAR-USD',
|
||||||
|
'APT-USD',
|
||||||
|
'SUI-USD',
|
||||||
|
'DOT-USD',
|
||||||
|
'ETC-USD',
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import {
|
|||||||
MARKETS_TO_DISPLAY,
|
MARKETS_TO_DISPLAY,
|
||||||
} from '@/constants/markets';
|
} from '@/constants/markets';
|
||||||
|
|
||||||
import { testFlags } from '@/hooks/useTestFlags';
|
import { testFlags } from '@/lib/testFlags';
|
||||||
|
|
||||||
import { getAssets } from '@/state/assetsSelectors';
|
import { getAssets } from '@/state/assetsSelectors';
|
||||||
import { getPerpetualMarkets } from '@/state/perpetualsSelectors';
|
import { getPerpetualMarkets } from '@/state/perpetualsSelectors';
|
||||||
|
|||||||
@@ -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<string>;
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.queryParams = {};
|
|
||||||
}
|
|
||||||
|
|
||||||
setQueryParams(flags: queryString.ParsedQuery<string>) {
|
|
||||||
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<queryString.ParsedQuery<string>>({});
|
|
||||||
const location = useLocation();
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
const parsedQueryParams = queryString.parse(location.search.substring(-1));
|
|
||||||
testFlags.setQueryParams(parsedQueryParams);
|
|
||||||
setQueryParams(parsedQueryParams);
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return {
|
|
||||||
...queryParams,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
type TestFlagsContextType = ReturnType<typeof useTestFlagsContext>;
|
|
||||||
const TestFlagsContext = createContext<TestFlagsContextType>({} as TestFlagsContextType);
|
|
||||||
TestFlagsContext.displayName = 'TestFlags';
|
|
||||||
|
|
||||||
export const TestFlagsProvider = ({ ...props }) => (
|
|
||||||
<TestFlagsContext.Provider value={useTestFlagsContext()} {...props} />
|
|
||||||
);
|
|
||||||
|
|
||||||
export const useTestFlags = () => useContext(TestFlagsContext);
|
|
||||||
@@ -64,7 +64,9 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
|
|||||||
|
|
||||||
setNobleWallet(nobleWallet: LocalWallet) {
|
setNobleWallet(nobleWallet: LocalWallet) {
|
||||||
this.nobleWallet = nobleWallet;
|
this.nobleWallet = nobleWallet;
|
||||||
this.nobleClient?.connect(nobleWallet);
|
if (this.nobleClient) {
|
||||||
|
this.nobleClient.connect(nobleWallet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async connectNetwork(
|
async connectNetwork(
|
||||||
@@ -109,8 +111,11 @@ class DydxChainTransactions implements AbacusDYDXChainTransactionsProtocol {
|
|||||||
);
|
);
|
||||||
|
|
||||||
this.compositeClient = compositeClient;
|
this.compositeClient = compositeClient;
|
||||||
this.nobleClient = new NobleClient(nobleValidatorUrl);
|
|
||||||
if (this.nobleWallet) await this.nobleClient.connect(this.nobleWallet);
|
if (nobleValidatorUrl) {
|
||||||
|
this.nobleClient = new NobleClient(nobleValidatorUrl);
|
||||||
|
if (this.nobleWallet) await this.nobleClient.connect(this.nobleWallet);
|
||||||
|
}
|
||||||
// Dispatch custom event to notify other parts of the app that the network has been connected
|
// Dispatch custom event to notify other parts of the app that the network has been connected
|
||||||
const customEvent = new CustomEvent('abacus:connectNetwork', {
|
const customEvent = new CustomEvent('abacus:connectNetwork', {
|
||||||
detail: parsedParams,
|
detail: parsedParams,
|
||||||
|
|||||||
+5
-14
@@ -33,6 +33,8 @@ import type { RootStore } from '@/state/_store';
|
|||||||
import { setTradeFormInputs } from '@/state/inputs';
|
import { setTradeFormInputs } from '@/state/inputs';
|
||||||
import { getInputTradeOptions, getTransferInputs } from '@/state/inputsSelectors';
|
import { getInputTradeOptions, getTransferInputs } from '@/state/inputsSelectors';
|
||||||
|
|
||||||
|
import { testFlags } from '@/lib/testFlags';
|
||||||
|
|
||||||
import AbacusRest from './rest';
|
import AbacusRest from './rest';
|
||||||
import AbacusAnalytics from './analytics';
|
import AbacusAnalytics from './analytics';
|
||||||
import AbacusWebsocket from './websocket';
|
import AbacusWebsocket from './websocket';
|
||||||
@@ -82,7 +84,8 @@ class AbacusStateManager {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const appConfigs = AbacusAppConfig.Companion.forWeb;
|
const appConfigs = AbacusAppConfig.Companion.forWeb;
|
||||||
if (!isMainnet) appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2DepositOnly;
|
if (!isMainnet || testFlags.withCCTP)
|
||||||
|
appConfigs.squidVersion = AbacusAppConfig.SquidVersion.V2DepositOnly;
|
||||||
|
|
||||||
this.stateManager = new AsyncAbacusStateManager(
|
this.stateManager = new AsyncAbacusStateManager(
|
||||||
'',
|
'',
|
||||||
@@ -187,7 +190,7 @@ class AbacusStateManager {
|
|||||||
if (nobleWallet) {
|
if (nobleWallet) {
|
||||||
this.chainTransactions.setNobleWallet(nobleWallet);
|
this.chainTransactions.setNobleWallet(nobleWallet);
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
setTransfersSourceAddress = (evmAddress: string) => {
|
setTransfersSourceAddress = (evmAddress: string) => {
|
||||||
this.stateManager.sourceAddress = evmAddress;
|
this.stateManager.sourceAddress = evmAddress;
|
||||||
@@ -232,18 +235,6 @@ class AbacusStateManager {
|
|||||||
this.abacusFormatter.setLocaleSeparators({ group, decimal });
|
this.abacusFormatter.setLocaleSeparators({ group, decimal });
|
||||||
};
|
};
|
||||||
|
|
||||||
setTransferStatus = ({
|
|
||||||
hash,
|
|
||||||
fromChainId,
|
|
||||||
toChainId,
|
|
||||||
}: {
|
|
||||||
hash: string;
|
|
||||||
fromChainId?: string;
|
|
||||||
toChainId?: string;
|
|
||||||
}) => {
|
|
||||||
this.stateManager.transferStatus(hash, fromChainId, toChainId);
|
|
||||||
};
|
|
||||||
|
|
||||||
// ------ Transactions ------ //
|
// ------ Transactions ------ //
|
||||||
|
|
||||||
placeOrder = (
|
placeOrder = (
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import {
|
|||||||
} from '@/constants/websocket';
|
} from '@/constants/websocket';
|
||||||
|
|
||||||
import { lastSuccessfulWebsocketRequestByOrigin } from '@/hooks/useAnalytics';
|
import { lastSuccessfulWebsocketRequestByOrigin } from '@/hooks/useAnalytics';
|
||||||
import { testFlags } from '@/hooks/useTestFlags';
|
import { testFlags } from '@/lib/testFlags';
|
||||||
|
|
||||||
import { subscriptionsByChannelId } from '@/lib/tradingView/dydxfeed/cache';
|
import { subscriptionsByChannelId } from '@/lib/tradingView/dydxfeed/cache';
|
||||||
import { mapCandle } from '@/lib/tradingView/utils';
|
import { mapCandle } from '@/lib/tradingView/utils';
|
||||||
|
|||||||
@@ -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();
|
||||||
@@ -4,7 +4,7 @@ import { shallowEqual, useSelector } from 'react-redux';
|
|||||||
import { STRING_KEYS } from '@/constants/localization';
|
import { STRING_KEYS } from '@/constants/localization';
|
||||||
import { MARKETS_TO_DISPLAY } from '@/constants/markets';
|
import { MARKETS_TO_DISPLAY } from '@/constants/markets';
|
||||||
import { useBreakpoints, useStringGetter } from '@/hooks';
|
import { useBreakpoints, useStringGetter } from '@/hooks';
|
||||||
import { testFlags } from '@/hooks/useTestFlags';
|
import { testFlags } from '@/lib/testFlags';
|
||||||
import { breakpoints } from '@/styles';
|
import { breakpoints } from '@/styles';
|
||||||
import { layoutMixins } from '@/styles/layoutMixins';
|
import { layoutMixins } from '@/styles/layoutMixins';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user