Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions apps/Cloverfield/constants/chains/addresses.ts
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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,
Expand Down
3 changes: 2 additions & 1 deletion apps/Cloverfield/constants/chains/muon.ts
Original file line number Diff line number Diff line change
@@ -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,
Expand Down
15 changes: 9 additions & 6 deletions apps/Cloverfield/pages/_app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -60,12 +61,14 @@ export default function MyApp({ Component, pageProps }: AppProps) {
<ModalProvider backgroundComponent={ModalBackground}>
<Toaster position="bottom-center" />
<BlockNumberProvider wagmiConfig={wagmiConfig}>
<Popups />
<Updaters />
<ConfigSDKComponent />
<Layout>
<Component {...pageProps} />
</Layout>
<StateProvider>
<Popups />
<Updaters />
<ConfigSDKComponent />
<Layout>
<Component {...pageProps} />
</Layout>
</StateProvider>
</BlockNumberProvider>
</ModalProvider>
</ThemeProvider>
Expand Down
38 changes: 26 additions & 12 deletions apps/Cloverfield/pages/configSDK.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,41 @@
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";
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 <></>;
}
12 changes: 4 additions & 8 deletions packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand All @@ -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"
Expand Down
135 changes: 135 additions & 0 deletions packages/core/src/context/configSdkContext.tsx
Original file line number Diff line number Diff line change
@@ -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<State>(defaultState);

export const StateProvider: React.FC<{ children: React.ReactNode }> = ({
children,
}) => {
const [clientChain, setClientChain] = useState<SupportedChainId[]>([]);
const [chains, setChains] = useState<ChainsType>({});
const [hedgerInfo, setHedgerInfo] = useState<HedgerInfoMap>({
[SupportedChainId.NOT_SET]: [],
});
const [fallbackChainId, setFallbackChainId] = useState<number>(1);
const [appName, setAppName] = useState<string>("");
const [muonData, setMuonData] = useState<MuonDataObject>({});

const [wagmiConfig, setWagmiConfig] = useState<Config>({} as Config);

const value = {
clientChain,
setClientChain,

chains,
setChains,

hedgerInfo,
setHedgerInfo,

fallbackChainId,
setFallbackChainId,

appName,
setAppName,

muonData,
setMuonData,

wagmiConfig,
setWagmiConfig,
};

return (
<StateContext.Provider value={value}>{children}</StateContext.Provider>
);
};

export const useStateContext = () => useContext(StateContext);
6 changes: 0 additions & 6 deletions packages/core/src/state/chains/actions.ts

This file was deleted.

Loading