diff --git a/apps/Cloverfield/constants/chains/addresses.ts b/apps/Cloverfield/constants/chains/addresses.ts index 266c270..db579ed 100644 --- a/apps/Cloverfield/constants/chains/addresses.ts +++ b/apps/Cloverfield/constants/chains/addresses.ts @@ -1,5 +1,8 @@ import { SupportedChainId } from "@symmio/frontend-sdk/constants/chains"; -import { ChainType } from "@symmio/frontend-sdk/state/chains/reducer"; +import { + ChainsType, + ChainType, +} from "@symmio/frontend-sdk/context/configSdkContext"; export enum FrontEndsName { ALPHA = "Alpha", @@ -460,9 +463,7 @@ export const ArbitrumChainCloverfieldFE: ChainType = { "https://api.studio.thegraph.com/query/62454/fundingrate_arbitrum_8_2/version/latest", }; -export const contractInfo: { - [chainId: number]: { [name: string]: ChainType }; -} = { +export const contractInfo: ChainsType = { [SupportedChainId.FANTOM]: { [FrontEndsName.CLOVERFIELD]: FantomChain }, [SupportedChainId.BSC]: { [FrontEndsName.ALPHA]: BSCChainAlphaFE, diff --git a/apps/Cloverfield/constants/chains/muon.ts b/apps/Cloverfield/constants/chains/muon.ts index b9183d2..8d21032 100644 --- a/apps/Cloverfield/constants/chains/muon.ts +++ b/apps/Cloverfield/constants/chains/muon.ts @@ -1,5 +1,6 @@ import { SupportedChainId } from "@symmio/frontend-sdk/constants/chains"; -import { MuonDataType } from "@symmio/frontend-sdk/state/chains/reducer"; +import { MuonDataType } from "@symmio/frontend-sdk/context/configSdkContext"; + import { MUON_APP_NAME, BSC_MUON_BASE_URLS, diff --git a/apps/Cloverfield/pages/_app.tsx b/apps/Cloverfield/pages/_app.tsx index 5ee8d51..5389e03 100644 --- a/apps/Cloverfield/pages/_app.tsx +++ b/apps/Cloverfield/pages/_app.tsx @@ -17,6 +17,7 @@ import ConfigSDKComponent from "./configSDK"; import { setUseWhatChange } from "@simbathesailor/use-what-changed"; import Updaters from "@symmio/frontend-sdk/state/updaters"; import ErrorBoundary from "components/App/ErrorBoundaries"; +import { StateProvider } from "@symmio/frontend-sdk/context/configSdkContext"; // const Updaters = dynamic(() => import("@symmio/frontend-sdk/state/updaters"), { // ssr: false, @@ -60,12 +61,14 @@ export default function MyApp({ Component, pageProps }: AppProps) { - - - - - - + + + + + + + + diff --git a/apps/Cloverfield/pages/configSDK.tsx b/apps/Cloverfield/pages/configSDK.tsx index 52ae911..522c062 100644 --- a/apps/Cloverfield/pages/configSDK.tsx +++ b/apps/Cloverfield/pages/configSDK.tsx @@ -1,5 +1,4 @@ import { useEffect } from "react"; -import { useSetSdkConfig } from "@symmio/frontend-sdk/state/chains/hooks"; import { contractInfo } from "constants/chains/addresses"; import { ClientChain, FALLBACK_CHAIN_ID } from "constants/chains/chains"; @@ -7,21 +6,36 @@ import { HedgerInfo } from "constants/chains/hedgers"; import { APP_NAME } from "constants/chains/misc"; import { MuonInfo } from "constants/chains/muon"; import { wagmiConfig } from "pages/_app"; +import { useStateContext } from "@symmio/frontend-sdk/context/configSdkContext"; export default function ConfigSDKComponent() { - const setConfigCallBack = useSetSdkConfig(); + const { + setChains, + setClientChain, + setFallbackChainId, + setHedgerInfo, + setAppName, + setMuonData, + setWagmiConfig, + } = useStateContext(); useEffect(() => { - setConfigCallBack({ - chains: contractInfo, - V3_CHAIN_IDS: ClientChain, - FALLBACK_CHAIN_ID, - hedgers: HedgerInfo, - appName: APP_NAME, - MuonData: MuonInfo, - wagmiConfig, - }); - }, [setConfigCallBack]); + setChains(contractInfo); + setClientChain(ClientChain); + setFallbackChainId(FALLBACK_CHAIN_ID); + setHedgerInfo(HedgerInfo); + setAppName(APP_NAME); + setMuonData(MuonInfo); + setWagmiConfig(wagmiConfig); + }, [ + setAppName, + setChains, + setClientChain, + setFallbackChainId, + setHedgerInfo, + setMuonData, + setWagmiConfig, + ]); return <>; } diff --git a/packages/core/package.json b/packages/core/package.json index f5ddd77..2ffe086 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -189,6 +189,10 @@ "types": "./dist/constants/abi/index.d.ts", "default": "./dist/constants/abi/index.js" }, + "./context/configSdkContext": { + "types": "./dist/context/configSdkContext.d.ts", + "default": "./dist/context/configSdkContext.js" + }, "./hooks/useAccountData": { "types": "./dist/hooks/useAccountData.d.ts", "default": "./dist/hooks/useAccountData.js" @@ -397,10 +401,6 @@ "types": "./dist/state/application/updater.d.ts", "default": "./dist/state/application/updater.js" }, - "./state/chains/actions": { - "types": "./dist/state/chains/actions.d.ts", - "default": "./dist/state/chains/actions.js" - }, "./state/chains/hooks": { "types": "./dist/state/chains/hooks.d.ts", "default": "./dist/state/chains/hooks.js" @@ -409,10 +409,6 @@ "types": "./dist/state/chains/index.d.ts", "default": "./dist/state/chains/index.js" }, - "./state/chains/reducer": { - "types": "./dist/state/chains/reducer.d.ts", - "default": "./dist/state/chains/reducer.js" - }, "./state/hedger/actions": { "types": "./dist/state/hedger/actions.d.ts", "default": "./dist/state/hedger/actions.js" diff --git a/packages/core/src/context/configSdkContext.tsx b/packages/core/src/context/configSdkContext.tsx new file mode 100644 index 0000000..b49ea61 --- /dev/null +++ b/packages/core/src/context/configSdkContext.tsx @@ -0,0 +1,135 @@ +import React, { createContext, useContext, useState } from "react"; +import { SupportedChainId } from "../constants"; +import { HedgerInfoMap } from "../types/hedger"; +import { Config } from "@wagmi/core"; + +export interface ChainType { + readonly COLLATERAL_SYMBOL: string; + readonly COLLATERAL_DECIMALS: number; + readonly COLLATERAL_ADDRESS: string; + readonly DIAMOND_ADDRESS: string; + readonly MULTI_ACCOUNT_ADDRESS: string; + readonly PARTY_B_WHITELIST: string; + readonly SIGNATURE_STORE_ADDRESS: string; + readonly TP_SL_WALLET_ADDRESS: string; + readonly MULTICALL3_ADDRESS: string; + readonly USDC_ADDRESS: string; + readonly WRAPPED_NATIVE_ADDRESS: string; + readonly ANALYTICS_SUBGRAPH_ADDRESS: string; + readonly ORDER_HISTORY_SUBGRAPH_ADDRESS: string; + readonly FUNDING_RATE_SUBGRAPH_ADDRESS: string; +} + +export interface MuonDataType { + AppName: string; + Urls: string[]; +} + +export interface MuonDataObject { + [chainId: number]: MuonDataType; +} + +export interface ChainsType { + [chainId: number]: { [name: string]: ChainType }; +} + +export interface ChainsState { + readonly hedgers: HedgerInfoMap; +} + +// Define your context state and actions +interface State { + clientChain: SupportedChainId[]; + setClientChain: (clientChain: SupportedChainId[]) => void; + + chains: ChainsType; + setChains: (chains: ChainsType) => void; + + hedgerInfo: HedgerInfoMap; + setHedgerInfo: (hedgers: HedgerInfoMap) => void; + + fallbackChainId: number; + setFallbackChainId: (chainId: number) => void; + + appName: string; + setAppName: (name: string) => void; + + muonData: MuonDataObject; + setMuonData: (data: MuonDataObject) => void; + + wagmiConfig: Config; + setWagmiConfig: (config: Config) => void; +} + +// Create a default state +const defaultState: State = { + clientChain: [], + setClientChain: () => {}, + + chains: {}, + setChains: () => {}, + + hedgerInfo: { + [SupportedChainId.NOT_SET]: [], + }, + setHedgerInfo: () => {}, + + fallbackChainId: 1, + setFallbackChainId: () => {}, + + appName: "", + setAppName: () => {}, + + muonData: {}, + setMuonData: () => {}, + + wagmiConfig: {} as Config, + setWagmiConfig: () => {}, +}; + +// Create the context with the default state +const StateContext = createContext(defaultState); + +export const StateProvider: React.FC<{ children: React.ReactNode }> = ({ + children, +}) => { + const [clientChain, setClientChain] = useState([]); + const [chains, setChains] = useState({}); + const [hedgerInfo, setHedgerInfo] = useState({ + [SupportedChainId.NOT_SET]: [], + }); + const [fallbackChainId, setFallbackChainId] = useState(1); + const [appName, setAppName] = useState(""); + const [muonData, setMuonData] = useState({}); + + const [wagmiConfig, setWagmiConfig] = useState({} as Config); + + const value = { + clientChain, + setClientChain, + + chains, + setChains, + + hedgerInfo, + setHedgerInfo, + + fallbackChainId, + setFallbackChainId, + + appName, + setAppName, + + muonData, + setMuonData, + + wagmiConfig, + setWagmiConfig, + }; + + return ( + {children} + ); +}; + +export const useStateContext = () => useContext(StateContext); diff --git a/packages/core/src/state/chains/actions.ts b/packages/core/src/state/chains/actions.ts deleted file mode 100644 index 330774c..0000000 --- a/packages/core/src/state/chains/actions.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as toolkitRaw from "@reduxjs/toolkit/dist/redux-toolkit.cjs.production.min.js"; -const { createAction } = ((toolkitRaw as any).default ?? - toolkitRaw) as typeof toolkitRaw; -import { ChainsState } from "./reducer"; - -export const setChains = createAction("chains/setChains"); diff --git a/packages/core/src/state/chains/hooks.ts b/packages/core/src/state/chains/hooks.ts index ad0ac8e..9e579ce 100644 --- a/packages/core/src/state/chains/hooks.ts +++ b/packages/core/src/state/chains/hooks.ts @@ -1,10 +1,11 @@ -import { useCallback, useMemo } from "react"; -import { AppState, useAppDispatch, useAppSelector } from "../declaration"; -import { setChains } from "./actions"; -import { ChainsState, ChainsType, MuonDataType } from "./reducer"; +import { useMemo } from "react"; import useActiveWagmi from "../../lib/hooks/useActiveWagmi"; import { useFEName } from "../user/hooks"; import { useHedgerInfo } from "../hedger/hooks"; +import { + MuonDataObject, + useStateContext, +} from "../../context/configSdkContext"; type InputObject = { [chainId: number]: { [name: string]: any }; @@ -41,102 +42,100 @@ export function useCollateralAddress(): { [chainId: number]: string; } { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "COLLATERAL_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useCollateralSymbol(): { [chainId: number]: string; } { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "COLLATERAL_SYMBOL" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useCollateralDecimal(): { [chainId: number]: number; } { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "COLLATERAL_DECIMALS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useDiamondAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "DIAMOND_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useMultiAccountAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "MULTI_ACCOUNT_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useTpSlWalletAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "TP_SL_WALLET_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useTpSlAvailable() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); + const { chains } = useStateContext(); const { chainId } = useActiveWagmi(); const { tpslUrl } = useHedgerInfo() || {}; const isEnableTpSl = chains?.[chainId ?? 1]?.[FE_NAME]?.TP_SL_WALLET_ADDRESS; @@ -147,100 +146,97 @@ export function useTpSlAvailable() { } export function useAllMultiAccountAddresses() { - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { return compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "MULTI_ACCOUNT_ADDRESS" ); - }, [chains, v3_ids]); + }, [chains, clientChain]); } export function useSignatureStoreAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "SIGNATURE_STORE_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function usePartyBWhitelistAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "PARTY_B_WHITELIST" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useMultiCallAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { const data = compatibleWithLegacyStructure( chains, - v3_ids, + clientChain, "MULTICALL3_ADDRESS" ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useUSDCAddress() { const FE_NAME = useFEName(); - const chains = useAppSelector((state: AppState) => state.chains.chains); - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); + const { chains, clientChain } = useStateContext(); return useMemo(() => { - const data = compatibleWithLegacyStructure(chains, v3_ids, "USDC_ADDRESS"); + const data = compatibleWithLegacyStructure( + chains, + clientChain, + "USDC_ADDRESS" + ); return getValuesByName(data, FE_NAME); - }, [FE_NAME, chains, v3_ids]); + }, [FE_NAME, chains, clientChain]); } export function useV3Ids(): number[] { - const v3_ids = useAppSelector((state: AppState) => state.chains.V3_CHAIN_IDS); - return v3_ids; + const { clientChain } = useStateContext(); + return clientChain; } export function useFallbackChainId() { - const fallbackChainId = useAppSelector( - (state: AppState) => state.chains.FALLBACK_CHAIN_ID - ); + const { fallbackChainId } = useStateContext(); return fallbackChainId; } export function useHedgerAddress() { - const hedgers = useAppSelector((state: AppState) => state.chains.hedgers); - return hedgers; + const { hedgerInfo } = useStateContext(); + return hedgerInfo; } export function useAppName() { - const appName = useAppSelector((state: AppState) => state.chains.appName); + const { appName } = useStateContext(); return appName; } export function useOrderHistorySubgraphAddress() { const { chainId } = useActiveWagmi(); const frontEndName = useFEName(); - const chainsData = useAppSelector((state: AppState) => state.chains.chains); + const { chains: chainsData } = useStateContext(); let address = ""; if (chainId && frontEndName && chainsData && chainsData[chainId]) { @@ -253,9 +249,7 @@ export function useOrderHistorySubgraphAddress() { } export function useGetUniqueElementInChains(element: string) { - const config: ChainsType = useAppSelector( - (state: AppState) => state.chains.chains - ); + const { chains: config } = useStateContext(); const addresses: { chainId: string; url: string }[] = []; @@ -278,7 +272,7 @@ export function useGetUniqueElementInChains(element: string) { export function useAnalyticsSubgraphAddress() { const { chainId } = useActiveWagmi(); const frontEndName = useFEName(); - const chainsData = useAppSelector((state: AppState) => state.chains.chains); + const { chains: chainsData } = useStateContext(); let address = ""; if (chainId && frontEndName && chainsData && chainsData[chainId]) { @@ -294,7 +288,7 @@ export function useAnalyticsSubgraphAddress() { export function useFundingRateSubgraphAddress() { const { chainId } = useActiveWagmi(); const frontEndName = useFEName(); - const chainsData = useAppSelector((state: AppState) => state.chains.chains); + const { chains: chainsData } = useStateContext(); let address = ""; if (chainId && frontEndName && chainsData && chainsData[chainId]) { @@ -307,50 +301,12 @@ export function useFundingRateSubgraphAddress() { return address; } -export function useMuonData(): { [chainId: number]: MuonDataType } { - const MuonData = useAppSelector((state: AppState) => state.chains.MuonData); - return MuonData; +export function useMuonData(): MuonDataObject { + const { muonData } = useStateContext(); + return muonData; } export function useWagmiConfig() { - const wagmiConfig = useAppSelector( - (state: AppState) => state.chains.wagmiConfig - ); + const { wagmiConfig } = useStateContext(); return wagmiConfig; } - -export function useSetSdkConfig(): ({ - chains, - V3_CHAIN_IDS, - FALLBACK_CHAIN_ID, - hedgers, - appName, - MuonData, - wagmiConfig, -}: ChainsState) => void { - const dispatch = useAppDispatch(); - return useCallback( - ({ - chains, - V3_CHAIN_IDS, - FALLBACK_CHAIN_ID, - hedgers, - appName, - MuonData, - wagmiConfig, - }: ChainsState) => { - dispatch( - setChains({ - chains, - V3_CHAIN_IDS, - FALLBACK_CHAIN_ID, - hedgers, - appName, - MuonData, - wagmiConfig, - }) - ); - }, - [dispatch] - ); -} diff --git a/packages/core/src/state/chains/index.ts b/packages/core/src/state/chains/index.ts index c83bccf..007f69d 100644 --- a/packages/core/src/state/chains/index.ts +++ b/packages/core/src/state/chains/index.ts @@ -1,2 +1 @@ -export * from "./actions"; export * from "./hooks"; diff --git a/packages/core/src/state/chains/reducer.ts b/packages/core/src/state/chains/reducer.ts deleted file mode 100644 index 6e4028f..0000000 --- a/packages/core/src/state/chains/reducer.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { Config } from "@wagmi/core"; -import * as toolkitRaw from "@reduxjs/toolkit/dist/redux-toolkit.cjs.production.min.js"; -const { createReducer } = ((toolkitRaw as any).default ?? - toolkitRaw) as typeof toolkitRaw; -import { setChains } from "./actions"; -import { HedgerInfoMap } from "../../types/hedger"; -import { SupportedChainId } from "../../constants/chains"; - -export interface ChainType { - readonly COLLATERAL_SYMBOL: string; - readonly COLLATERAL_DECIMALS: number; - readonly COLLATERAL_ADDRESS: string; - readonly DIAMOND_ADDRESS: string; - readonly MULTI_ACCOUNT_ADDRESS: string; - readonly PARTY_B_WHITELIST: string; - readonly SIGNATURE_STORE_ADDRESS: string; - readonly TP_SL_WALLET_ADDRESS: string; - readonly MULTICALL3_ADDRESS: string; - readonly USDC_ADDRESS: string; - readonly WRAPPED_NATIVE_ADDRESS: string; - readonly ANALYTICS_SUBGRAPH_ADDRESS: string; - readonly ORDER_HISTORY_SUBGRAPH_ADDRESS: string; - readonly FUNDING_RATE_SUBGRAPH_ADDRESS: string; -} - -export interface MuonDataType { - AppName: string; - Urls: string[]; -} - -export interface ChainsType { - [chainId: number]: { [name: string]: ChainType }; -} - -export interface ChainsState { - readonly chains: ChainsType; - readonly V3_CHAIN_IDS: number[]; - readonly FALLBACK_CHAIN_ID: number; - readonly hedgers: HedgerInfoMap; - readonly appName: string; - readonly MuonData: { [chainId: number]: MuonDataType }; - readonly wagmiConfig: Config; -} - -const initialState: ChainsState = { - chains: {}, - V3_CHAIN_IDS: [], - FALLBACK_CHAIN_ID: 1, - hedgers: { [SupportedChainId.NOT_SET]: [] }, - appName: "", - MuonData: {}, - wagmiConfig: {} as Config, -}; - -export default createReducer(initialState, (builder) => - builder.addCase(setChains, (state, { payload }) => { - const { - chains, - V3_CHAIN_IDS, - FALLBACK_CHAIN_ID, - hedgers, - appName, - MuonData, - wagmiConfig, - } = payload; - state.chains = chains; - state.V3_CHAIN_IDS = V3_CHAIN_IDS; - state.FALLBACK_CHAIN_ID = FALLBACK_CHAIN_ID; - state.hedgers = hedgers; - state.appName = appName; - state.MuonData = MuonData; - state.wagmiConfig = wagmiConfig; - }) -); diff --git a/packages/core/src/state/hedger/updater.ts b/packages/core/src/state/hedger/updater.ts index 9128aff..571b4f0 100644 --- a/packages/core/src/state/hedger/updater.ts +++ b/packages/core/src/state/hedger/updater.ts @@ -13,9 +13,9 @@ enum ReadyState { } import { useAppDispatch, AppThunkDispatch } from "../declaration"; import useIsWindowVisible from "../../lib/hooks/useIsWindowVisible"; -import { autoRefresh, retry } from "../../utils/retry"; +import { autoRefresh } from "../../utils/retry"; -import { ApiState, ConnectionStatus } from "../../types/api"; +import { ConnectionStatus } from "../../types/api"; import { MarketDataMap as PricesType, MarketData, @@ -26,12 +26,10 @@ import { useSetWebSocketStatus, useSetPrices, useHedgerInfo, - useMarketsStatus, useMarketNotionalCap, useSetDepth, useMarkets, useSetFundingRates, - useOpenInterestStatus, } from "./hooks"; import { getMarkets, @@ -85,7 +83,6 @@ function useFetchMarkets( ) { const appName = useAppName(); const { baseUrl } = hedger || {}; - const marketsStatus = useMarketsStatus(); const hedgerMarket = useCallback( (options?: { [x: string]: any }) => { @@ -109,16 +106,6 @@ function useFetchMarkets( controller.abort(); }; }, [hedgerMarket]); - - //if error occurs it will retry to fetch markets 5 times - useEffect(() => { - if (marketsStatus === ApiState.ERROR) - retry(hedgerMarket, { - n: 5, - minWait: 1000, - maxWait: 10000, - }); - }, [marketsStatus, hedgerMarket]); } function useFetchOpenInterest( @@ -127,7 +114,6 @@ function useFetchOpenInterest( ) { const appName = useAppName(); const { baseUrl } = hedger || {}; - const marketsStatus = useOpenInterestStatus(); const hedgerOpenInterest = useCallback( (options?: { [x: string]: any }) => { @@ -155,16 +141,6 @@ function useFetchOpenInterest( controller.abort(); }; }, [hedgerOpenInterest]); - - //if error occurs it will retry to fetch markets 5 times - useEffect(() => { - if (marketsStatus === ApiState.ERROR) - retry(hedgerOpenInterest, { - n: 5, - minWait: 1000, - maxWait: 10000, - }); - }, [marketsStatus, hedgerOpenInterest]); } function useFetchNotionalCap( @@ -172,7 +148,7 @@ function useFetchNotionalCap( thunkDispatch: AppThunkDispatch, activeMarket?: Market ) { - const { marketNotionalCap, marketNotionalCapStatus } = useMarketNotionalCap(); + const { marketNotionalCap } = useMarketNotionalCap(); const { baseUrl } = hedger || {}; const appName = useAppName(); @@ -193,17 +169,6 @@ function useFetchNotionalCap( useEffect(() => { if (activeMarket) return autoRefresh(notionalCaps, 60 * 60); }, [activeMarket, notionalCaps]); - - //if error occurs it will retry to fetch markets 5 times - useEffect(() => { - if (activeMarket && marketNotionalCapStatus === ApiState.ERROR) { - retry(notionalCaps, { - n: 5, - minWait: 3000, - maxWait: 10000, - }); - } - }, [marketNotionalCapStatus, activeMarket, notionalCaps]); } function usePriceWebSocket() { @@ -316,10 +281,6 @@ function useFundingRateWebSocket() { } }, [readyState]); - // useEffect(() => { - // updateWebSocketStatus(connectionStatus) - // }, [connectionStatus, updateWebSocketStatus]) - useEffect(() => { if (connectionStatus === ConnectionStatus.OPEN && activeMarket) { const json = { diff --git a/packages/core/src/state/reducer.ts b/packages/core/src/state/reducer.ts index a4c6835..ec2174e 100644 --- a/packages/core/src/state/reducer.ts +++ b/packages/core/src/state/reducer.ts @@ -8,11 +8,9 @@ import hedger from "./hedger/reducer"; import trade from "./trade/reducer"; import notifications from "./notifications/reducer"; import quotes from "./quotes/reducer"; -import chains from "./chains/reducer"; const reducer = combineReducers({ application, - chains, transactions, user, hedger,